[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mutt Konfiguration



On Tue, May 23, 2006 at 04:14:46PM +0200, Udo Mueller wrote:
> * Juergen Christoffel schrieb [23-05-06 10:41]:
> > 
> > Wenn Du nun z.B. ueber alle Adressen in Deiner Keychain iterierst, ...
> 
> ... dürfte das Starten mutt einiges länger dauern, wenn die Trust-DB
> dabei gebaut bzw. aktualisiert wird.

Wenn man das einfach immer wieder berechnet, hast Du recht. Als ich die
"..." schrieb, hatte ich ueberlegt, ob ich noch auf's Caching hinweisen
sollte. 
 
Also hier fuer das Listen-Archiv: bei umfangreichen Daten die Ergebnisse
der Berechnung cachen und nur neu berechnen, wenn sich die Eingangsdaten
veraendert haben. Das heisst, im Script etwas der Art

cache=$HOME/.mutt-gpg
dbfile=$HOME/.gnupg/pubring.gpg

if [$cache -nt $dbfile ] ; then
  cat $cache
else
  # refresh cache
  ...
fi

Und wenn man wirklich oft neue Daten kriegt, dann kann man die Berechnungen
alle n Minuten durch die Crontab anwerfen und sie nicht mehr beim Start des
mutt machen.

	--jc

P.S. Und im Anhang ein Script, dass die Eintraege fuer .muttrc erzeugt.

-- 
  Ignorance more frequently begets confidence than does knowledge.
	-- Charles Darwin
#! /usr/bin/perl
#
# 2006-05-24 (JC)

use strict;

my $HOME=$ENV{'HOME'};
my $cache="$HOME/.mutt-gpg";
my $dbfile="$HOME/.gnupg/pubring.gpg";

# erzeuge cache file falls es nicht existiert
refresh_cache() unless -f $cache; 

# Index fuer mtime in der Liste, die stat liefert, siehe 'perldoc -f stat'
my $mtime = 9;

# cache refresh notwendig?
refresh_cache() unless (stat $cache)[$mtime] > (stat $dbfile)[$mtime];

open CACHE, $cache;
print <CACHE>;
close CACHE;

exit 0;

# refresh_cache: extrahiere Email-Adressen (in spitzen Klammern) aus der
# Liste, die gpg erzeugt und generiere daraus send-hooks fuer mutt.
sub refresh_cache {
  my %emails;

  open CACHE, ">$cache" or warn "$0: can't write cache: $!\n";
  open DB, "/usr/bin/gpg --list-keys|" or warn "$0: can't read keys: $!\n";

  while (<DB>) {
    if (m/<(.*\@.*)>/) {
      next if $emails{$1}++;		# ignoriere doppelte Adressen
      print CACHE "send-hook '~t $1'\t'set pgp_autoencrypt'\n";
    }
  }

  close CACHE;
  close DB;
}

Reply to: