FreeXP

CVS daily diff

FreeXP CVS-Server cvs-list at freexp.de
Fre Mar 31 00:00:37 CEST 2006


Index: freexp/md5.pas
===================================================================
RCS file: /server/cvs/freexp/md5.pas,v
retrieving revision 1.1
retrieving revision 1.3
diff -u -r1.1 -r1.3
--- freexp/md5.pas	25 Feb 2006 12:42:48 -0000	1.1
+++ freexp/md5.pas	30 Mar 2006 07:21:09 -0000	1.3
@@ -1,4 +1,4 @@
-{ $Id: md5.pas,v 1.1 2006/02/25 12:42:48 mw Exp $ }
+{ $Id: md5.pas,v 1.3 2006/03/30 07:21:09 mw Exp $ }
 unit MD5;
 
 {MD5 - 128 bit Hash function}
@@ -50,7 +50,8 @@
  3.07     18.01.06  we          Descriptor fields HAlgNum, HSig
  3.08     22.01.06  we          Removed HSelfTest from descriptor
  3.09     11.02.06  we          Descriptor as typed const
- 3.09fxp  20.02.06  fxp         STD.INC is now part of this file
+ 3.09fxp1 20.02.06  fxp         STD.INC is now part of this file
+ 3.09fxp2 28.03.06  fxp         md5sum generates MD5SUM as a String[32]  
 **************************************************************************)
 
 (*-------------------------------------------------------------------------
@@ -329,8 +330,13 @@
 {$ifopt Q+} {$define OverflowChecks_on}  {$endif}
 {$endif}
 
-uses Hash;
+uses typeform,fileio,hash;
 
+type md5str  = string[32];
+
+function md5sum(const source:string;const isfile:boolean):md5str;
+  {-initialize context}
+  {$ifdef DLL} stdcall; {$endif}
 
 procedure MD5Init(var Context: THashContext);
   {-initialize context}
@@ -384,7 +390,15 @@
 {Internal types for type casting}
 type
   PByte   = ^byte;
-
+  {$ifdef UseWinDOS}
+  md5buf = array[1..$8000] of byte; 
+  {$else}
+  {$ifdef VER80}
+  md5buf = array[1..$8000] of byte;
+  {$else}
+  md5buf = array[1..$C000] of byte;
+  {$endif}
+  {$endif}
 
 {$ifdef StrictLong}
   {$warnings off}
@@ -416,11 +430,58 @@
   {$endif}
 {$endif}
 
+function md5sum(const source:string;const isfile:boolean):md5str;
 
+var f         : file;
+    context   : THashContext;
+    digest    : TMD5Digest;
+    StrDigest : md5str;
+    l         : longint;
+    n         : word;
+    w         : byte;
+    err       : integer;
+    md5bufp   : ^md5buf;
+
+begin
+  md5sum:='';
+  New(md5bufp);
+  MD5Init(context);
+  if isfile then
+  begin
+    w:=FileMode;
+    fm_ro;
+    assign(f,source);    
+    reset(f,1);
+    err:=IOResult;
+    FileMode:=w;
+    if err<>0 then exit;
+    l:=FileSize(f);
+    if IOResult<>0 then exit;
+    while (err=0) and (l>0) do
+    begin
+      blockread(f,md5bufp^,SizeOf(md5buf),n);
+      err:=IOResult;
+      dec(l,n);
+      MD5Update(context,md5bufp,n);
+    end;
+    close(f);
+    if IOResult=0 then;
+    if err<>0 then exit;
+  end
+  else begin
+    n:=length(source);
+    move(source,md5bufp^,n);
+    MD5Update(context,md5bufp,n);
+  end;
+  MD5Final(context,digest);
+  Dispose(md5bufp);
+  StrDigest:='';
+  for n:=0 to 15 do StrDigest:=StrDigest+hex(digest[n],2);
+  md5sum:=StrDigest;
+end;
 
 {$ifdef BIT32}
 
-
 {********* 32 bit code *********}
 
 {---------------------------------------------------------------------------}
@@ -875,6 +936,12 @@
 end.
 {
   $Log: md5.pas,v $
+  Revision 1.3  2006/03/30 07:21:09  mw
+  MW: - Verlagerung von md5sum() um es bitbreitenunabhängig anzusprechen.
+
+  Revision 1.2  2006/03/30 07:11:45  mw
+  MY: - Neue Funktion md5sum zur leichteren Berechnung einer MD5-Summe
+
   Revision 1.1  2006/02/25 12:42:48  mw
   MW: - Die Liste der Mail- und News-Server SERVERS.DAT wird jetzt
         automatisch aktualiert, sofern der Benutzer die Datei nicht
Index: freexp/servers.inc
===================================================================
RCS file: /server/cvs/freexp/servers.inc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- freexp/servers.inc	1 Mar 2006 14:23:54 -0000	1.4
+++ freexp/servers.inc	30 Mar 2006 10:21:39 -0000	1.5
@@ -6,7 +6,7 @@
 { Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der }
 { Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html.   }
 { --------------------------------------------------------------- }
-{ $Id: servers.inc,v 1.4 2006/03/01 14:23:54 mw Exp $ }
+{ $Id: servers.inc,v 1.5 2006/03/30 10:21:39 mw Exp $ }
 const oldfile=9;
       oldfiles:array [1..oldfile] of string[32]=(
         '83683051cc566c6d63aa0e6306d98290',     {Rev.: 1.1.2.1}
@@ -19,9 +19,12 @@
         'a8a639ee38fbba9b5c8d77f9007801fd',     {Rev.: 1.5 und 1.4.2.1}
         '8f6f37568b7171927524d061493d5b9f'      {Rev.: 1.6 und 1.4.2.2}
       );
-{Aktuelle Rev 1.7 und 1.4.2.3: b1a28ca0d6ce824d549c0b8f696e0c11 (Branch 3.40 und Main)}
+{Aktuelle Rev 1.7 und 1.4.2.3: c5d0efb5d1310122f5952bfc10b2b54a (Branch 3.40 und Main)}
 {
   $Log: servers.inc,v $
+  Revision 1.5  2006/03/30 10:21:39  mw
+  MW: - fehlerhafte neue MD5-Summe ersetzt.
+
   Revision 1.4  2006/03/01 14:23:54  mw
   MW: - Aufnahme der neuen Servers.dat
 
Index: freexp/servers.pas
===================================================================
RCS file: /server/cvs/freexp/servers.pas,v
retrieving revision 1.4
retrieving revision 1.7
diff -u -r1.4 -r1.7
--- freexp/servers.pas	25 Feb 2006 21:16:50 -0000	1.4
+++ freexp/servers.pas	30 Mar 2006 07:30:07 -0000	1.7
@@ -6,7 +6,7 @@
 { Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der }
 { Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html.   }
 { --------------------------------------------------------------- }
-{ $Id: servers.pas,v 1.4 2006/02/25 21:16:50 mw Exp $ }
+{ $Id: servers.pas,v 1.7 2006/03/30 07:30:07 mw Exp $ }
 
 {$I XPDEFINE.INC }
 {$O+,F+}
@@ -18,16 +18,11 @@
 
 implementation
 
-uses xp0,fileio,typeform,hash,md5;
+uses xp0,fileio,typeform,md5;
 
 procedure renew_Servers;
 
-var f,g:text;
-    Digest: TMD5Digest;
-    StrDigest: string[32];
-    buf: array [1..512] of byte;
-    Err: word;
-    i:byte;
+var f,g:text;           
     t:string;
 
 const servers:string='SERVERS.DAT';
@@ -39,48 +34,11 @@
     function outdated(f:string):boolean;
 
     var i:integer;
-
-  function Int2Hex (x : byte):String;
-  const
-    { Zeichensatz der Hexadezimalzahlen }
-    cs : Array [0..15] of Char = '0123456789ABCDEF';
-    { Werte, bis zum naechsten Stellensprung }
-    te : Array [1..2] of Longint = (16, 1);
-  var 
-    h    : String[2];  { String, der zurueckgegeben wird }
-    hilf : Byte;       { Hilfsvariable } 
-    i    : Integer;    { Zaehler fuer FOR-Schleife } 
-  begin 
-    { String initalisieren (loeschen) } 
-    h    := ''; 
-    { Wiederhole die Schleife 8 mal } 
-    for i := 1 to 2 do begin
-      { Teile den uebergebenen Wert durch den i. Eintrag in der 
-        Wertetabelle te und uebergebe das Ergebniss an hilf } 
-      hilf := x div te[i]; 
-      { Addiere das Zeichen, den h wertmaessig angibt zu dem 
-        String, der spaeter ausgegeben wird } 
-      h := h + cs[hilf]; 
-      { Ziehe den Wert hilf mal dem i. Eintrag in der Wertetabelle 
-        von x ab } 
-      x := x - te[i] * hilf; 
-    end; 
-    { Uebergebe den String h an die Funktion Int2Hex } 
-    Int2Hex := h;
-  end;
+        StrDigest: string[32];
 
     begin
-      Err:=0;
-
       {MD5-Summe der SERVERS.DAT berechnen}
-
-      MD5File(f,Digest,buf,sizeof(buf),Err);
-
-      {und in leichter vergleichbare Stringentsprechnung umwandeln}
-
-      StrDigest:='';
-      for i:=0 to 15 do StrDigest:=StrDigest+Int2Hex(Digest[i]);
-
+      StrDigest:=md5sum(servers,true);
       {MD5-Summe gegen alle alten SERVERS.DAT vergleichen}
       outdated:=false;
       for i:=1 to oldfile do
@@ -124,18 +82,20 @@
 end.
 {
   $Log: servers.pas,v $
-  Revision 1.4  2006/02/25 21:16:50  mw
-  MW: - Vergessene Stringaddition.
+  Revision 1.7  2006/03/30 07:30:07  mw
+  MW: - Vergessener Debugcode entfernt.
+
+  Revision 1.6  2006/03/30 07:17:45  mw
+  MW: - Kosmetikkorrektur
+
+  Revision 1.5  2006/03/30 07:12:58  mw
+  MW: - Vereinfachung der SERVERS-Unit durch Benutzung von md5.md5sum()
+        und damit Weglassen allen doppelt aufgeführten Codes.
 
   Revision 1.3  2006/02/25 18:25:52  mw
   MW: - Bugfixing von Servers.dat : Es wurde eine leere Servers.dat erzeugt,
         wenn keine Servers.dat existierte.
 
-      - Servers.dat kann im Overlay bleiben.
-
-  Revision 1.2  2006/02/25 16:35:02  mw
-  MW: - Servers-Unit darf nicht im Overlay sein.
-
   Revision 1.1  2006/02/25 12:42:48  mw
   MW: - Die Liste der Mail- und News-Server SERVERS.DAT wird jetzt
         automatisch aktualiert, sofern der Benutzer die Datei nicht



Mehr Informationen über die CVS-List Mailingliste