summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--popunit.pas20
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;