helper: fix segfault parsing invalid code
[smatch.git] / smatch_data / db / reload_partial.sh
blob1cce1dbbe240f80676b127aa003302634b46c9a4
1 #!/bin/bash
3 if echo $1 | grep -q '^-p' ; then
4 PROJ=$(echo $1 | cut -d = -f 2)
5 shift
6 fi
8 info_file=$1
10 if [[ "$info_file" = "" ]] ; then
11 echo "Usage: $0 -p=<project> <file with smatch messages>"
12 exit 1
15 bin_dir=$(dirname $0)
16 db_file=smatch_db.sqlite
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 done
26 tmp_file=$(mktemp)
28 grep "insert into caller_info" $info_file > $tmp_file
29 ${bin_dir}/fill_db_caller_info.pl "$PROJ" $tmp_file $db_file
31 grep "insert into return_states" $info_file > $tmp_file
32 ${bin_dir}/fill_db_sql.pl "$PROJ" $tmp_file $db_file
34 grep "insert into call_implies" $info_file > $tmp_file
35 ${bin_dir}/fill_db_sql.pl "$PROJ" $tmp_file $db_file
37 rm $tmp_file
39 ${bin_dir}/fixup_all.sh $db_file
40 if [ "$PROJ" != "" ] ; then
41 ${bin_dir}/fixup_${PROJ}.sh $db_file