From fdfcf0180513e7bb98e8cb768b0c74b9830515c0 Mon Sep 17 00:00:00 2001 From: pierre Date: Wed, 9 Jun 1999 11:57:28 +0000 Subject: [PATCH] * fix branch changes merged --- compiler/utils/README | 9 +++ compiler/utils/msgdif.pp | 165 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 162 insertions(+), 12 deletions(-) diff --git a/compiler/utils/README b/compiler/utils/README index 96084492aa..ab7a13eefa 100644 --- a/compiler/utils/README +++ b/compiler/utils/README @@ -9,3 +9,12 @@ nasmconv : Convert a Nasm insns.dat to i386tab.inc so it can be used with the compiler makecfg : This script will make the samplecfg for linux installations + +msgdif : analyzes the differences between two msg files + msgdif errore.msg errord.msg + will print out new error msg, removed old ones + and will create a new file new.msg that will + contain the new error messages (supposing TeX comment is after + the message line itself) + removed messages are prepended by "%%% " + (they can be useful in case on error enum renaming !) diff --git a/compiler/utils/msgdif.pp b/compiler/utils/msgdif.pp index 9237271fcb..b711a7c327 100644 --- a/compiler/utils/msgdif.pp +++ b/compiler/utils/msgdif.pp @@ -16,18 +16,25 @@ Program messagedif; Type - TEnum = String[40]; + TEnum = String; + TText = String; + PMsg = ^TMsg; TMsg = Record Line : Longint; enum : TEnum; + text : TText; Next,Prev : PMsg; + FileNext, + Equivalent : PMsg; end; Var OrgFileName,DiffFileName : String; OrgRoot,DiffRoot : PMsg; + OrgFirst,DiffFirst : PMsg; + Last : PMsg; -Function NewMsg (Var RM : PMsg; L : Longint; Const E : TEnum) : PMsg; +Function NewMsg (Var RM : PMsg; L : Longint; Const E : TEnum;Const T : TText) : PMsg; Var P,R : PMsg; @@ -37,9 +44,15 @@ begin with P^ do begin Line:=L; + Text:=T; enum:=E; next:=Nil; prev:=Nil; + filenext:=nil; + equivalent:=nil; + if assigned(last) then + last^.FileNext:=P; + last:=P; end; R:=RM; While (R<>Nil) and (R^.enumNil) and (PDiff<>Nil) do begin // Writeln (POrg^.enum,'<=>',PDiff^.Enum); @@ -131,8 +149,11 @@ begin end else If POrg^.enum=PDiff^.Enum then begin + inc(count); + POrg^.Equivalent:=PDiff; + PDiff^.Equivalent:=POrg; POrg:=POrg^.Next; - PDiff:=PDiff^.Next + PDiff:=PDiff^.Next; end else begin @@ -150,20 +171,140 @@ begin NotFound(False,PDiff); PDiff:=PDiff^.Next; end; + Writeln(count,' messages found in both files'); end; +procedure WriteReorderedFile(FileName : string;orgnext,diffnext : PMsg); + var t,t2,t3 : text; + i,i2,i3 : longint; + s,s3 : string; + CurrentMsg : PMsg; + nextdiffkept : pmsg; + begin + Assign(t,FileName); + Rewrite(t); + Writeln(t,'%%% Reordering of ',DiffFileName,' respective to ',OrgFileName); + Writeln(t,'%%% Contains all comments from ',DiffFileName); + Assign(t2,DiffFileName); + Reset(t2); + Assign(t3,OrgFileName); + Reset(t3); + i:=2;i2:=0;i3:=0; + s:='';s3:=''; + nextdiffkept:=diffnext; + while assigned(nextdiffkept) and (nextdiffkept^.equivalent=nil) do + nextdiffkept:=nextdiffkept^.filenext; + While not eof(t2) do + begin + while assigned(orgnext) and assigned(nextdiffkept) and + (orgnext^.enum<>nextdiffkept^.enum) and not(eof(t3)) do + begin + { Insert a new error msg with the english comments } + while i3'') and (s3[1] in ['#','%']) do + begin + writeln(t,s3); + inc(i); + readln(t3,s3); + inc(i3); + end; + Writeln('New error ',orgnext^.enum,' added'); + orgnext:=orgnext^.filenext; + end; + if s='' then + begin + readln(t2,s); + inc(i2); + end; + if assigned(diffnext) and (i2=diffnext^.line) then + begin + if assigned(diffnext^.Equivalent) then + begin + if diffnext^.equivalent<>orgnext then + Writeln('Problem inside WriteReorderedFile'); + Writeln(t,s); + s:=''; + inc(i); + readln(t2,s); + inc(i2); + while (s<>'') and (s[1] in ['#','%']) do + begin + writeln(t,s); + inc(i); + readln(t2,s); + inc(i2); + end; + if diffnext^.Equivalent^.Text=diffnext^.Text then + Writeln(diffnext^.Enum,': ',DiffFileName,'(',i2,') not translated'); + Diffnext:=Diffnext^.FileNext; + nextdiffkept:=diffnext; + while assigned(nextdiffkept) and (nextdiffkept^.equivalent=nil) do + nextdiffkept:=nextdiffkept^.filenext; + Orgnext:=orgnext^.filenext; + end + else + begin + { Skip removed enum in errore.msg} + { maybe a renaming of an enum !} + Writeln(diffnext^.enum,' commented out'); + Writeln(t,'%%% ',s); + inc(i); + readln(t2,s); + inc(i2); + Diffnext:=Diffnext^.FileNext; + nextdiffkept:=diffnext; + while assigned(nextdiffkept) and (nextdiffkept^.equivalent=nil) do + nextdiffkept:=nextdiffkept^.filenext; + if assigned(diffnext) then + while (i2