[3137] | 1 | #!/bin/bash |
---|
| 2 | # |
---|
| 3 | # purpose: |
---|
| 4 | # small script to check in all *90 files of the current directory and subdirectories |
---|
| 5 | # if all lines with wrk_alloc have their corresponding lines with wrk_dealloc |
---|
| 6 | # |
---|
| 7 | # use: |
---|
| 8 | # call chk_wrk_alloc.sh from the directory you want to check |
---|
| 9 | # |
---|
| 10 | # example: |
---|
| 11 | # cd ~/dev_NEMO_MERGE_2011/NEMOGCM/NEMO |
---|
| 12 | # ../TOOLS/MISCELLANEOUS/chk_wrk_alloc.sh |
---|
| 13 | # |
---|
[5302] | 14 | set -u |
---|
[3137] | 15 | # |
---|
| 16 | echo "check for all *90 files contained in "$( pwd )" and its subdirectories" |
---|
| 17 | # |
---|
[5302] | 18 | for ff in $( grep -il "^ *use *wrk_nemo" $( find . -name "*90" ) $( find . -name "*h90" ) ) |
---|
[3137] | 19 | do |
---|
[5514] | 20 | ierr=0 |
---|
| 21 | |
---|
[3137] | 22 | # number of lines with wrk_alloc |
---|
[5302] | 23 | n1=$( grep -ic "call *wrk_alloc *(" $ff ) |
---|
| 24 | # number of lines with wrk_dealloc |
---|
| 25 | nn1=$( grep -ic "call *wrk_dealloc *(" $ff ) |
---|
| 26 | |
---|
| 27 | if [ $(( $n1 + $nn1 )) -ne 0 ] |
---|
| 28 | then |
---|
| 29 | # replace wrk_alloc with wrk_dealloc and count the lines |
---|
| 30 | n2=$( sed -e "s/wrk_alloc/wrk_dealloc/" $ff | grep -ic "call *wrk_dealloc *(" ) |
---|
| 31 | # we should get n2 = 2 * n1... |
---|
[5514] | 32 | if [ $(( 2 * $n1 )) -ne $n2 ] |
---|
| 33 | then |
---|
| 34 | ierr=1 |
---|
| 35 | echo "problem with wrk_alloc in $ff" |
---|
| 36 | fi |
---|
[5302] | 37 | # same story but for wrk_dealloc |
---|
| 38 | nn2=$( sed -e "s/wrk_dealloc/wrk_alloc/" $ff | grep -ic "call *wrk_alloc *(" ) |
---|
[5407] | 39 | if [ $(( 2 * $nn1 )) -ne $nn2 ] |
---|
| 40 | then |
---|
[5514] | 41 | ierr=1 |
---|
| 42 | echo "problem with wrk_dealloc in $ff" |
---|
| 43 | fi |
---|
| 44 | |
---|
| 45 | if [ $ierr -eq 0 ] # check that wrk_alloc block is the same as wrk_dealloc block |
---|
| 46 | then |
---|
| 47 | grep -i "call *wrk_alloc *(" $ff | sed -e "s/ //g" | sed -e "s/!.*//g" > txt1$$ |
---|
| 48 | grep -i "call *wrk_dealloc *(" $ff | sed -e "s/wrk_dealloc/wrk_alloc/" | sed -e "s/ //g" | sed -e "s/!.*//g" > txt2$$ |
---|
| 49 | cmp txt1$$ txt2$$ |
---|
| 50 | if [ $? -ne 0 ] |
---|
| 51 | then |
---|
| 52 | echo "different syntax in wrk_alloc and wrk_dealloc in $ff" |
---|
| 53 | echo |
---|
| 54 | for ll in $( seq 1 $n1 ) # compare each line |
---|
| 55 | do |
---|
| 56 | sed -n ${ll}p txt1$$ > ll1$$ |
---|
| 57 | sed -n ${ll}p txt2$$ > ll2$$ |
---|
| 58 | cmp ll1$$ ll2$$ > /dev/null |
---|
| 59 | if [ $? -ne 0 ] |
---|
| 60 | then |
---|
| 61 | grep -i "call *wrk_alloc *(" $ff | sed -n ${ll}p |
---|
| 62 | grep -i "call *wrk_dealloc *(" $ff | sed -n ${ll}p |
---|
| 63 | echo |
---|
| 64 | fi |
---|
| 65 | rm -f ll1$$ ll2$$ |
---|
| 66 | done |
---|
| 67 | fi |
---|
| 68 | rm -f txt1$$ txt2$$ |
---|
| 69 | else |
---|
[5407] | 70 | grep -i "call *wrk_alloc *(" $ff |
---|
| 71 | echo |
---|
[5514] | 72 | grep -i "call *wrk_dealloc *(" $ff |
---|
| 73 | echo |
---|
[5407] | 74 | fi |
---|
[5514] | 75 | |
---|
[5302] | 76 | fi |
---|
| 77 | |
---|
[3137] | 78 | done |
---|