Commit Diff


commit - /dev/null
commit + 76925356e6754790b9f3d61dc20c44b23d000e6b
blob - /dev/null
blob + 2bf6ec7036bb6021a02b1dd4545e3522acb40bf8 (mode 755)
--- /dev/null
+++ addrcache.pl
@@ -0,0 +1,54 @@
+#!/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
@@ -0,0 +1,29 @@
+#!/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;
+