<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.computercraft.info/wiki/index.php?action=history&amp;feed=atom&amp;title=User%3AMinozake</id>
		<title>User:Minozake - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://www.computercraft.info/wiki/index.php?action=history&amp;feed=atom&amp;title=User%3AMinozake"/>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;action=history"/>
		<updated>2026-07-11T22:02:33Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1520&amp;oldid=prev</id>
		<title>Minozake: /* Termination catch for infinite loop daemons */</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1520&amp;oldid=prev"/>
				<updated>2012-05-12T20:03:57Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Termination catch for infinite loop daemons&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:03, 12 May 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It works by parallelizing both functions and waiting for one of them to exit.&amp;#160; When one exits, the program exits.&amp;#160; Since it is impossible for the loop to exit, it rests on catching the terminate event.&amp;#160; You could also easily modify this to take a keypress event instead if that is what you prefer, but that will be an exercise left up to the reader.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It works by parallelizing both functions and waiting for one of them to exit.&amp;#160; When one &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;function &lt;/ins&gt;exits, the program exits.&amp;#160; Since it is impossible for the loop to exit, it rests on catching the terminate event&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, which is already blocking until the event is caught&lt;/ins&gt;.&amp;#160; You could also easily modify this to take a keypress event instead if that is what you prefer, but that will be an exercise left up to the reader.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example for use would be a GPS daemon.&amp;#160; Unfortunately, a GPS host computer at startup that just has `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` is prone to failures due to timing problems or thunderstorms since they depend on at least 4 other computers to get up and running properly, and it will also be a problem for entire networks that base their hosting off of 4 main computers.&amp;#160; A workaround is to hardcode all of the computers, but that requires manual or more complex auto setups.&amp;#160; Running `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` in a startup infinite loop is a fix, but it also blocks all other operation of the computer, especially if trying to debug.&amp;#160; Adding the termination catch so that the script is safe to run on startup is recommended and optimal.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example for use would be a GPS daemon.&amp;#160; Unfortunately, a GPS host computer at startup that just has `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` is prone to failures due to timing problems or thunderstorms since they depend on at least 4 other computers to get up and running properly, and it will also be a problem for entire networks that base their hosting off of 4 main computers.&amp;#160; A workaround is to hardcode all of the computers, but that requires manual or more complex auto setups.&amp;#160; Running `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` in a startup infinite loop is a fix, but it also blocks all other operation of the computer, especially if trying to debug.&amp;#160; Adding the termination catch so that the script is safe to run on startup is recommended and optimal.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I will leave it as an exercise to the reader to figure out how to make this into a flexible script and make it loadable as an API.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I will leave it as an exercise to the reader to figure out how to make this into a flexible script and make it loadable as an API.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ccraft_wiki-mw_:diff:version:1.11a:oldid:1519:newid:1520 --&gt;
&lt;/table&gt;</summary>
		<author><name>Minozake</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1519&amp;oldid=prev</id>
		<title>Minozake: /* Termination catch for infinite loop daemons */</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1519&amp;oldid=prev"/>
				<updated>2012-05-12T20:03:02Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Termination catch for infinite loop daemons&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 20:03, 12 May 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;parallel.waitForAny(doPullEvent, doRunProg)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;parallel.waitForAny(doPullEvent, doRunProg)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It works by parallelizing both functions and waiting for one of them to exit.&amp;#160; When one exits, the program exits.&amp;#160; Since it is impossible for the loop to exit, it rests on catching the terminate event.&amp;#160; You could also easily modify this to take a keypress event instead if that is what you prefer, but that will be an exercise left up to the reader.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example for use would be a GPS daemon.&amp;#160; Unfortunately, a GPS host computer at startup that just has `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` is prone to failures due to timing problems or thunderstorms since they depend on at least 4 other computers to get up and running properly, and it will also be a problem for entire networks that base their hosting off of 4 main computers.&amp;#160; A workaround is to hardcode all of the computers, but that requires manual or more complex auto setups.&amp;#160; Running `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` in a startup infinite loop is a fix, but it also blocks all other operation of the computer, especially if trying to debug.&amp;#160; Adding the termination catch so that the script is safe to run on startup is recommended and optimal.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An example for use would be a GPS daemon.&amp;#160; Unfortunately, a GPS host computer at startup that just has `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` is prone to failures due to timing problems or thunderstorms since they depend on at least 4 other computers to get up and running properly, and it will also be a problem for entire networks that base their hosting off of 4 main computers.&amp;#160; A workaround is to hardcode all of the computers, but that requires manual or more complex auto setups.&amp;#160; Running `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` in a startup infinite loop is a fix, but it also blocks all other operation of the computer, especially if trying to debug.&amp;#160; Adding the termination catch so that the script is safe to run on startup is recommended and optimal.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I will leave it as an exercise to the reader to figure out how to make this into a flexible script and make it loadable as an API.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I will leave it as an exercise to the reader to figure out how to make this into a flexible script and make it loadable as an API.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key ccraft_wiki-mw_:diff:version:1.11a:oldid:1518:newid:1519 --&gt;
&lt;/table&gt;</summary>
		<author><name>Minozake</name></author>	</entry>

	<entry>
		<id>https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1518&amp;oldid=prev</id>
		<title>Minozake: Added safe terminate code</title>
		<link rel="alternate" type="text/html" href="https://www.computercraft.info/wiki/index.php?title=User:Minozake&amp;diff=1518&amp;oldid=prev"/>
				<updated>2012-05-12T19:30:12Z</updated>
		
		<summary type="html">&lt;p&gt;Added safe terminate code&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Miscellaneous thingies ==&lt;br /&gt;
&lt;br /&gt;
So, I'm using this to post miscellaneous code snippets for other people to use until I find a wiki page for it.&lt;br /&gt;
&lt;br /&gt;
= Termination catch for infinite loop daemons =&lt;br /&gt;
&lt;br /&gt;
So, let's say you want the source of a program in the form of&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
while true do&lt;br /&gt;
    shell.run(&amp;quot;prog&amp;quot;, &amp;quot;arg1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's all fine and good, except for a huge potential problem.  If you want to terminate it, you will just restart the program being run in the loop.  For computers with the program in their startup, it will require the computer be removed and replaced, and that will destroy the contents saved onto its disk.  That's where more complex code comes in handy.  The code follows the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function doPullEvent ()&lt;br /&gt;
    os.pullEventRaw(&amp;quot;Terminate&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Terminate caught.  Exiting.&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function doRunProg ()&lt;br /&gt;
    while true do&lt;br /&gt;
        shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
parallel.waitForAny(doPullEvent, doRunProg)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example for use would be a GPS daemon.  Unfortunately, a GPS host computer at startup that just has `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` is prone to failures due to timing problems or thunderstorms since they depend on at least 4 other computers to get up and running properly, and it will also be a problem for entire networks that base their hosting off of 4 main computers.  A workaround is to hardcode all of the computers, but that requires manual or more complex auto setups.  Running `shell.run(&amp;quot;gps&amp;quot;, &amp;quot;host&amp;quot;)` in a startup infinite loop is a fix, but it also blocks all other operation of the computer, especially if trying to debug.  Adding the termination catch so that the script is safe to run on startup is recommended and optimal.&lt;br /&gt;
&lt;br /&gt;
I will leave it as an exercise to the reader to figure out how to make this into a flexible script and make it loadable as an API.&lt;/div&gt;</summary>
		<author><name>Minozake</name></author>	</entry>

	</feed>