[File] [PATCH luajit] Add Tarantool snap, xlog, run, index and vylog magic

Christos Zoulas christos at zoulas.com
Sat Oct 10 11:48:48 EDT 2026


Committed, thanks!

christos

> On Oct 8, 2026, at 7:10 AM, Sergey Bronnikov <sergeyb at tarantool.org> wrote:
> 
> Christos, could you take a look at the patch?
> 
> On 9/30/26 09:24, Sergey Bronnikov wrote:
> 
>> From: Sergey Bronnikov <sergeyb at tarantool.org> <mailto:sergeyb at tarantool.org>
>> 
>> An updated patch with enhanced checks for Tarantool formats.
>> 
>> ---
>>  magic/Magdir/tarantool         |  40 +++++++++++++++++++++++++++++++++
>>  magic/Makefile.am              |   1 +
>>  tests/Makefile.am              |  12 ++++++++++
>>  tests/tarantool-index.result   |   1 +
>>  tests/tarantool-index.testfile | Bin 0 -> 227 bytes
>>  tests/tarantool-not.result     |   1 +
>>  tests/tarantool-not.testfile   |   3 +++
>>  tests/tarantool-run.result     |   1 +
>>  tests/tarantool-run.testfile   | Bin 0 -> 133 bytes
>>  tests/tarantool-snap.result    |   1 +
>>  tests/tarantool-snap.testfile  | Bin 0 -> 162 bytes
>>  tests/tarantool-vylog.result   |   1 +
>>  tests/tarantool-vylog.testfile | Bin 0 -> 231 bytes
>>  tests/tarantool-xlog.result    |   1 +
>>  tests/tarantool-xlog.testfile  |   7 ++++++
>>  15 files changed, 69 insertions(+)
>>  create mode 100644 magic/Magdir/tarantool
>>  create mode 100644 tests/tarantool-index.result
>>  create mode 100644 tests/tarantool-index.testfile
>>  create mode 100644 tests/tarantool-not.result
>>  create mode 100644 tests/tarantool-not.testfile
>>  create mode 100644 tests/tarantool-run.result
>>  create mode 100644 tests/tarantool-run.testfile
>>  create mode 100644 tests/tarantool-snap.result
>>  create mode 100644 tests/tarantool-snap.testfile
>>  create mode 100644 tests/tarantool-vylog.result
>>  create mode 100644 tests/tarantool-vylog.testfile
>>  create mode 100644 tests/tarantool-xlog.result
>>  create mode 100644 tests/tarantool-xlog.testfile
>> 
>> diff --git a/magic/Magdir/tarantool b/magic/Magdir/tarantool
>> new file mode 100644
>> index 00000000..82593f2e
>> --- /dev/null
>> +++ b/magic/Magdir/tarantool
>> @@ -0,0 +1,40 @@
>> +#------------------------------------------------------------------------------
>> +# $File: tarantool,v 1.2 2026/09/29 00:00:00 christos Exp $
>> +# tarantool:  file(1) magic for Tarantool database files
>> +#
>> +# Tarantool (https://www.tarantool.io/) has its own storage formats.
>> +# Every file starts with a textual header:
>> +#
>> +#	<type>\n
>> +#	<format version>\n
>> +#	Version: <tarantool version>\n
>> +#	Instance: <uuid>\n
>> +#	[VClock: {...}\n]
>> +#	[PrevVClock: {...}\n]
>> +#	\n
>> +#
>> +# followed by binary data.  The type is one of SNAP (snapshot),
>> +# XLOG (write-ahead log), RUN (vinyl data file), INDEX (vinyl page
>> +# index) or VYLOG (vinyl log).
>> +#
>> +# A bare type line is not specific enough: SNAP, RUN and the other
>> +# words are common, so every entry also matches the mandatory parts
>> +# of the header that follow it: the format version, the "Version:"
>> +# line and the "Instance:" (or "Server:" in the old format) line
>> +# with the instance UUID.  The "bt" flags make the test run for both
>> +# binary files (real Tarantool data) and header-only text files.
>> +
>> +0	regex/bt/512	SNAP\n[0-9]+\\.[0-9]+\nVersion:\ [^\n]+\n(Instance|Server):\ [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n	Tarantool snapshot
>> +>5	regex/16	[0-9]+\\.[0-9]+		\b, format version %s
>> +
>> +0	regex/bt/512	XLOG\n[0-9]+\\.[0-9]+\nVersion:\ [^\n]+\n(Instance|Server):\ [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n	Tarantool write-ahead log
>> +>5	regex/16	[0-9]+\\.[0-9]+		\b, format version %s
>> +
>> +0	regex/bt/512	RUN\n[0-9]+\\.[0-9]+\nVersion:\ [^\n]+\n(Instance|Server):\ [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n	Tarantool vinyl run
>> +>4	regex/16	[0-9]+\\.[0-9]+		\b, format version %s
>> +
>> +0	regex/bt/512	INDEX\n[0-9]+\\.[0-9]+\nVersion:\ [^\n]+\n(Instance|Server):\ [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n	Tarantool vinyl index
>> +>6	regex/16	[0-9]+\\.[0-9]+		\b, format version %s
>> +
>> +0	regex/bt/512	VYLOG\n[0-9]+\\.[0-9]+\nVersion:\ [^\n]+\n(Instance|Server):\ [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\n	Tarantool vinyl log
>> +>6	regex/16	[0-9]+\\.[0-9]+		\b, format version %s
>> diff --git a/magic/Makefile.am b/magic/Makefile.am
>> index ff116da2..16efc5a0 100644
>> --- a/magic/Makefile.am
>> +++ b/magic/Makefile.am
>> @@ -318,6 +318,7 @@ $(MAGIC_FRAGMENT_DIR)/symbos \
>>  $(MAGIC_FRAGMENT_DIR)/sysex \
>>  $(MAGIC_FRAGMENT_DIR)/sysstat \
>>  $(MAGIC_FRAGMENT_DIR)/tapebackup \
>> +$(MAGIC_FRAGMENT_DIR)/tarantool \
>>  $(MAGIC_FRAGMENT_DIR)/tcl \
>>  $(MAGIC_FRAGMENT_DIR)/teapot \
>>  $(MAGIC_FRAGMENT_DIR)/terminfo \
>> diff --git a/tests/Makefile.am b/tests/Makefile.am
>> index 32b35c1c..034c63dd 100644
>> --- a/tests/Makefile.am
>> +++ b/tests/Makefile.am
>> @@ -155,6 +155,18 @@ rpm-v3.0-src.testfile \
>>  searchbug.magic \
>>  searchbug.result \
>>  searchbug.testfile \
>> +tarantool-index.result \
>> +tarantool-index.testfile \
>> +tarantool-not.result \
>> +tarantool-not.testfile \
>> +tarantool-run.result \
>> +tarantool-run.testfile \
>> +tarantool-snap.result \
>> +tarantool-snap.testfile \
>> +tarantool-vylog.result \
>> +tarantool-vylog.testfile \
>> +tarantool-xlog.result \
>> +tarantool-xlog.testfile \
>>  uf2.result \
>>  uf2.testfile \
>>  utf16xmlsvg.testfile \
>> diff --git a/tests/tarantool-index.result b/tests/tarantool-index.result
>> new file mode 100644
>> index 00000000..fff78b12
>> --- /dev/null
>> +++ b/tests/tarantool-index.result
>> @@ -0,0 +1 @@
>> +Tarantool vinyl index, format version 0.13
>> diff --git a/tests/tarantool-index.testfile b/tests/tarantool-index.testfile
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..9e9ecfbc472cf43e6533aadb6049e52a930863c3
>> GIT binary patch
>> literal 227
>> zcmebDb8(H}GSD+L<_b$KD$dN$vr;hDv(PitHPB5 at H8U|zv#>}sO*Kg7^2{qPNz6-5
>> zwNgkivox_tvPjW2OifPIH8C|b(@io-P0=+ at G)y%#O-o8kOfux+y1I*dbrHk4l>tYD
>> zmoq>>BST6%<3vWLiHyw5EX=HooD(NAvL11ONWw at C5CbZv0Agccs3a3if}@3rk(q&&
>> cfs>(;A+?P$f=QEwk#!;?vltuqRe`l{0V5PD4*&oF
>> 
>> literal 0
>> HcmV?d00001
>> 
>> diff --git a/tests/tarantool-not.result b/tests/tarantool-not.result
>> new file mode 100644
>> index 00000000..6f505ff4
>> --- /dev/null
>> +++ b/tests/tarantool-not.result
>> @@ -0,0 +1 @@
>> +ASCII text
>> diff --git a/tests/tarantool-not.testfile b/tests/tarantool-not.testfile
>> new file mode 100644
>> index 00000000..573eac3a
>> --- /dev/null
>> +++ b/tests/tarantool-not.testfile
>> @@ -0,0 +1,3 @@
>> +SNAP
>> +0.13
>> +Version: not a tarantool file
>> diff --git a/tests/tarantool-run.result b/tests/tarantool-run.result
>> new file mode 100644
>> index 00000000..410d8592
>> --- /dev/null
>> +++ b/tests/tarantool-run.result
>> @@ -0,0 +1 @@
>> +Tarantool vinyl run, format version 0.13
>> diff --git a/tests/tarantool-run.testfile b/tests/tarantool-run.testfile
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..4435ee46d668d0dbb6e96fcea426a8d3525af4a2
>> GIT binary patch
>> literal 133
>> zcmWFv_2V+oGc at K3OD!tS%+Iq at FxIosGt@QEO;0s5F;26vNHk3~Napg)D=taQOHQ>?
>> zNHMcCu}HE=(KSp>PSiCqH8j&rGD%I*HBK~4H8f32N=r;K<l?%zi+i;g!?`0eenQI`
>> fAfSnXiJ7 at kaT4Rg#72g+M#dv7An~gLYu^F at lb|HE
>> 
>> literal 0
>> HcmV?d00001
>> 
>> diff --git a/tests/tarantool-snap.result b/tests/tarantool-snap.result
>> new file mode 100644
>> index 00000000..555881dc
>> --- /dev/null
>> +++ b/tests/tarantool-snap.result
>> @@ -0,0 +1 @@
>> +Tarantool snapshot, format version 0.13
>> diff --git a/tests/tarantool-snap.testfile b/tests/tarantool-snap.testfile
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..c4cc1537596418eb1aebc3dfa71112fef266275d
>> GIT binary patch
>> literal 162
>> zcmWIca}3}z&@(jV3QH|2&dkrVQZUxD&@<FE&`nP at GciuHut+pbHAv?2%quQQ%u7zS
>> zQb;s6GD}V~O4c<?N=(u<F)=jOwKPsj(={_PH#Sa6GD=N0u;2=F&dE>Cwo<6B<>I=!
>> zi+i;?!?_37#NRAufPfYTCMHH^MwZi#x7IZ)pAl?o5;)5!p*a0469ePIlBKz+xg`}0
>> L4HK>ktbGdrq9if1
>> 
>> literal 0
>> HcmV?d00001
>> 
>> diff --git a/tests/tarantool-vylog.result b/tests/tarantool-vylog.result
>> new file mode 100644
>> index 00000000..f3f9697a
>> --- /dev/null
>> +++ b/tests/tarantool-vylog.result
>> @@ -0,0 +1 @@
>> +Tarantool vinyl log, format version 0.13
>> diff --git a/tests/tarantool-vylog.testfile b/tests/tarantool-vylog.testfile
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..b76d5bf72b85e43da0e37fef0875f9ff97c0d0e9
>> GIT binary patch
>> literal 231
>> zcmWHG^znD+GSD+L<_b$KD$dN$vr;hDv(PitHPB5 at H8U|zv#>}sO*Kg7^2{qPNz6-5
>> zwNgkivox_tvPjW2OifPIH8C|b(@io-P0=+ at G)y%#O-o8kOfuvObI!?6&bCshHndVO
>> zuI1vox{G^tI>R~9j_3Bv86cpMfvHh(5<@H7StbVdiOoyXGE;L>7?zY&7No8y%`47K
>> z&r3~NRh(Z`5}#j`l3KJlu{fEBiI<6!8KRN3nTd&$S%4A3V`^lCvN)O<8JU<kpsKhV
>> Jt_rMu3jl3ILht|p
>> 
>> literal 0
>> HcmV?d00001
>> 
>> diff --git a/tests/tarantool-xlog.result b/tests/tarantool-xlog.result
>> new file mode 100644
>> index 00000000..6afdeb6d
>> --- /dev/null
>> +++ b/tests/tarantool-xlog.result
>> @@ -0,0 +1 @@
>> +Tarantool write-ahead log, format version 0.13
>> diff --git a/tests/tarantool-xlog.testfile b/tests/tarantool-xlog.testfile
>> new file mode 100644
>> index 00000000..2a54a86c
>> --- /dev/null
>> +++ b/tests/tarantool-xlog.testfile
>> @@ -0,0 +1,7 @@
>> +XLOG
>> +0.13
>> +Version: 3.8.1-0-ge643f88a5e0c
>> +Instance: d6948b8d-1eca-4516-b4ed-3a1e15fbfab1
>> +VClock: {1: 3}
>> +
>> +���
>> \ No newline at end of file
> <sanitizer.log>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.astron.com/pipermail/file/attachments/20261010/72cd4dcd/attachment.htm>


More information about the File mailing list