2007年頃、若手時代に作ったコード
確か、Kernel開発でC言語のコードを書いていた時に、修正したところを#ifdef
~#endif
でまとめていました。
その場所をチェックすることで、修正した場所の一覧を抽出しようという意図のプログラムです。
おそらく、そうだったと思います。。。
10年経つとなかなか理解しがたい。。。
コード
#! /bin/bash
for line in $(grep -r -l "TEST" ./aaaaaaa.c | sort | uniq)
do
if [ $(expr "$line" : '.*\.\([^.]*\)$') = "c" ];
then
###
echo "ifdef TEST check for $line"
tempstart=0
tempelse=-1
tempend=0
for tempstart in $(grep -n "ifdef TEST" "$line" | sed -e "s/[:].*//")
do
i=1
echo "start addr : $tempstart"
while [ $tempstart -ge $tempend ]
do
tempend=$(grep -n "endif" "$line" | sed -e "s/[:].*//" | awk '(NR == '$i'){ print $1 }')
i=$i+1
done
echo "end addr : $tempend"
done
###
echo "ifndef TEST check for $line"
tempstart=0
tempelse=-1
tempend=0
ttt=0
for tempstart in $(grep -n "ifndef TEST" "$line" | sed -e "s/[:].*//")
do
i=1
echo "start addr : $tempstart"
while [ $tempstart -ge $tempend ]
do
tempend=$(grep -n "endif" "$line" | sed -e "s/[:].*//" | awk '(NR == '$i'){ print $1 }')
i=$i+1
done
echo "end addr : $tempend"
i=1
while [ "$tempstart -ge $tempelse" -a "$tempelse -ge $tempend" -a -n "$ttt" ]
do
ttt=$(grep -n "else /\* aaaa\*/" "$line" | sed -e "s/[:].*//" | awk '(NR == '$i'){ print $1 }')
if [ -n "$ttt" ]
then
tempelse=$ttt
fi
i=$i+1
done
echo "else addr : $tempelse"
done
else
echo "error"
fi
done
exit 0
コメント