helper: fix segfault parsing invalid code
[smatch.git] / smatch_data / db / init_constraints_required.pl
blobe7a4057544a70bc34a778119803447a1487d380d
1 #!/usr/bin/perl -w
3 use strict;
4 use warnings;
5 use bigint;
6 use DBI;
7 use Data::Dumper;
8 use File::Basename;
10 my $project = shift;
11 $project =~ s/.*=(.*)/$1/;
12 my $warns = shift;
13 my $db_file = shift;
15 my $db;
17 sub connect_to_db($)
19 my $name = shift;
21 $db = DBI->connect("dbi:SQLite:$name", "", "", {AutoCommit => 0});
23 $db->do("PRAGMA cache_size = 800000");
24 $db->do("PRAGMA journal_mode = OFF");
25 $db->do("PRAGMA count_changes = OFF");
26 $db->do("PRAGMA temp_store = MEMORY");
27 $db->do("PRAGMA locking = EXCLUSIVE");
30 sub load_manual_constraints($$)
32 my $full_path = shift;
33 my $project = shift;
34 my $dir = dirname($full_path);
35 my ($data, $op, $limit);
37 open(FILE, "$dir/$project.constraints_required");
38 while (<FILE>) {
39 ($data, $op, $limit) = split(/,/);
40 $op =~ s/ //g;
41 $limit =~ s/^ +//;
42 $limit =~ s/\n//;
43 $db->do("insert into constraints_required values (?, ?, ?);", undef, $data, $op, $limit);
45 close(FILE);
47 $db->commit();
50 connect_to_db($db_file);
51 load_manual_constraints($0, $project);
53 $db->commit();
54 $db->disconnect();