xref: /illumos-gate/usr/src/tools/smatch/src/smatch_data/db/init_constraints_required.pl (revision 8c0b080c8ed055a259d8cd26b9f005211c6a9753)
1#!/usr/bin/perl -w
2
3use strict;
4use warnings;
5use bigint;
6use DBI;
7use Data::Dumper;
8use File::Basename;
9
10my $project = shift;
11$project =~ s/.*=(.*)/$1/;
12my $warns = shift;
13my $db_file = shift;
14
15my $db;
16
17sub connect_to_db($)
18{
19    my $name = shift;
20
21    $db = DBI->connect("dbi:SQLite:$name", "", "", {AutoCommit => 0});
22
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");
28}
29
30sub load_manual_constraints($$)
31{
32    my $full_path = shift;
33    my $project = shift;
34    my $dir = dirname($full_path);
35    my ($data, $op, $limit);
36
37    if ($project =~ /^$/) {
38        return;
39    }
40
41    open(FILE, "$dir/$project.constraints_required");
42    while (<FILE>) {
43        ($data, $op, $limit) = split(/,/);
44        $op =~ s/ //g;
45        $limit =~ s/^ +//;
46        $limit =~ s/\n//;
47        $db->do("insert into constraints_required values (?, ?, ?);", undef, $data, $op, $limit);
48    }
49    close(FILE);
50
51    $db->commit();
52}
53
54connect_to_db($db_file);
55load_manual_constraints($0, $project);
56
57$db->commit();
58$db->disconnect();
59