126b54c23SMasatake YAMATO__SKIP__=77 226b54c23SMasatake YAMATO 31ea57ac0SMasatake YAMATOskip() 41ea57ac0SMasatake YAMATO{ 51ea57ac0SMasatake YAMATO echo "$@" 61ea57ac0SMasatake YAMATO exit ${__SKIP__} 71ea57ac0SMasatake YAMATO} 81ea57ac0SMasatake YAMATO 93409fbe4SMasatake YAMATOremove_commit_id() 103409fbe4SMasatake YAMATO{ 113409fbe4SMasatake YAMATO # Remove a commit id embedded in tags file 123409fbe4SMasatake YAMATO sed -i -e '/!_TAG_PROGRAM_VERSION.*/s#/[^/]*/#//#' $1 133409fbe4SMasatake YAMATO} 1426b54c23SMasatake YAMATO 155742f4c7SAman Guptafilesize() 165742f4c7SAman Gupta{ 175742f4c7SAman Gupta wc -c < "$1" 185742f4c7SAman Gupta} 195742f4c7SAman Gupta 2026b54c23SMasatake YAMATOis_feature_available() 2126b54c23SMasatake YAMATO{ 2226b54c23SMasatake YAMATO local ctags=$1 23a639b861SMasatake YAMATO local tmp=$2 2429f8d8e7SMasatake YAMATO local o="--quiet --options=NONE" 25a639b861SMasatake YAMATO local neg 26a639b861SMasatake YAMATO local feat 2726b54c23SMasatake YAMATO 28a639b861SMasatake YAMATO if [ "${tmp}" = '!' ]; then 29a639b861SMasatake YAMATO neg=1 30a639b861SMasatake YAMATO feat=$3 31a639b861SMasatake YAMATO else 32a639b861SMasatake YAMATO feat=$2 33a639b861SMasatake YAMATO fi 34a639b861SMasatake YAMATO 35a639b861SMasatake YAMATO if [ "${neg}" = 1 ]; then 3615348a1dSMasatake YAMATO if ${ctags} $o --with-list-header=no --list-features | grep -q "$feat"; then 37a639b861SMasatake YAMATO skip "feature \"$feat\" is available in $ctags" 38a639b861SMasatake YAMATO fi 39a639b861SMasatake YAMATO else 4015348a1dSMasatake YAMATO if ! ${ctags} $o --with-list-header=no --list-features | grep -q "$feat"; then 411ea57ac0SMasatake YAMATO skip "feature \"$feat\" is not available in $ctags" 4226b54c23SMasatake YAMATO fi 43a639b861SMasatake YAMATO fi 4426b54c23SMasatake YAMATO} 4526b54c23SMasatake YAMATO 46b2a1b44dSMasatake YAMATOskip_if_user_has_dot_ctags_d() 47b2a1b44dSMasatake YAMATO{ 48b2a1b44dSMasatake YAMATO if [ -d ~/.ctags.d ]; then 49b2a1b44dSMasatake YAMATO skip "this test case doesn't work well if you have ~/.ctags.d" 50b2a1b44dSMasatake YAMATO fi 51b2a1b44dSMasatake YAMATO} 52b2a1b44dSMasatake YAMATO 53a639b861SMasatake YAMATOexit_if_win32() 54a639b861SMasatake YAMATO{ 55a639b861SMasatake YAMATO is_feature_available $1 '!' win32 56a639b861SMasatake YAMATO} 57a639b861SMasatake YAMATO 586db8ff33SMasatake YAMATOexit_unless_win32() 596db8ff33SMasatake YAMATO{ 606db8ff33SMasatake YAMATO is_feature_available $1 win32 616db8ff33SMasatake YAMATO} 626db8ff33SMasatake YAMATO 63c160cf6cSMasatake YAMATOexit_if_no_case_insensitive_filenames() 64c160cf6cSMasatake YAMATO{ 65c160cf6cSMasatake YAMATO is_feature_available $1 case-insensitive-filenames 66c160cf6cSMasatake YAMATO} 67c160cf6cSMasatake YAMATO 6823b7096eSMasatake YAMATOrun_with_format() 6923b7096eSMasatake YAMATO{ 70d1be9012SAman Gupta echo '#' $* 71d1be9012SAman Gupta local format=$1 72d1be9012SAman Gupta shift 732682e1f2SMasatake YAMATO ${CTAGS} --quiet --options=NONE --output-format=$format "$@" -o - input.* 7423b7096eSMasatake YAMATO} 75eb47af96SMasatake YAMATO 76eb47af96SMasatake YAMATOexit_status_for_input_c() 77eb47af96SMasatake YAMATO{ 78eb47af96SMasatake YAMATO local ctags=$1 79eb47af96SMasatake YAMATO shift 80eb47af96SMasatake YAMATO 81eb47af96SMasatake YAMATO local remove_file=$1 82eb47af96SMasatake YAMATO shift 83eb47af96SMasatake YAMATO 84474efcd6SK.Takata printf "%s => " "$(echo "$*" | sed -e 's#[^ ][^ ]*/\([^ ]*\)#\1#g')" 85eb47af96SMasatake YAMATO ${ctags} --quiet --options=NONE "$@" input.c > /dev/null 86eb47af96SMasatake YAMATO local result_local=$? 87eb47af96SMasatake YAMATO 88eb47af96SMasatake YAMATO if [ "$remove_file" != "none" ]; then 89eb47af96SMasatake YAMATO rm -f "$remove_file" 90eb47af96SMasatake YAMATO fi 91eb47af96SMasatake YAMATO 92eb47af96SMasatake YAMATO if [ "$result_local" = 0 ]; then 93eb47af96SMasatake YAMATO echo "ok" 94eb47af96SMasatake YAMATO else 95eb47af96SMasatake YAMATO echo "failed" 96eb47af96SMasatake YAMATO fi 97eb47af96SMasatake YAMATO} 98c9a90de9SMasatake YAMATO 99c9a90de9SMasatake YAMATOget_column_index() 100c9a90de9SMasatake YAMATO{ 101c9a90de9SMasatake YAMATO local index=0 102c9a90de9SMasatake YAMATO local ctags=$1 103c9a90de9SMasatake YAMATO local option=$2 104c9a90de9SMasatake YAMATO local column=$3 105c9a90de9SMasatake YAMATO 106c9a90de9SMasatake YAMATO for x in $($ctags --quiet --options=NONE --with-list-header "$option" | sed -ne 's/^#\(.*\)$/\1/p'); do 107c9a90de9SMasatake YAMATO if [ "$x" = "$column" ]; then 108c9a90de9SMasatake YAMATO echo $index 109c9a90de9SMasatake YAMATO return 0 110c9a90de9SMasatake YAMATO fi 111c9a90de9SMasatake YAMATO index=$(expr $index + 1) 112c9a90de9SMasatake YAMATO done 113c9a90de9SMasatake YAMATO 114c9a90de9SMasatake YAMATO echo -1 115c9a90de9SMasatake YAMATO return 1 116c9a90de9SMasatake YAMATO} 117c9a90de9SMasatake YAMATO 118c9a90de9SMasatake YAMATOfilter_by_column_index() 119c9a90de9SMasatake YAMATO{ 120c9a90de9SMasatake YAMATO local index=$1 121c9a90de9SMasatake YAMATO 1227b2dfa86SK.Takata awk '{print $'$(expr $index + 1)'}' 123c9a90de9SMasatake YAMATO} 124b28506aaSMasatake YAMATO 125b28506aaSMasatake YAMATOecho2() 126b28506aaSMasatake YAMATO{ 127b28506aaSMasatake YAMATO # use a external echo command here. 128b28506aaSMasatake YAMATO # built-in echo suppresses \1. 129b28506aaSMasatake YAMATO /bin/echo "$@" 130b28506aaSMasatake YAMATO /bin/echo "$@" 1>&2 131b28506aaSMasatake YAMATO} 132474efcd6SK.Takata 133eb101098SMasatake YAMATOdireq_maybe () 134474efcd6SK.Takata{ 135474efcd6SK.Takata [ "$(cd ${1} && pwd)" = "$(cd ${2} && pwd)" ] 136474efcd6SK.Takata return $? 137474efcd6SK.Takata} 138*f7bdb885SMasatake YAMATO 139*f7bdb885SMasatake YAMATOcheck_encoding() 140*f7bdb885SMasatake YAMATO{ 141*f7bdb885SMasatake YAMATO if iconv -l | grep -qi "$1"; then 142*f7bdb885SMasatake YAMATO return 0 143*f7bdb885SMasatake YAMATO fi 144*f7bdb885SMasatake YAMATO skip "iconv doesn't know about the encoding: $1" 145*f7bdb885SMasatake YAMATO} 146