diff options
-rw-r--r-- | popunit.pas | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/popunit.pas b/popunit.pas index 1664f8a..67c4578 100644 --- a/popunit.pas +++ b/popunit.pas @@ -18,8 +18,8 @@ type private _marke: tMarkenValiditaet; public - id,groesze: longint; - gueltigerAdressat: string; + id,groesze: longint; + sdbName,gueltigerAdressat: string; constructor create; destructor destroy; override; procedure kopiereVon(n: tNachricht); @@ -53,6 +53,7 @@ type tPopClient = class private _thread: tPopThread; + _sdbName: string; _nachrichten: array of tNachricht; _lIds: array of longint; public @@ -81,7 +82,7 @@ function befehlAusfuehren(var pr: tProcess; bef,ende: string; timeout: extended; implementation -uses lowlevelunit; +uses lowlevelunit, systemunit; const extraLen = 1024; @@ -158,11 +159,14 @@ begin _marke:=mvKeine; fillchar(gueltigerAdressat,sizeof(gueltigerAdressat),#0); gueltigerAdressat:=''; + fillchar(sdbName,sizeof(sdbName),#0); + sdbName:=''; end; destructor tNachricht.destroy; begin gueltigerAdressat:=''; + sdbName:=''; inherited destroy; end; @@ -173,6 +177,7 @@ begin groesze:=n.groesze; _marke:=n._marke; gueltigerAdressat:=n.gueltigerAdressat; + sdbName:=n.sdbName; end; function tNachricht.istGleich(n: tNachricht): boolean; @@ -189,6 +194,9 @@ begin exit; end; + if sdbName='' then + raise exception.create('sdbName noch nicht gesetzt!'); + pr:=tProcess.create(nil); pr.executable:='hashcash'; pr.parameters.add('-c'); // Prüfen @@ -196,6 +204,8 @@ begin pr.parameters.add('-b'); // Bits pr.parameters.add('20'); pr.parameters.add('-d'); // mit Datenbank + pr.parameters.add('-f'); // an folgendem Ort: + pr.parameters.add(sdbName); pr.parameters.add('-E'); // mit Regex pr.parameters.add('-r'); // gültige Rezipienten pr.parameters.add(gueltigerAdressat); @@ -435,6 +445,7 @@ begin _nachrichten[len].id:=id; _nachrichten[len].groesze:=groesze; _nachrichten[len].gueltigerAdressat:=_besitzer.gueltigerAdressat; + _nachrichten[len].sdbName:=_besitzer._sdbName; inc(len); end; for i:=len to length(_nachrichten)-1 do @@ -507,6 +518,7 @@ begin user:=''; pass:=''; host:=''; + _sdbName:=mkTemp('/tmp/Emails-hashcash.sdb.XXXXXX'); gueltigerAdressat:=''; port:=0; timeout:=10; @@ -526,6 +538,8 @@ begin _nachrichten[i].free; setlength(_nachrichten,0); setlength(_lIds,0); + if fileexists(_sdbName) then + deleteFile(_sdbName); inherited destroy; end; |