xref: /freebsd/contrib/file/magic/Magdir/r (revision e949ce9dc0e6fff26e83904f1008b76d36ba0a37)
1*e949ce9dSXin LI
2*e949ce9dSXin LI#------------------------------------------------------------------------------
3*e949ce9dSXin LI# $File: r,v 1.1 2025/02/10 17:48:42 christos Exp $
4*e949ce9dSXin LI#    file(1) magic for R's RDS and RData file formats
5*e949ce9dSXin LI#    Copyright (C) 2025 Gert Hulselmans <hulselmansgert@gmail.com>
6*e949ce9dSXin LI#
7*e949ce9dSXin LI#    URLS:
8*e949ce9dSXin LI#      https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Serialization-Formats
9*e949ce9dSXin LI#      https://rdata.readthedocs.io/en/latest/_modules/rdata/parser/_parser.html
10*e949ce9dSXin LI#
11*e949ce9dSXin LI#    Example files:
12*e949ce9dSXin LI#      https://github.com/vnmabus/rdata/tree/develop/rdata/tests/data
13*e949ce9dSXin LI#
14*e949ce9dSXin LI###############################################################################
15*e949ce9dSXin LI
16*e949ce9dSXin LI
17*e949ce9dSXin LI###############################################################################
18*e949ce9dSXin LI# RDS format
19*e949ce9dSXin LI###############################################################################
20*e949ce9dSXin LI
21*e949ce9dSXin LI0	name	RDS
22*e949ce9dSXin LI# Check for RDS ASCII formats.
23*e949ce9dSXin LI>0	string	A\n2\n	R RDS (ASCII format v2)
24*e949ce9dSXin LI>0	string	A\n3\n	R RDS (ASCII format v3)
25*e949ce9dSXin LI>0	string	A\r\n2\r\n	R RDS (ASCII CRLF format v2)
26*e949ce9dSXin LI>0	string	A\r\n3\r\n	R RDS (ASCII CRLF format v3)
27*e949ce9dSXin LI# Check for RDS binary formats with native word order.
28*e949ce9dSXin LI>0	string	B\n\0\0\0	R RDS (Native (big-endian) word order format
29*e949ce9dSXin LI>>0	use RDS_binary_version_info
30*e949ce9dSXin LI>0	string	B\n\2\0\0	R RDS (Native (little-endian) word order format
31*e949ce9dSXin LI>>0	use ^RDS_binary_version_info
32*e949ce9dSXin LI>0	string	B\n\3\0\0	R RDS (Native (little-endian) word order format
33*e949ce9dSXin LI>>0	use ^RDS_binary_version_info
34*e949ce9dSXin LI# Check for RDS XDR binary save format.
35*e949ce9dSXin LI>0	string	X\n\0\0\0	R RDS (XDR binary save format
36*e949ce9dSXin LI>>0	use RDS_binary_version_info
37*e949ce9dSXin LI
38*e949ce9dSXin LI
39*e949ce9dSXin LI# Parse version numbers from RDS if it was one of the binary versions.
40*e949ce9dSXin LI0	name	RDS_binary_version_info
41*e949ce9dSXin LI>2	belong	>-1	v%d)
42*e949ce9dSXin LI>6	beshort	>-1	\b, written by R v%d.
43*e949ce9dSXin LI>8	byte	>-1	\b%d.
44*e949ce9dSXin LI>9	byte	>-1	\b%d
45*e949ce9dSXin LI>10	beshort	>-1	\b, readable from R v%d.
46*e949ce9dSXin LI>12	byte	>-1	\b%d.
47*e949ce9dSXin LI>13	byte	>-1	\b%d
48*e949ce9dSXin LI>2	belong	>2
49*e949ce9dSXin LI>>14	pstring/L	x	\b, %s encoded
50*e949ce9dSXin LI
51*e949ce9dSXin LI
52*e949ce9dSXin LI# Check if file is one of the RDS ASCII formats.
53*e949ce9dSXin LI0	string	A
54*e949ce9dSXin LI>0	use RDS	not_printed
55*e949ce9dSXin LI!:ext	rds
56*e949ce9dSXin LI
57*e949ce9dSXin LI# Check if file is RDS binary native format.
58*e949ce9dSXin LI0	string	B
59*e949ce9dSXin LI>0	use RDS	not_printed
60*e949ce9dSXin LI!:ext	rds
61*e949ce9dSXin LI
62*e949ce9dSXin LI# Check if file is RDS XDR binary save format.
63*e949ce9dSXin LI0	string	X
64*e949ce9dSXin LI>0	use RDS	not_printed
65*e949ce9dSXin LI!:ext	rds
66*e949ce9dSXin LI
67*e949ce9dSXin LI
68*e949ce9dSXin LI###############################################################################
69*e949ce9dSXin LI# RData file formats: magic bytes followed by RDS container.
70*e949ce9dSXin LI###############################################################################
71*e949ce9dSXin LI
72*e949ce9dSXin LI0	string	RDA2\n	R RData version 2 (ASCII),
73*e949ce9dSXin LI!:ext	rda/rdata
74*e949ce9dSXin LI>5	use	RDS
75*e949ce9dSXin LI
76*e949ce9dSXin LI0	string	RDA3\n	R RData version 3 (ASCII),
77*e949ce9dSXin LI!:ext	rda/rdata
78*e949ce9dSXin LI>5	use	RDS
79*e949ce9dSXin LI
80*e949ce9dSXin LI0	string	RDX2\n	R RData version 2 (binary),
81*e949ce9dSXin LI!:ext	rda/rdata
82*e949ce9dSXin LI>5	use	RDS
83*e949ce9dSXin LI
84*e949ce9dSXin LI0	string	RDX3\n	R RData version 3 (binary),
85*e949ce9dSXin LI!:ext	rda/rdata
86*e949ce9dSXin LI>5	use	RDS
87