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/<([EMAIL PROTECTED])>/) { next if $emails{$1}++; # ignoriere doppelte Adressen print CACHE "send-hook '~t $1'\t'set pgp_autoencrypt'\n"; } } close CACHE; close DB; }