% % watchdog cycle monitor for timing cycles % 0 !Watchdog %%% true !Initing _Watching Time.Now dup !Watching "s" Time.Diff _Watching &" (" ^ &")" &; "--> " log)( "Watchdog" text!conn % % check for updates to VM or Base system % empty !Watch.Stake _Arching.Vm { "___VmUpdates" } { "___BaseUpdates" } ifelse &"\___Fire\Bin\_watch" text ofsnap dup !Watch.File exec$ _Watch.Stake any? { % % watch file exists, is the stake more recent than ours % "_watch" text*bin _Watch.Stake eq$ { % % no updates % } { % % new updates, initiate needed type of updating % % report our updating % Time.Now dup !Watch.Stake Time.FullOrder text ^_Arching.ServLock _Arching.Vm { "___VmUpdates" } { "___BaseUpdates" } ifelse &"\Axu\" ofsnap ^ empty "Watch.Stake" sval "Watch.Type" sval exch write % % when the update occurs, the new _watch will overwrite the old one % in bin, the restart will occurs from a batch command file % _Watch.Type "watcht" log)( < |Restart % % run update batch command exiting fire, for deeper code/exe repairs % |Content % % copy directly, only affects content, not processing % |Repair % % non-configuration script repairs % |None % % no updates are necessary % _Watch.File "_watch" bintext copyfile > pop } ifelse } { % % % } ifelse