]> git.donarmstrong.com Git - bin.git/blobdiff - bibtex_to_paper
use formail -c to handle from and to addresses
[bin.git] / bibtex_to_paper
index 5ac334ea9c086167fd5d260c9b9ece64cc6fa3f7..23e0085b9478d527f8da39beec3ceffd08b6404d 100755 (executable)
@@ -18,6 +18,7 @@ use File::Spec qw(rel2abs);
 use Text::BibTeX;
 use User;
 use Data::Printer;
+use POSIX;
 
 use DBI;
 
@@ -173,6 +174,10 @@ sub load_papers_into_database {
     my @dirs = ref($dir)?@{$dir}:$dir;
 
     my $actually_load_it = sub {
+        if (/\.git/) {
+            $File::Find::prune = 1;
+            return;
+        }
         return unless /\.pdf$/;
         my $xoj = 0;
         if (-e "${_}.xoj") {
@@ -219,6 +224,11 @@ sub fork_exec {
         die "Unable to fork for some reason: $!";
     }
     if ($child == 0) {
+        foreach (0 .. (POSIX::sysconf (&POSIX::_SC_OPEN_MAX) || 1024))
+           { POSIX::close $_ }
+        open (STDIN, "</dev/null");
+        open (STDOUT, ">/dev/null");
+        open (STDERR, ">&STDOUT");
         exec(@cmd);
     } else {
         return $child;
@@ -247,6 +257,12 @@ sub open_entry{
     return unless defined $entry and ref $entry and keys %{$entry};
     if (defined $entry->{file_name} and length $entry->{file_name}) {
         my $paper = select_one($dbh,$sth->{select_papers_by_name},$entry->{file_name});
+        if (not defined $paper) {
+            my ($pmid) = $entry->{file_name} =~ /pmid_(\d+)/;
+            if (defined $pmid and length $pmid) {
+                $paper = select_one($dbh,$sth->{select_papers_by_pmid},'%pmid_'.$pmid.'.%');
+            }
+        }
         p $paper if $DEBUG;
         print STDERR $entry->{file_name} if $DEBUG;
         if (defined $paper) {
@@ -391,6 +407,9 @@ INSERT OR REPLACE INTO bibtex (bibtex_key,file_name,doi,html) VALUES (?,?,?,?);
 EOF
          select_papers_by_name => <<'EOF',
 SELECT * FROM papers WHERE file_name = ?;
+EOF
+         select_papers_by_pmid => <<'EOF',
+SELECT * FROM papers WHERE file_name LIKE ?;
 EOF
          select_papers_by_path => <<'EOF',
 SELECT * FROM papers WHERE path = ?;