commit - /dev/null
commit + 76925356e6754790b9f3d61dc20c44b23d000e6b
blob - /dev/null
blob + 2bf6ec7036bb6021a02b1dd4545e3522acb40bf8 (mode 755)
--- /dev/null
+++ addrcache.pl
+#!/usr/bin/perl
+
+use strict;
+
+use DBI;
+use File::Path qw(make_path);
+
+my ($email, $name);
+while (<>)
+{
+ next unless /From:\s*(.*)/i;
+
+ my $line = $1;
+ if ($line =~ /^(.*)\s+<(.*)>$/)
+ {
+ $email = $2;
+ $name = $1;
+ $name =~ s/^"|"$//g;
+ }
+ else
+ {
+ $email = $line;
+ $line =~ s/\s+$//;
+ $name = '';
+ }
+
+}
+
+my $db_dir = "$ENV{HOME}/.local/share/addrutils/";
+my $db = "addrs.db";
+my $dsn = "dbi:SQLite:dbname=$db_dir/$db";
+
+make_path($db_dir);
+
+my $dbh = DBI->connect($dsn, "", "", {
+ RaiseError => 1,
+ AutoCommit => 1,
+ sqlite_see_if_its_a_number => 1,
+}) or die "SQLite Error: $DBI::errstr";
+
+$dbh->do(<<'SQL');
+CREATE TABLE IF NOT EXISTS contacts (
+ Email TEXT NOT NULL,
+ Name TEXT,
+ CONSTRAINT PK_Contact PRIMARY KEY (Email, Name)
+)
+SQL
+
+my $insert_sql = "INSERT OR IGNORE INTO contacts (Email, Name) VALUES (?, ?)";
+my $insert = $dbh->prepare($insert_sql);
+$insert->execute($email, $name);
+$insert->finish;
+$dbh->disconnect;
+
blob - /dev/null
blob + e318d93e2d3e546e5971afbdc3279b636ee87dea (mode 755)
--- /dev/null
+++ addrquery.pl
+#!/usr/bin/perl
+
+use strict;
+
+use DBI;
+
+my @addrs;
+
+my $db_dir = "$ENV{HOME}/.local/share/addrutils/";
+my $db = "addrs.db";
+my $dsn = "dbi:SQLite:dbname=$db_dir/$db";
+
+my $dbh = DBI->connect($dsn, "", "", {
+ RaiseError => 1,
+ AutoCommit => 1,
+ sqlite_see_if_its_a_number => 1,
+}) or die "SQLite Error: $DBI::errstr";
+
+my $select_sql = "SELECT Email, Name FROM contacts WHERE Email LIKE ? OR Name LIKE ?";
+my $select = $dbh->prepare($select_sql);
+$select->execute("%$ARGV[0]%", "%$ARGV[0]%");
+while (my $row = $select->fetchrow_hashref)
+{
+ print "\n$row->{Email}\t$row->{Name}";
+}
+print "\n";
+$select->finish;
+$dbh->disconnect;
+