1 | #!/bin/bash |
---|
2 | |
---|
3 | #----------------------------------------------------------- |
---|
4 | # $Id: list_sensitive.sh 132 2009-07-11 16:39:35Z rosiere $ |
---|
5 | #----------------------------------------------------------- |
---|
6 | declare path; |
---|
7 | declare path_src; |
---|
8 | declare entity; |
---|
9 | declare _path_src="src"; |
---|
10 | declare remove_comments="${MORPHEO_SCRIPT}/remove_comments.sed" |
---|
11 | |
---|
12 | #-----[ usage ]--------------------------------------------- |
---|
13 | function usage () |
---|
14 | { |
---|
15 | echo "Usage : ${0}"; |
---|
16 | |
---|
17 | exit; |
---|
18 | } |
---|
19 | |
---|
20 | #-----[ test_usage ]---------------------------------------- |
---|
21 | function test_usage () |
---|
22 | { |
---|
23 | if test -z "${MORPHEO_SCRIPT}"; then |
---|
24 | echo "Environment variable MORPHEO_SCRIPT is not set"; |
---|
25 | distexe_usage; |
---|
26 | fi; |
---|
27 | |
---|
28 | if test ! -d ${path_src}; then |
---|
29 | echo "Directory ${path_src} don't exist"; |
---|
30 | usage ${*}; |
---|
31 | fi; |
---|
32 | } |
---|
33 | |
---|
34 | #-----[ list_sensitive ]------------------------------------ |
---|
35 | function list_sensitive () |
---|
36 | { |
---|
37 | path=${PWD}; |
---|
38 | path_src=${path}/${_path_src}; |
---|
39 | entity=$(basename ${path}); |
---|
40 | |
---|
41 | test_usage ${*}; |
---|
42 | |
---|
43 | echo " * ${entity}"; |
---|
44 | |
---|
45 | # 1) Erase comment |
---|
46 | # 2) Erase all newline |
---|
47 | # 3) Add newline before each SC_METHOD |
---|
48 | # 4) Replace all tab by space |
---|
49 | # 5) Erase all space |
---|
50 | |
---|
51 | export file1=${path_src}/${entity}.cpp; |
---|
52 | |
---|
53 | sc_methods=$(sed -f ${remove_comments} ${file1} | tr -d '\n' |sed s/SC_METHOD/\\nSC_METHOD/g |sed s/\\t/\ /g | sed s/\ //g | grep SC_METHOD) |
---|
54 | |
---|
55 | for sc_method in ${sc_methods}; do |
---|
56 | method=$(echo ${sc_method} |sed s/SC_METHOD\(//g |cut -d ')' -f 1); |
---|
57 | echo " * ${method}"; |
---|
58 | |
---|
59 | file2=${path_src}/${entity}_${method}.cpp; |
---|
60 | |
---|
61 | # 1) erase comment |
---|
62 | # 2) Replace all tab by space |
---|
63 | # 3) Erase all space |
---|
64 | # 4) add a previous newline before each port_read. |
---|
65 | # 5) add an space before each ) |
---|
66 | # 6) replace all space by an newline |
---|
67 | # 7) grep PORT_READ( |
---|
68 | # 8) replace PORT_READ( by nothing |
---|
69 | # 9) erase array |
---|
70 | # 10) sort |
---|
71 | # 11) erase duplicate port |
---|
72 | ports_read=$(sed -f ${remove_comments} ${file2} |sed s/\\t/\ /g | sed s/\ //g | sed s/PORT_READ/\\nPORT_READ/g | sed s/\)/\ /g | sed s/\ /\\n/g | grep PORT_READ | sed s/PORT_READ\(//g |cut -d '[' -f 1 |sort |uniq); |
---|
73 | |
---|
74 | # 1) add space before (*( |
---|
75 | list_sensitives=$(echo ${sc_method} |sed s/\(\\*\(/\\n/g); |
---|
76 | list_sensitive=""; |
---|
77 | |
---|
78 | local -i first=1; |
---|
79 | for sensitive in ${list_sensitives}; do |
---|
80 | if test ${first} -eq 0; then |
---|
81 | signal=$(echo ${sensitive} |cut -d '[' -f 1 |cut -d ')' -f 1); |
---|
82 | |
---|
83 | list_sensitive=${list_sensitive}" "${signal}; |
---|
84 | |
---|
85 | # echo -n " * ${signal}"; |
---|
86 | |
---|
87 | # if test $(echo ${ports_read} | grep -c ${signal}) -eq 0; then |
---|
88 | # echo " * ${signal} in sensitive list, not in file"; |
---|
89 | ## else |
---|
90 | ## echo " ... OK"; |
---|
91 | # fi; |
---|
92 | else |
---|
93 | first=0; |
---|
94 | fi; |
---|
95 | done; |
---|
96 | |
---|
97 | if test "${method}" != "transition" -a "${method}" != "constant" ; then |
---|
98 | for port in ${ports_read}; do |
---|
99 | if test $(echo ${list_sensitive} | grep -c ${port}) -eq 0; then |
---|
100 | echo " * ${port} in file, not in sensitive list"; |
---|
101 | fi; |
---|
102 | done; |
---|
103 | fi; |
---|
104 | |
---|
105 | done; |
---|
106 | } |
---|
107 | |
---|
108 | #-----[ Corps ]--------------------------------------------- |
---|
109 | list_sensitive ${*}; |
---|