[C]おそらくifdefを書いたコードをチェックしている

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

コメント

タイトルとURLをコピーしました