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