global-functions: $WaitForFile: use delay instead of iterations

This commit is contained in:
Christian Hesse 2023-02-02 11:05:16 +01:00
parent b794d98cbb
commit 978c03131a
2 changed files with 7 additions and 6 deletions

View file

@ -1213,20 +1213,21 @@
# wait for file to be available # wait for file to be available
:set WaitForFile do={ :set WaitForFile do={
:local FileName [ :tostr $1 ]; :local FileName [ :tostr $1 ];
:local Iter [ :tonum $2 ]; :local WaitTime [ :totime $2 ];
:global CleanFilePath; :global CleanFilePath;
:global EitherOr; :global EitherOr;
:set FileName [ $CleanFilePath $FileName ]; :set FileName [ $CleanFilePath $FileName ];
:local I 0; :local I 1;
:local Delay ([ :totime [ $EitherOr $WaitTime 2s ] ] / 20);
:while ([ :len [ /file/find where name=$FileName ] ] = 0) do={ :while ([ :len [ /file/find where name=$FileName ] ] = 0) do={
:if ($I > [ $EitherOr $Iter 20 ]) do={ :if ($I >= 20) do={
:return false; :return false;
} }
:delay 100ms; :delay $Delay;
:set I ($I + 1); :set I ($I + 1);
} }
:return true; :return true;

View file

@ -103,7 +103,7 @@ $WaitFullyConnected;
$LogPrintExit2 info $0 ("Running command: " . $Text) false; $LogPrintExit2 info $0 ("Running command: " . $Text) false;
:exec script=(":do {\n" . $Text . "\n} on-error={ :execute script=\":put\" file=" . $File . ".failed };" . \ :exec script=(":do {\n" . $Text . "\n} on-error={ :execute script=\":put\" file=" . $File . ".failed };" . \
":execute script=\":put\" file=" . $File . ".done") file=$File; ":execute script=\":put\" file=" . $File . ".done") file=$File;
:if ([ $WaitForFile ($File . ".done.txt") 200 ] = false) do={ :if ([ $WaitForFile ($File . ".done.txt") 20s ] = false) do={
:set State "The command did not finish, still running in background.\n\n"; :set State "The command did not finish, still running in background.\n\n";
} }
:if ([ :len [ /file/find where name=($File . ".failed.txt") ] ] > 0) do={ :if ([ :len [ /file/find where name=($File . ".failed.txt") ] ] > 0) do={