db: move return_values to use raw SQL
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 11 Feb 2013 14:25:38 +0000 (11 17:25 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Thu, 14 Feb 2013 12:03:13 +0000 (14 15:03 +0300)
Instead of printing human readable text and parsing it with
fill_db_return_values.pl, just print raw SQL and parse it with
fill_db_sql.pl.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
check_db_info.c
smatch.h
smatch_db.c
smatch_scripts/db/fill_db_return_values.pl [deleted file]

index b153a4e..216d00e 100644 (file)
@@ -43,8 +43,7 @@ static void match_end_func(struct symbol *sym)
 {
        if (!return_ranges)
                return;
-       sm_msg("info: function_return_values '%s' %s",
-              show_rl(return_ranges), global_static());
+       sql_insert_return_values(show_rl(return_ranges));
        return_ranges = NULL;
 }
 
index 7f7a84a..17430d0 100644 (file)
--- a/smatch.h
+++ b/smatch.h
@@ -501,6 +501,7 @@ do {                                  \
 void sql_insert_return_states(int return_id, const char *return_ranges,
                int type, int param, const char *key, const char *value);
 void sql_insert_function_ptr(const char *fn, const char *struct_name);
+void sql_insert_return_values(const char *return_values);
 
 void sql_exec(int (*callback)(void*, int, char**, char**), const char *sql);
 void open_smatch_db(void);
index 23926e9..06ebb5b 100644 (file)
@@ -93,6 +93,12 @@ void sql_insert_function_ptr(const char *fn, const char *struct_name)
                   struct_name);
 }
 
+void sql_insert_return_values(const char *return_values)
+{
+       sql_insert(return_values, "'%s', '%s', %d, '%s'", get_filename(),
+                  get_function(), fn_static(), return_values);
+}
+
 void add_definition_db_callback(void (*callback)(const char *name, struct symbol *sym, char *key, char *value), int type)
 {
        struct def_callback *def_callback = __alloc_def_callback(0);
diff --git a/smatch_scripts/db/fill_db_return_values.pl b/smatch_scripts/db/fill_db_return_values.pl
deleted file mode 100755 (executable)
index ca07193..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-use DBI;
-
-my $warns = shift;
-
-if (!defined($warns)) {
-    print "usage:  $0 <warns.txt>\n";
-    exit(1);
-}
-
-my $db = DBI->connect("dbi:SQLite:smatch_db.sqlite", "", "", {AutoCommit => 0});
-$db->do("PRAGMA synchronous = OFF");
-$db->do("PRAGMA cache_size = 800000");
-$db->do("PRAGMA journal_mode = OFF");
-
-$db->do("delete from return_values;");
-
-my $type;
-my $param;
-my ($file_and_line, $file, $dummy, $func, $return_value, $gs);
-my $static;
-
-open(WARNS, "<$warns");
-while (<WARNS>) {
-
-    if ($_ =~ / info: function_return_values /) {
-        # arch/x86/mm/mmap.c:354 mmap_is_ia32() info: function_return_values '0-1' static
-        ($file_and_line, $func, $dummy, $dummy, $return_value, $gs) = split(/ /, $_);
-    } else {
-        next;
-    }
-
-    ($file, $dummy) = split(/:/, $file_and_line);
-
-    $func =~ s/\(\)//;
-    $return_value =~ s/'//g;
-
-    $static = 0;
-    if ($gs =~ /static/) {
-        $static = 1;
-    }
-
-    $db->do("insert into return_values values ('$file', '$func', $static, '$return_value')\n");
-}
-
-$db->commit();
-$db->disconnect();