# HG changeset patch # User sheepluva # Date 1417234527 -3600 # Node ID 0cb20aa8877a2987d925c951270dbd1466874ec5 # Parent 3388822b391448edd2a997e59bf5fcc0e7372ed0 more fixing and allow pas2c to run tests. they will still fail though - engine does not exit with the specified exit codes, also data types are messed up diff -r 3388822b3914 -r 0cb20aa8877a hedgewars/pas2cRedo.pas --- a/hedgewars/pas2cRedo.pas Sat Nov 29 03:13:06 2014 +0100 +++ b/hedgewars/pas2cRedo.pas Sat Nov 29 05:15:27 2014 +0100 @@ -84,6 +84,7 @@ min, max:function:integer; assign, rewrite, rewrite_2, reset, reset_2, flush, BlockWrite, BlockRead, close : procedure; FileExists, DirectoryExists, eof : function : boolean; + ExtractFileDir : function : string; ExtractFileName : function : string; ParamCount : function : integer; diff -r 3388822b3914 -r 0cb20aa8877a hedgewars/uLandGenTemplateBased.pas --- a/hedgewars/uLandGenTemplateBased.pas Sat Nov 29 03:13:06 2014 +0100 +++ b/hedgewars/uLandGenTemplateBased.pas Sat Nov 29 05:15:27 2014 +0100 @@ -18,7 +18,7 @@ with Template do begin pa.Count:= BasePointsCount; - for i:= 0 to LongInt(pred(pa.Count)) do + for i:= 0 to pred(LongInt(pa.Count)) do begin pa.ar[i].x:= BasePoints^[i].x + LongInt(GetRandom(BasePoints^[i].w)); if pa.ar[i].x <> NTPX then @@ -174,7 +174,7 @@ // now go through all other segments fp:= pa.ar[0]; - for i:= 0 to pa.Count - 2 do + for i:= 0 to LongInt(pa.Count) - 2 do if pa.ar[i].x = NTPX then fp:= pa.ar[i + 1] else if (i <> si) then @@ -210,7 +210,7 @@ end; // go through all points, including fill points - for i:= 0 to Pred(pa.Count + fillPointsCount) do + for i:= 0 to Pred(LongInt(pa.Count + fillPointsCount)) do // if this point isn't on current segment if (si <> i) and (i <> si + 1) and (pa.ar[i].x <> NTPX) then begin @@ -294,7 +294,7 @@ newPoint.y:= 0; i:= 0; - while i < pa.Count - 1 do + while i < LongInt(pa.Count) - 1 do begin FindPoint(i, fillPointsCount, newPoint, pa); diff -r 3388822b3914 -r 0cb20aa8877a hedgewars/uPhysFSLayer.pas --- a/hedgewars/uPhysFSLayer.pas Sat Nov 29 03:13:06 2014 +0100 +++ b/hedgewars/uPhysFSLayer.pas Sat Nov 29 05:15:27 2014 +0100 @@ -179,13 +179,11 @@ // need access to teams and frontend configs (for bindings) pfsMountAtRoot(UserPathPrefix); - {$IFNDEF PAS2C} if cTestLua then begin - pfsMountAtRoot(ExtractFileDir(cScriptName)); + pfsMountAtRoot(ansistring(ExtractFileDir(cScriptName))); cScriptName := ExtractFileName(cScriptName); end; - {$ENDIF} end; procedure freeModule; diff -r 3388822b3914 -r 0cb20aa8877a project_files/hwc/rtl/SysUtils.h --- a/project_files/hwc/rtl/SysUtils.h Sat Nov 29 03:13:06 2014 +0100 +++ b/project_files/hwc/rtl/SysUtils.h Sat Nov 29 05:15:27 2014 +0100 @@ -31,6 +31,9 @@ #define StrToInt fpcrtl_strToInt #define strToInt fpcrtl_strToInt +string255 fpcrtl_extractFileDir(string255 f); +#define fpcrtl_ExtractFileDir fpcrtl_extractFileDir + string255 fpcrtl_extractFileName(string255 f); #define fpcrtl_ExtractFileName fpcrtl_extractFileName diff -r 3388822b3914 -r 0cb20aa8877a project_files/hwc/rtl/sysutils.c --- a/project_files/hwc/rtl/sysutils.c Sat Nov 29 03:13:06 2014 +0100 +++ b/project_files/hwc/rtl/sysutils.c Sat Nov 29 05:15:27 2014 +0100 @@ -131,6 +131,24 @@ return atoi(s.str); } +string255 fpcrtl_extractFileDir(string255 f) +{ + const char sep[] = {'\\', '/', ':'}; + LongInt i,j; + + i = f.len - 1; + while(i >= 0){ + for(j = 0; j < sizeof(sep); j++){ + if(f.str[i] == sep[j]){ + goto FPCRTL_EXTRACTFILEDIR_END; + } + } + i--; + } +FPCRTL_EXTRACTFILEDIR_END: + return fpcrtl_copy(f, 1, i); +} + //function ExtractFileName(const FileName: string): string; //var // i : longint;