1 #!/bin/bash
2
3 if echo $1 | grep -q '^-p' ; then
4 PROJ=$(echo $1 | cut -d = -f 2)
5 shift
6 fi
7
8 info_file=$1
9
10 if [[ "$info_file" = "" ]] ; then
11 echo "Usage: $0 -p=<project> <file with smatch messages>"
12 exit 1
13 fi
14
15 bin_dir=$(dirname $0)
16 db_file=smatch_db.sqlite
17
18 files=$(grep "insert into caller_info" $info_file | cut -d : -f 1 | sort -u)
19 for c_file in $files; do
20 echo "FILE $c_file"
21 echo "delete from caller_info where file = '$c_file';" | sqlite3 $db_file
22 echo "delete from return_states where file = '$c_file';" | sqlite3 $db_file
23 echo "delete from call_implies where file = '$c_file';" | sqlite3 $db_file
24 echo "delete from return_implies where file = '$c_file';" | sqlite3 $db_file
25 done
26
27 tmp_file=$(mktemp)
28
29 grep "insert into caller_info" $info_file > $tmp_file
30 ${bin_dir}/fill_db_caller_info.pl "$PROJ" $tmp_file $db_file
31
32 grep "insert into return_states" $info_file > $tmp_file
33 ${bin_dir}/fill_db_sql.pl "$PROJ" $tmp_file $db_file
34
35 grep "into call_implies" $info_file > $tmp_file
36 ${bin_dir}/fill_db_sql.pl "$PROJ" $tmp_file $db_file
37
38 grep "into return_implies" $info_file > $tmp_file
39 ${bin_dir}/fill_db_sql.pl "$PROJ" $tmp_file $db_file
40
41 rm $tmp_file
42
43 ${bin_dir}/fixup_all.sh $db_file
44 if [ "$PROJ" != "" ] ; then
45 ${bin_dir}/fixup_${PROJ}.sh $db_file
46 fi
47