19d66358aSMasatake YAMATO#!/bin/sh 293c4b724Sviccuad# 393c4b724Sviccuad# Copyright (C) 2014 Masatake YAMATO 493c4b724Sviccuad# 593c4b724Sviccuad# This program is free software; you can redistribute it and/or modify 693c4b724Sviccuad# it under the terms of the GNU General Public License as published by 77963e4b9Sviccuad# the Free Software Foundation; either version 2 of the License, or 893c4b724Sviccuad# (at your option) any later version. 993c4b724Sviccuad# 1093c4b724Sviccuad# This program is distributed in the hope that it will be useful, 1193c4b724Sviccuad# but WITHOUT ANY WARRANTY; without even the implied warranty of 1293c4b724Sviccuad# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1393c4b724Sviccuad# GNU General Public License for more details. 1493c4b724Sviccuad# 1593c4b724Sviccuad# You should have received a copy of the GNU General Public License 1693c4b724Sviccuad# along with this program. If not, see <http://www.gnu.org/licenses/>. 179d66358aSMasatake YAMATO 187be80f6aSMasatake YAMATOCTAGS=./ctags 197be80f6aSMasatake YAMATO 207f816018SMasatake YAMATOline() 217f816018SMasatake YAMATO{ 227f816018SMasatake YAMATO local i 237f816018SMasatake YAMATO for i in $(seq 72); do 247f816018SMasatake YAMATO echo -n -e - 257f816018SMasatake YAMATO done 267f816018SMasatake YAMATO echo 277f816018SMasatake YAMATO} 287f816018SMasatake YAMATO 297f816018SMasatake YAMATOheader() 307f816018SMasatake YAMATO{ 317f816018SMasatake YAMATO echo 327f816018SMasatake YAMATO echo "$1" 337f816018SMasatake YAMATO line 347f816018SMasatake YAMATO 357f816018SMasatake YAMATO} 367f816018SMasatake YAMATO 379d66358aSMasatake YAMATOcheck_include_general_h_first() 389d66358aSMasatake YAMATO{ 399d66358aSMasatake YAMATO local f 409d66358aSMasatake YAMATO local l 419d66358aSMasatake YAMATO local i=0 429d66358aSMasatake YAMATO 437f816018SMasatake YAMATO header "Check whether general.h is included first: $1" 44b6ba92a3SMasatake YAMATO # Added -maxdepth 1 to skip parsers/cxx 45b6ba92a3SMasatake YAMATO for f in $(find $1 -maxdepth 1 -name '*.c'); do 469d66358aSMasatake YAMATO if grep -a -q -e '^#[[:space:]]*include' $f; then 479d66358aSMasatake YAMATO l=$() 489d66358aSMasatake YAMATO if ! ( grep -a -e '^#[[:space:]]*include' $f | head -1 | grep -q "general.h" ); then 49e565e930SMasatake YAMATO i=$(expr $i + 1) 509d66358aSMasatake YAMATO echo "$f: general.h should be included FIRST" 2>&1 519d66358aSMasatake YAMATO fi 529d66358aSMasatake YAMATO fi 539d66358aSMasatake YAMATO done 549d66358aSMasatake YAMATO 559d66358aSMasatake YAMATO return $i 569d66358aSMasatake YAMATO} 579d66358aSMasatake YAMATO 587be80f6aSMasatake YAMATOcheck_name_cpp_macro() 597be80f6aSMasatake YAMATO{ 607be80f6aSMasatake YAMATO local dir=$1 617be80f6aSMasatake YAMATO local r=0 627be80f6aSMasatake YAMATO local n 637be80f6aSMasatake YAMATO 647be80f6aSMasatake YAMATO header "Check whether '_' is not used as ctags own macro name" 65dcda2353SMasatake YAMATO for f in $(find $dir -name '*.[ch]' | grep -v portable-dirent_p.h); do 667be80f6aSMasatake YAMATO if ${CTAGS} --language-force=C -x --_xformat='%F:%N' --kinds-C=d -o - $f | grep -q '.*:_.*H'; then 677be80f6aSMasatake YAMATO for n in $(${CTAGS} --language-force=C -x --_xformat='%N' --kinds-C=d -o - $f | grep '^_.*H'); do 687be80f6aSMasatake YAMATO echo "#" $n 697be80f6aSMasatake YAMATO echo sed -i \""s|$n|CTAGS_$(echo $dir | tr a-z A-Z)_${n#_}|g\"" $f 707be80f6aSMasatake YAMATO done 717be80f6aSMasatake YAMATO r=1 727be80f6aSMasatake YAMATO fi 737be80f6aSMasatake YAMATO done 747be80f6aSMasatake YAMATO return $r 757be80f6aSMasatake YAMATO} 769d66358aSMasatake YAMATO 77e7b739e0SMasatake YAMATOcheck_vStringCatS_usage() 78e7b739e0SMasatake YAMATO{ 79e7b739e0SMasatake YAMATO local i=0 80e7b739e0SMasatake YAMATO 81e7b739e0SMasatake YAMATO header "Check wrong vStringCatS usage(use vStringPut instead): $1" 82e7b739e0SMasatake YAMATO for f in $(find $1 -name '*.c'); do 83e7b739e0SMasatake YAMATO if grep -H -a -e 'vStringCatS[[:space:]]*(.*,[[:space:]]*"."[[:space:]]*)' $f; then 84e7b739e0SMasatake YAMATO i=$(expr $i + 1) 85e7b739e0SMasatake YAMATO elif grep -H -a -e 'vStringCatS[[:space:]]*(.*,[[:space:]]*"\\."[[:space:]]*)' $f; then 86e7b739e0SMasatake YAMATO i=$(expr $i + 1) 87e7b739e0SMasatake YAMATO fi 88e7b739e0SMasatake YAMATO done 89e7b739e0SMasatake YAMATO 90e7b739e0SMasatake YAMATO return $i 91e7b739e0SMasatake YAMATO} 92f56362bfSMasatake YAMATO 93f56362bfSMasatake YAMATOcheck_eof_chars_in_vcxproj() 94f56362bfSMasatake YAMATO{ 95*619cd66cSHiroo HAYASHI local r=4 96f56362bfSMasatake YAMATO local f 97f56362bfSMasatake YAMATO 98f27ee018SK.Takata # *.vcxproj* should not have the last CRLF. 99*619cd66cSHiroo HAYASHI for f in win32/ctags_vs2013.vcxproj.in win32/ctags_vs2013.vcxproj.filters.in \ 100*619cd66cSHiroo HAYASHI win32/ctags_vs2013.vcxproj win32/ctags_vs2013.vcxproj.filters; do 101f56362bfSMasatake YAMATO header "Check the EOF characters of $f" 102f27ee018SK.Takata local s=$(od -t c -j $(expr $(stat -c %s $f) - 1) $f) 103f27ee018SK.Takata if echo "$s" | grep -q '>$'; then 104f56362bfSMasatake YAMATO r=$(expr $r - 1) 105f56362bfSMasatake YAMATO else 106f56362bfSMasatake YAMATO echo "unexpected chars: $s" 107f56362bfSMasatake YAMATO fi 108f56362bfSMasatake YAMATO done 109f56362bfSMasatake YAMATO 110f56362bfSMasatake YAMATO return $r 111f56362bfSMasatake YAMATO} 112f56362bfSMasatake YAMATO 1139d66358aSMasatake YAMATOmain() 1149d66358aSMasatake YAMATO{ 1159d66358aSMasatake YAMATO local i=0 1169d66358aSMasatake YAMATO 1179d66358aSMasatake YAMATO if ! [ -d ./main ]; then 1189d66358aSMasatake YAMATO echo "cannot find ./main" 1199d66358aSMasatake YAMATO return 2 1209d66358aSMasatake YAMATO fi 1219d66358aSMasatake YAMATO 1229d66358aSMasatake YAMATO if ! [ -d ./parsers ]; then 1239d66358aSMasatake YAMATO echo "cannot find ./parsers" 1249d66358aSMasatake YAMATO return 2 1259d66358aSMasatake YAMATO fi 1269d66358aSMasatake YAMATO 1279d66358aSMasatake YAMATO if ! check_include_general_h_first main; then 128ccce4330SMasatake YAMATO i=$(expr $i + 1) 129171cb48dSMasatake YAMATO echo "failed" 130171cb48dSMasatake YAMATO else 131171cb48dSMasatake YAMATO echo "ok" 1329d66358aSMasatake YAMATO fi 1339d66358aSMasatake YAMATO 1349d66358aSMasatake YAMATO if ! check_include_general_h_first parsers; then 135ccce4330SMasatake YAMATO i=$(expr $i + 1) 136171cb48dSMasatake YAMATO echo "failed" 137171cb48dSMasatake YAMATO else 138171cb48dSMasatake YAMATO echo "ok" 1399d66358aSMasatake YAMATO fi 1409d66358aSMasatake YAMATO 1417be80f6aSMasatake YAMATO if ! check_name_cpp_macro main; then 1427be80f6aSMasatake YAMATO i=$(expr $i + 1) 143171cb48dSMasatake YAMATO echo "failed" 144171cb48dSMasatake YAMATO else 145171cb48dSMasatake YAMATO echo "ok" 1467be80f6aSMasatake YAMATO fi 1477be80f6aSMasatake YAMATO 1489f8b3ee4SMasatake YAMATO if ! check_name_cpp_macro parsers; then 1499f8b3ee4SMasatake YAMATO i=$(expr $i + 1) 150171cb48dSMasatake YAMATO echo "failed" 151171cb48dSMasatake YAMATO else 152171cb48dSMasatake YAMATO echo "ok" 1539f8b3ee4SMasatake YAMATO fi 1549f8b3ee4SMasatake YAMATO 155e7b739e0SMasatake YAMATO if ! check_vStringCatS_usage main; then 156e7b739e0SMasatake YAMATO i=$(expr $i + 1) 157171cb48dSMasatake YAMATO echo "failed" 158171cb48dSMasatake YAMATO else 159171cb48dSMasatake YAMATO echo "ok" 160e7b739e0SMasatake YAMATO fi 161e7b739e0SMasatake YAMATO 162e7b739e0SMasatake YAMATO if ! check_vStringCatS_usage parsers; then 163e7b739e0SMasatake YAMATO i=$(expr $i + 1) 164171cb48dSMasatake YAMATO echo "failed" 165171cb48dSMasatake YAMATO else 166171cb48dSMasatake YAMATO echo "ok" 167e7b739e0SMasatake YAMATO fi 168e7b739e0SMasatake YAMATO 169f56362bfSMasatake YAMATO if ! check_eof_chars_in_vcxproj; then 170f56362bfSMasatake YAMATO i=$(expr $i + 1) 171171cb48dSMasatake YAMATO echo "failed" 172171cb48dSMasatake YAMATO else 173171cb48dSMasatake YAMATO echo "ok" 174f56362bfSMasatake YAMATO fi 175f56362bfSMasatake YAMATO 1761b2248f3SMasatake YAMATO return $i 1779d66358aSMasatake YAMATO} 1789d66358aSMasatake YAMATO 1799d66358aSMasatake YAMATOmain "$@" 1809d66358aSMasatake YAMATOexit $? 181