11f5207b7SJohn Levon#!/usr/bin/perl -w
21f5207b7SJohn Levon
31f5207b7SJohn Levonuse strict;
41f5207b7SJohn Levonuse warnings;
51f5207b7SJohn Levonuse bigint;
61f5207b7SJohn Levonuse DBI;
71f5207b7SJohn Levonuse Data::Dumper;
81f5207b7SJohn Levonuse File::Basename;
91f5207b7SJohn Levon
101f5207b7SJohn Levonmy $project = shift;
111f5207b7SJohn Levon$project =~ s/.*=(.*)/$1/;
121f5207b7SJohn Levonmy $warns = shift;
131f5207b7SJohn Levonmy $db_file = shift;
141f5207b7SJohn Levon
151f5207b7SJohn Levonmy $db;
161f5207b7SJohn Levon
171f5207b7SJohn Levonsub connect_to_db($)
181f5207b7SJohn Levon{
191f5207b7SJohn Levon    my $name = shift;
201f5207b7SJohn Levon
211f5207b7SJohn Levon    $db = DBI->connect("dbi:SQLite:$name", "", "", {AutoCommit => 0});
221f5207b7SJohn Levon
231f5207b7SJohn Levon    $db->do("PRAGMA cache_size = 800000");
241f5207b7SJohn Levon    $db->do("PRAGMA journal_mode = OFF");
251f5207b7SJohn Levon    $db->do("PRAGMA count_changes = OFF");
261f5207b7SJohn Levon    $db->do("PRAGMA temp_store = MEMORY");
271f5207b7SJohn Levon    $db->do("PRAGMA locking = EXCLUSIVE");
281f5207b7SJohn Levon}
291f5207b7SJohn Levon
301f5207b7SJohn Levonsub load_manual_constraints($$)
311f5207b7SJohn Levon{
321f5207b7SJohn Levon    my $full_path = shift;
331f5207b7SJohn Levon    my $project = shift;
341f5207b7SJohn Levon    my $dir = dirname($full_path);
351f5207b7SJohn Levon    my ($data, $op, $limit);
361f5207b7SJohn Levon
37*efe51d0cSJohn Levon    if ($project =~ /^$/) {
38*efe51d0cSJohn Levon        return;
39*efe51d0cSJohn Levon    }
40*efe51d0cSJohn Levon
411f5207b7SJohn Levon    open(FILE, "$dir/$project.constraints_required");
421f5207b7SJohn Levon    while (<FILE>) {
431f5207b7SJohn Levon        ($data, $op, $limit) = split(/,/);
441f5207b7SJohn Levon        $op =~ s/ //g;
451f5207b7SJohn Levon        $limit =~ s/^ +//;
461f5207b7SJohn Levon        $limit =~ s/\n//;
471f5207b7SJohn Levon        $db->do("insert into constraints_required values (?, ?, ?);", undef, $data, $op, $limit);
481f5207b7SJohn Levon    }
491f5207b7SJohn Levon    close(FILE);
501f5207b7SJohn Levon
511f5207b7SJohn Levon    $db->commit();
521f5207b7SJohn Levon}
531f5207b7SJohn Levon
541f5207b7SJohn Levonconnect_to_db($db_file);
551f5207b7SJohn Levonload_manual_constraints($0, $project);
561f5207b7SJohn Levon
571f5207b7SJohn Levon$db->commit();
581f5207b7SJohn Levon$db->disconnect();
59