xref: /dflybsd-src/contrib/file/magic/Magdir/c-lang (revision 7b80531f545c7d3c51c1660130c71d01f6bccbe0)
1327e51cbSPeter Avalos#------------------------------------------------------------------------------
2*614728caSSascha Wildner# $File: c-lang,v 1.30 2021/08/16 10:17:05 christos Exp $
39f86ab30SPeter Avalos# c-lang:  file(1) magic for C and related languages programs
4327e51cbSPeter Avalos#
5c30bd091SSascha Wildner# The strength is to beat standard HTML
6327e51cbSPeter Avalos
79f86ab30SPeter Avalos# BCPL
89f86ab30SPeter Avalos0	search/8192	"libhdr"	BCPL source text
99f86ab30SPeter Avalos!:mime	text/x-bcpl
109f86ab30SPeter Avalos0	search/8192	"LIBHDR"	BCPL source text
119f86ab30SPeter Avalos!:mime	text/x-bcpl
1279343712SPeter Avalos
139f86ab30SPeter Avalos# C
146fca56fbSSascha Wildner# Check for class if include is found, otherwise class is beaten by include because of lowered strength
156fca56fbSSascha Wildner0	search/8192	#include
166fca56fbSSascha Wildner>0	regex	\^#include			C
176fca56fbSSascha Wildner>>0	regex	\^class[[:space:]]+
186fca56fbSSascha Wildner>>>&0	regex 	\\{[\.\*]\\}(;)?$			\b++
196fca56fbSSascha Wildner>>&0	clear	x				source text
20c30bd091SSascha Wildner!:strength + 13
219f86ab30SPeter Avalos!:mime	text/x-c
226fca56fbSSascha Wildner0	search/8192	pragma
236fca56fbSSascha Wildner>0	regex	\^#[[:space:]]*pragma	C source text
249f86ab30SPeter Avalos!:mime	text/x-c
256fca56fbSSascha Wildner0	search/8192	endif
266fca56fbSSascha Wildner>0	regex	\^#[[:space:]]*(if\|ifn)def
276fca56fbSSascha Wildner>>&0	regex	\^#[[:space:]]*endif$	C source text
289f86ab30SPeter Avalos!:mime	text/x-c
296fca56fbSSascha Wildner0	search/8192	define
306fca56fbSSascha Wildner>0	regex	\^#[[:space:]]*(if\|ifn)def
316fca56fbSSascha Wildner>>&0	regex	\^#[[:space:]]*define	C source text
329f86ab30SPeter Avalos!:mime	text/x-c
336fca56fbSSascha Wildner0	search/8192	char
346fca56fbSSascha Wildner>0	regex	\^[[:space:]]*char(\ \\*|\\*)(.+)(=.*)?;[[:space:]]*$			C source text
359f86ab30SPeter Avalos!:mime	text/x-c
366fca56fbSSascha Wildner0	search/8192	double
376fca56fbSSascha Wildner>0	regex	\^[[:space:]]*double(\ \\*|\\*)(.+)(=.*)?;[[:space:]]*$			C source text
389f86ab30SPeter Avalos!:mime	text/x-c
396fca56fbSSascha Wildner0	search/8192	extern
406fca56fbSSascha Wildner>0	regex	\^[[:space:]]*extern[[:space:]]+		C source text
419f86ab30SPeter Avalos!:mime	text/x-c
426fca56fbSSascha Wildner0	search/8192	float
436fca56fbSSascha Wildner>0	regex	\^[[:space:]]*float(\ \\*|\\*)(.+)(=.*)?;[[:space:]]*$			C source text
44c30bd091SSascha Wildner!:mime	text/x-c
456fca56fbSSascha Wildner0	search/8192	struct
466fca56fbSSascha Wildner>0	regex	\^struct[[:space:]]+		C source text
47c30bd091SSascha Wildner!:mime	text/x-c
486fca56fbSSascha Wildner0	search/8192	union
496fca56fbSSascha Wildner>0	regex	\^union[[:space:]]+		C source text
50c30bd091SSascha Wildner!:mime	text/x-c
51c30bd091SSascha Wildner0	search/8192	main(
52*614728caSSascha Wildner>&0	search/64	String			Java source text
53*614728caSSascha Wildner!:mime	text/x-java
54*614728caSSascha Wildner>&0	default		x
55*614728caSSascha Wildner>>&0 regex	\\)[[:space:]]*\\{		C source text
569f86ab30SPeter Avalos!:mime	text/x-c
57327e51cbSPeter Avalos
589f86ab30SPeter Avalos# C++
599f86ab30SPeter Avalos# The strength of these rules is increased so they beat the C rules above
606fca56fbSSascha Wildner0	search/8192	namespace
616fca56fbSSascha Wildner>0	regex	\^namespace[[:space:]]+[_[:alpha:]]{1,30}[[:space:]]*\\{	C++ source text
62c30bd091SSascha Wildner!:strength + 30
639f86ab30SPeter Avalos!:mime	text/x-c++
64c30bd091SSascha Wildner# using namespace [namespace] or using std::[lib]
656fca56fbSSascha Wildner0	search/8192	using
666fca56fbSSascha Wildner>0	regex	\^using[[:space:]]+(namespace\ )?std(::)?[[:alpha:]]*[[:space:]]*;		C++ source text
67c30bd091SSascha Wildner!:strength + 30
689f86ab30SPeter Avalos!:mime	text/x-c++
696fca56fbSSascha Wildner0	search/8192	template
706fca56fbSSascha Wildner>0	regex	\^[[:space:]]*template[[:space:]]*<.*>[[:space:]]*$	C++ source text
71c30bd091SSascha Wildner!:strength + 30
729f86ab30SPeter Avalos!:mime	text/x-c++
736fca56fbSSascha Wildner0	search/8192	virtual
746fca56fbSSascha Wildner>0	regex	\^[[:space:]]*virtual[[:space:]]+.*[};][[:space:]]*$		C++ source text
75c30bd091SSascha Wildner!:strength + 30
769f86ab30SPeter Avalos!:mime	text/x-c++
77c30bd091SSascha Wildner# But class alone is reduced to avoid beating php (Jens Schleusener)
786fca56fbSSascha Wildner0	search/8192	class
796fca56fbSSascha Wildner>0	regex	\^[[:space:]]*class[[:space:]]+[[:digit:][:alpha:]:_]+[[:space:]]*\\{(.*[\n]*)*\\}(;)?$		C++ source text
80c30bd091SSascha Wildner!:strength + 13
819f86ab30SPeter Avalos!:mime	text/x-c++
826fca56fbSSascha Wildner0	search/8192	public
836fca56fbSSascha Wildner>0	regex	\^[[:space:]]*public:		C++ source text
84c30bd091SSascha Wildner!:strength + 30
85c30bd091SSascha Wildner!:mime	text/x-c++
866fca56fbSSascha Wildner0	search/8192	private
876fca56fbSSascha Wildner>0	regex	\^[[:space:]]*private:		C++ source text
88c30bd091SSascha Wildner!:strength + 30
89c30bd091SSascha Wildner!:mime	text/x-c++
906fca56fbSSascha Wildner0	search/8192	protected
916fca56fbSSascha Wildner>0	regex	\^[[:space:]]*protected:		C++ source text
92c30bd091SSascha Wildner!:strength + 30
93c30bd091SSascha Wildner!:mime	text/x-c++
94c30bd091SSascha Wildner
95c30bd091SSascha Wildner# Objective-C
966fca56fbSSascha Wildner0	search/8192	#import
976fca56fbSSascha Wildner>0	regex	\^#import			Objective-C source text
98c30bd091SSascha Wildner!:strength + 25
99c30bd091SSascha Wildner!:mime	text/x-objective-c
100327e51cbSPeter Avalos
101327e51cbSPeter Avalos# From: Mikhail Teterin <mi@aldan.algebra.com>
102327e51cbSPeter Avalos0	string		cscope		cscope reference data
103327e51cbSPeter Avalos>7	string		x		version %.2s
104327e51cbSPeter Avalos# We skip the path here, because it is often long (so file will
105327e51cbSPeter Avalos# truncate it) and mostly redundant.
10682c5fa3eSPeter Avalos# The inverted index functionality was added some time between
107327e51cbSPeter Avalos# versions 11 and 15, so look for -q if version is above 14:
108327e51cbSPeter Avalos>7	string		>14
10979343712SPeter Avalos>>10	search/100	\ -q\ 		with inverted index
11079343712SPeter Avalos>10	search/100	\ -c\ 		text (non-compressed)
111