#------------------------------------------------------------------------------
# $File: sereal,v 1.3 2015/02/05 19:14:45 christos Exp $
# sereal: file(1) magic the Sereal binary serialization format
#
# From: Ævar Arnfjörð Bjarmason <[email protected]>
#
# See the specification of the format at
# https://github.com/Sereal/Sereal/blob/master/sereal_spec.pod#document-header-format
#
# I'd have liked to do the byte&0xF0 matching against 0, 1, 2 ... by
# doing (byte&0xF0)>>4 here, but unfortunately that's not
# supported. So when we print out a message about an unknown format
# we'll print out e.g. 0x30 instead of the more human-readable
# 0x30>>4.
#
# See https://github.com/Sereal/Sereal/commit/35372ae01d in the
# Sereal.git repository for test Sereal data.
0       name            sereal
>4      byte&0x0F       x               (version %d,
>4      byte&0xF0       0x00            uncompressed)
>4      byte&0xF0       0x10            compressed with non-incremental Snappy)
>4      byte&0xF0       0x20            compressed with incremental Snappy)
>4      byte&0xF0       >0x20           unknown subformat, flag: %d>>4)

0       string/b        \=srl           Sereal data packet
!:mime application/sereal
>&0     use             sereal
0       string/b        \=\xF3rl        Sereal data packet
!:mime application/sereal
>&0     use             sereal
0       string/b        \=\xC3\xB3rl    Sereal data packet, UTF-8 encoded
!:mime application/sereal
>&0     use             sereal