aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--docs/classes/bitflags.html2
-rw-r--r--docs/examples/compat.lua.html2
-rw-r--r--docs/examples/flag_debugging.lua.html2
-rw-r--r--docs/examples/password_input.lua.html2
-rw-r--r--docs/examples/read.lua.html2
-rw-r--r--docs/examples/readline.lua.html2
-rw-r--r--docs/examples/spinner.lua.html2
-rw-r--r--docs/examples/spiral_snake.lua.html2
-rw-r--r--docs/examples/terminalsize.lua.html2
-rw-r--r--docs/index.html2
-rw-r--r--docs/modules/system.html55
-rw-r--r--docs/topics/01-introduction.md.html2
-rw-r--r--docs/topics/02-development.md.html2
-rw-r--r--docs/topics/03-terminal.md.html4
-rw-r--r--docs/topics/CHANGELOG.md.html15
-rw-r--r--docs/topics/LICENSE.md.html2
-rw-r--r--rockspecs/luasystem-0.6.0-1.rockspec85
-rw-r--r--src/core.c2
19 files changed, 165 insertions, 24 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c617db5..28e7272 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,7 +27,7 @@ The scope of what is covered by the version number excludes:
27 27
28## Version history 28## Version history
29 29
30### version 0.6.0, unreleased 30### version 0.6.0, released 10-Apr-2025
31 31
32- Fix: when sleep returns an error, pass that on in `readkey`. 32- Fix: when sleep returns an error, pass that on in `readkey`.
33- Feat: added `detachfds` which will create separate file descriptions for `stdout` 33- Feat: added `detachfds` which will create separate file descriptions for `stdout`
diff --git a/docs/classes/bitflags.html b/docs/classes/bitflags.html
index 647cc62..f7d2114 100644
--- a/docs/classes/bitflags.html
+++ b/docs/classes/bitflags.html
@@ -298,7 +298,7 @@ return <code>false</code> if the flags are checked.
298</div> <!-- id="main" --> 298</div> <!-- id="main" -->
299<div id="about"> 299<div id="about">
300<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 300<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
301<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 301<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
302</div> <!-- id="about" --> 302</div> <!-- id="about" -->
303</div> <!-- id="container" --> 303</div> <!-- id="container" -->
304</body> 304</body>
diff --git a/docs/examples/compat.lua.html b/docs/examples/compat.lua.html
index e421044..dc42560 100644
--- a/docs/examples/compat.lua.html
+++ b/docs/examples/compat.lua.html
@@ -112,7 +112,7 @@
112</div> <!-- id="main" --> 112</div> <!-- id="main" -->
113<div id="about"> 113<div id="about">
114<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 114<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
115<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 115<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
116</div> <!-- id="about" --> 116</div> <!-- id="about" -->
117</div> <!-- id="container" --> 117</div> <!-- id="container" -->
118</body> 118</body>
diff --git a/docs/examples/flag_debugging.lua.html b/docs/examples/flag_debugging.lua.html
index e8a75e3..65614c6 100644
--- a/docs/examples/flag_debugging.lua.html
+++ b/docs/examples/flag_debugging.lua.html
@@ -80,7 +80,7 @@
80</div> <!-- id="main" --> 80</div> <!-- id="main" -->
81<div id="about"> 81<div id="about">
82<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 82<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
83<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 83<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
84</div> <!-- id="about" --> 84</div> <!-- id="about" -->
85</div> <!-- id="container" --> 85</div> <!-- id="container" -->
86</body> 86</body>
diff --git a/docs/examples/password_input.lua.html b/docs/examples/password_input.lua.html
index a5eac4d..283c4f0 100644
--- a/docs/examples/password_input.lua.html
+++ b/docs/examples/password_input.lua.html
@@ -132,7 +132,7 @@ useful for reading secrets from the user.
132</div> <!-- id="main" --> 132</div> <!-- id="main" -->
133<div id="about"> 133<div id="about">
134<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 134<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
135<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 135<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
136</div> <!-- id="about" --> 136</div> <!-- id="about" -->
137</div> <!-- id="container" --> 137</div> <!-- id="container" -->
138</body> 138</body>
diff --git a/docs/examples/read.lua.html b/docs/examples/read.lua.html
index 3b53a8b..7dd8087 100644
--- a/docs/examples/read.lua.html
+++ b/docs/examples/read.lua.html
@@ -143,7 +143,7 @@ sys.<span class="function-name">setnonblock</span>(<span class="global">io</span
143</div> <!-- id="main" --> 143</div> <!-- id="main" -->
144<div id="about"> 144<div id="about">
145<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 145<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
146<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 146<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
147</div> <!-- id="about" --> 147</div> <!-- id="about" -->
148</div> <!-- id="container" --> 148</div> <!-- id="container" -->
149</body> 149</body>
diff --git a/docs/examples/readline.lua.html b/docs/examples/readline.lua.html
index dd63721..45a9d9b 100644
--- a/docs/examples/readline.lua.html
+++ b/docs/examples/readline.lua.html
@@ -549,7 +549,7 @@ sys.<span class="function-name">setconsoleflags</span>(<span class="global">io</
549</div> <!-- id="main" --> 549</div> <!-- id="main" -->
550<div id="about"> 550<div id="about">
551<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 551<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
552<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 552<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
553</div> <!-- id="about" --> 553</div> <!-- id="about" -->
554</div> <!-- id="container" --> 554</div> <!-- id="container" -->
555</body> 555</body>
diff --git a/docs/examples/spinner.lua.html b/docs/examples/spinner.lua.html
index 99a1c91..ffa4ac9 100644
--- a/docs/examples/spinner.lua.html
+++ b/docs/examples/spinner.lua.html
@@ -137,7 +137,7 @@ sys.<span class="function-name">setnonblock</span>(<span class="global">io</span
137</div> <!-- id="main" --> 137</div> <!-- id="main" -->
138<div id="about"> 138<div id="about">
139<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 139<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
140<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 140<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
141</div> <!-- id="about" --> 141</div> <!-- id="about" -->
142</div> <!-- id="container" --> 142</div> <!-- id="container" -->
143</body> 143</body>
diff --git a/docs/examples/spiral_snake.lua.html b/docs/examples/spiral_snake.lua.html
index 7be16e8..e250f99 100644
--- a/docs/examples/spiral_snake.lua.html
+++ b/docs/examples/spiral_snake.lua.html
@@ -145,7 +145,7 @@ codes for moving the cursor around.
145</div> <!-- id="main" --> 145</div> <!-- id="main" -->
146<div id="about"> 146<div id="about">
147<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 147<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
148<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 148<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
149</div> <!-- id="about" --> 149</div> <!-- id="about" -->
150</div> <!-- id="container" --> 150</div> <!-- id="container" -->
151</body> 151</body>
diff --git a/docs/examples/terminalsize.lua.html b/docs/examples/terminalsize.lua.html
index 6a6a93e..9aa4cc5 100644
--- a/docs/examples/terminalsize.lua.html
+++ b/docs/examples/terminalsize.lua.html
@@ -110,7 +110,7 @@ sys.<span class="function-name">tcsetattr</span>(<span class="global">io</span>.
110</div> <!-- id="main" --> 110</div> <!-- id="main" -->
111<div id="about"> 111<div id="about">
112<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 112<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
113<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 113<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
114</div> <!-- id="about" --> 114</div> <!-- id="about" -->
115</div> <!-- id="container" --> 115</div> <!-- id="container" -->
116</body> 116</body>
diff --git a/docs/index.html b/docs/index.html
index 5d7b02f..bd3ad5c 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -142,7 +142,7 @@
142</div> <!-- id="main" --> 142</div> <!-- id="main" -->
143<div id="about"> 143<div id="about">
144<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 144<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
145<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 145<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
146</div> <!-- id="about" --> 146</div> <!-- id="about" -->
147</div> <!-- id="container" --> 147</div> <!-- id="container" -->
148</body> 148</body>
diff --git a/docs/modules/system.html b/docs/modules/system.html
index fa41458..28ccf5a 100644
--- a/docs/modules/system.html
+++ b/docs/modules/system.html
@@ -124,6 +124,10 @@
124 <td class="summary">Backs up terminal settings and restores them on application exit.</td> 124 <td class="summary">Backs up terminal settings and restores them on application exit.</td>
125 </tr> 125 </tr>
126 <tr> 126 <tr>
127 <td class="name" nowrap><a href="#detachfds">detachfds ()</a></td>
128 <td class="summary">Creates new file descriptions for <code>stdout</code> and <code>stderr</code>.</td>
129 </tr>
130 <tr>
127 <td class="name" nowrap><a href="#getconsolecp">getconsolecp ()</a></td> 131 <td class="name" nowrap><a href="#getconsolecp">getconsolecp ()</a></td>
128 <td class="summary">Gets the current console code page (Windows).</td> 132 <td class="summary">Gets the current console code page (Windows).</td>
129 </tr> 133 </tr>
@@ -498,6 +502,40 @@ sequences will be buffered internally and returned one byte at a time.
498 502
499</dd> 503</dd>
500 <dt> 504 <dt>
505 <a name = "detachfds"></a>
506 <strong>detachfds ()</strong>
507 </dt>
508 <dd>
509 Creates new file descriptions for <code>stdout</code> and <code>stderr</code>.
510Even if the file descriptors are unique, they still might point to the same
511file description, and hence share settings like <code>O_NONBLOCK</code>. This means that
512if one of them is set to non-blocking, the other will be as well. This can
513lead to unexpected behavior.</p>
514
515<p>This function is used to detach <code>stdout</code> and <code>stderr</code> from the original
516file descriptions, and create new file descriptions for them. This allows
517independent control of flags (e.g., <code>O_NONBLOCK</code>) on <code>stdout</code> and <code>stderr</code>,
518avoiding shared side effects.</p>
519
520<p>Does not modify <code>stdin</code> (fd 0), and does nothing on Windows.
521
522
523
524 <h3>Returns:</h3>
525 <ol>
526
527 boolean <code>true</code> on success, or throws an error on failure.
528 </ol>
529
530
531 <h3>See also:</h3>
532 <ul>
533 <a href="../modules/system.html#setnonblock">setnonblock</a>
534 </ul>
535
536
537</dd>
538 <dt>
501 <a name = "getconsolecp"></a> 539 <a name = "getconsolecp"></a>
502 <strong>getconsolecp ()</strong> 540 <strong>getconsolecp ()</strong>
503 </dt> 541 </dt>
@@ -632,6 +670,10 @@ for more information on the flags.
632 </ol> 670 </ol>
633 671
634 672
673 <h3>See also:</h3>
674 <ul>
675 <a href="../modules/system.html#setnonblock">setnonblock</a>
676 </ul>
635 677
636 678
637</dd> 679</dd>
@@ -801,7 +843,7 @@ system.<span class="function-name">listconsoleflags</span>(<span class="global">
801 </li> 843 </li>
802 <li><span class="parameter">fsleep</span> 844 <li><span class="parameter">fsleep</span>
803 <span class="types"><span class="type">function</span></span> 845 <span class="types"><span class="type">function</span></span>
804 the function to call for sleeping. 846 the function to call for sleeping; <code>ok, err = fsleep(secs)</code>
805 (<em>default</em> system.sleep) 847 (<em>default</em> system.sleep)
806 </li> 848 </li>
807 </ul> 849 </ul>
@@ -819,7 +861,7 @@ system.<span class="function-name">listconsoleflags</span>(<span class="global">
819 if no key was read</li> 861 if no key was read</li>
820 <li> 862 <li>
821 <span class="types"><a class="type" href="https://www.lua.org/manual/5.4/manual.html#6.4">string</a></span> 863 <span class="types"><a class="type" href="https://www.lua.org/manual/5.4/manual.html#6.4">string</a></span>
822 error message; <code>&quot;timeout&quot;</code> if the timeout was reached.</li> 864 error message when the timeout was reached (<code>&quot;timeout&quot;</code>), or if <a href="../modules/system.html#sleep">sleep</a> failed.</li>
823 </ol> 865 </ol>
824 866
825 867
@@ -947,6 +989,7 @@ system.<span class="function-name">listconsoleflags</span>(<span class="global">
947 </dt> 989 </dt>
948 <dd> 990 <dd>
949 Enables or disables non-blocking mode for a file (Posix). 991 Enables or disables non-blocking mode for a file (Posix).
992Check <a href="../modules/system.html#detachfds">detachfds</a> in case there are shared file descriptions.
950 993
951 994
952 <h3>Parameters:</h3> 995 <h3>Parameters:</h3>
@@ -985,13 +1028,15 @@ system.<span class="function-name">listconsoleflags</span>(<span class="global">
985 1028
986 <h3>See also:</h3> 1029 <h3>See also:</h3>
987 <ul> 1030 <ul>
988 <a href="../modules/system.html#getnonblock">getnonblock</a> 1031 <li><a href="../modules/system.html#getnonblock">getnonblock</a></li>
1032 <li><a href="../modules/system.html#detachfds">detachfds</a></li>
989 </ul> 1033 </ul>
990 1034
991 <h3>Usage:</h3> 1035 <h3>Usage:</h3>
992 <ul> 1036 <ul>
993 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span>(<span class="string">'system'</span>) 1037 <pre class="example"><span class="keyword">local</span> sys = <span class="global">require</span>(<span class="string">'system'</span>)
994 1038sys.<span class="function-name">detachfds</span>() <span class="comment">-- detach stdout and stderr, so only stdin becomes non-blocking
1039</span>
995<span class="comment">-- set io.stdin to non-blocking mode 1040<span class="comment">-- set io.stdin to non-blocking mode
996</span><span class="keyword">local</span> old_setting = sys.<span class="function-name">getnonblock</span>(<span class="global">io</span>.stdin) 1041</span><span class="keyword">local</span> old_setting = sys.<span class="function-name">getnonblock</span>(<span class="global">io</span>.stdin)
997sys.<span class="function-name">setnonblock</span>(<span class="global">io</span>.stdin, <span class="keyword">true</span>) 1042sys.<span class="function-name">setnonblock</span>(<span class="global">io</span>.stdin, <span class="keyword">true</span>)
@@ -1422,7 +1467,7 @@ This function will sleep, without doing a busy-loop and wasting CPU cycles.
1422</div> <!-- id="main" --> 1467</div> <!-- id="main" -->
1423<div id="about"> 1468<div id="about">
1424<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 1469<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
1425<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 1470<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
1426</div> <!-- id="about" --> 1471</div> <!-- id="about" -->
1427</div> <!-- id="container" --> 1472</div> <!-- id="container" -->
1428</body> 1473</body>
diff --git a/docs/topics/01-introduction.md.html b/docs/topics/01-introduction.md.html
index f0f627d..f16d354 100644
--- a/docs/topics/01-introduction.md.html
+++ b/docs/topics/01-introduction.md.html
@@ -84,7 +84,7 @@ independence.</p>
84</div> <!-- id="main" --> 84</div> <!-- id="main" -->
85<div id="about"> 85<div id="about">
86<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 86<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
87<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 87<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
88</div> <!-- id="about" --> 88</div> <!-- id="about" -->
89</div> <!-- id="container" --> 89</div> <!-- id="container" -->
90</body> 90</body>
diff --git a/docs/topics/02-development.md.html b/docs/topics/02-development.md.html
index 315fa37..b83969b 100644
--- a/docs/topics/02-development.md.html
+++ b/docs/topics/02-development.md.html
@@ -84,7 +84,7 @@ pass locally, and do not rely on CI only.</p>
84</div> <!-- id="main" --> 84</div> <!-- id="main" -->
85<div id="about"> 85<div id="about">
86<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 86<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
87<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 87<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
88</div> <!-- id="about" --> 88</div> <!-- id="about" -->
89</div> <!-- id="container" --> 89</div> <!-- id="container" -->
90</body> 90</body>
diff --git a/docs/topics/03-terminal.md.html b/docs/topics/03-terminal.md.html
index 7ce28af..ebaa8bb 100644
--- a/docs/topics/03-terminal.md.html
+++ b/docs/topics/03-terminal.md.html
@@ -93,6 +93,7 @@ up both platforms to make it work.</p>
93 <li><a href="../modules/system.html#setconsoleflags">system.setconsoleflags</a> (Windows)</li> 93 <li><a href="../modules/system.html#setconsoleflags">system.setconsoleflags</a> (Windows)</li>
94 <li><a href="../modules/system.html#setconsolecp">system.setconsolecp</a> (Windows)</li> 94 <li><a href="../modules/system.html#setconsolecp">system.setconsolecp</a> (Windows)</li>
95 <li><a href="../modules/system.html#setconsoleoutputcp">system.setconsoleoutputcp</a> (Windows)</li> 95 <li><a href="../modules/system.html#setconsoleoutputcp">system.setconsoleoutputcp</a> (Windows)</li>
96 <li><a href="../modules/system.html#detachfds">system.detachfds</a> (Posix)</li>
96 <li><a href="../modules/system.html#setnonblock">system.setnonblock</a> (Posix)</li> 97 <li><a href="../modules/system.html#setnonblock">system.setnonblock</a> (Posix)</li>
97 <li><a href="../modules/system.html#tcsetattr">system.tcsetattr</a> (Posix)</li> 98 <li><a href="../modules/system.html#tcsetattr">system.tcsetattr</a> (Posix)</li>
98</ul> 99</ul>
@@ -195,6 +196,7 @@ also not being echoed to the terminal (independent of the echo settings used wit
195</span>sys.<span class="function-name">setconsoleflags</span>(<span class="global">io</span>.stdin, sys.<span class="function-name">getconsoleflags</span>(<span class="global">io</span>.stdin) - sys.CIF_ECHO_INPUT - sys.CIF_LINE_INPUT) 196</span>sys.<span class="function-name">setconsoleflags</span>(<span class="global">io</span>.stdin, sys.<span class="function-name">getconsoleflags</span>(<span class="global">io</span>.stdin) - sys.CIF_ECHO_INPUT - sys.CIF_LINE_INPUT)
196 197
197<span class="comment">-- setup Posix by disabling echo, canonical mode, and making non-blocking 198<span class="comment">-- setup Posix by disabling echo, canonical mode, and making non-blocking
199</span>sys.<span class="function-name">detachfds</span>() <span class="comment">-- ensure stdin/out/err have their own file descriptions
198</span><span class="keyword">local</span> of_attr = sys.<span class="function-name">tcgetattr</span>(<span class="global">io</span>.stdin) 200</span><span class="keyword">local</span> of_attr = sys.<span class="function-name">tcgetattr</span>(<span class="global">io</span>.stdin)
199sys.<span class="function-name">tcsetattr</span>(<span class="global">io</span>.stdin, sys.TCSANOW, { 201sys.<span class="function-name">tcsetattr</span>(<span class="global">io</span>.stdin, sys.TCSANOW, {
200 lflag = of_attr.lflag - sys.L_ICANON - sys.L_ECHO, 202 lflag = of_attr.lflag - sys.L_ICANON - sys.L_ECHO,
@@ -218,7 +220,7 @@ For an example see <a href="../examples/password_input.lua.html"><code>examples/
218</div> <!-- id="main" --> 220</div> <!-- id="main" -->
219<div id="about"> 221<div id="about">
220<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 222<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
221<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 223<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
222</div> <!-- id="about" --> 224</div> <!-- id="about" -->
223</div> <!-- id="container" --> 225</div> <!-- id="container" -->
224</body> 226</body>
diff --git a/docs/topics/CHANGELOG.md.html b/docs/topics/CHANGELOG.md.html
index fa2d706..796ae20 100644
--- a/docs/topics/CHANGELOG.md.html
+++ b/docs/topics/CHANGELOG.md.html
@@ -106,6 +106,15 @@
106<p><a name="Version_history"></a></p> 106<p><a name="Version_history"></a></p>
107<h2>Version history</h2> 107<h2>Version history</h2>
108 108
109<h3>version 0.6.0, released 10-Apr-2025</h3>
110
111<ul>
112 <li>Fix: when sleep returns an error, pass that on in <code>readkey</code>.</li>
113 <li>Feat: added <code>detachfds</code> which will create separate file descriptions for <code>stdout</code>
114 and <code>stderr</code> to ensure that related settings (eg. non-blocking flag) will not be shared
115 amongst those streams and <code>stdin</code>.</li>
116</ul>
117
109<h3>version 0.5.1, released 12-Mar-2025</h3> 118<h3>version 0.5.1, released 12-Mar-2025</h3>
110 119
111<ul> 120<ul>
@@ -120,14 +129,14 @@
120 <li>Feat: allow passing in a sleep function to <code>readkey</code> and <code>readansi</code></li> 129 <li>Feat: allow passing in a sleep function to <code>readkey</code> and <code>readansi</code></li>
121 <li>Fix: NetBSD fix compilation, undeclared directives</li> 130 <li>Fix: NetBSD fix compilation, undeclared directives</li>
122 <li>Refactor: random bytes; remove deprecated API usage on Windows, move to 131 <li>Refactor: random bytes; remove deprecated API usage on Windows, move to
123 binary api instead of /dev/urandom file on linux and bsd</li> 132 binary api instead of <code>/dev/urandom</code> file on linux and bsd</li>
124</ul> 133</ul>
125 134
126<h3>version 0.4.5, released 18-Dec-2024</h3> 135<h3>version 0.4.5, released 18-Dec-2024</h3>
127 136
128<ul> 137<ul>
129 <li>Fix: suppress a warning when building with clang</li> 138 <li>Fix: suppress a warning when building with clang</li>
130 <li>Fix: do not rely on luaconf.h to include limits.h, fixes builds with latest LuaJIT (#38).</li> 139 <li>Fix: do not rely on <code>luaconf.h</code> to include <code>limits.h</code>, fixes builds with latest LuaJIT (#38).</li>
131</ul> 140</ul>
132 141
133<h3>version 0.4.4, released 03-Sep-2024</h3> 142<h3>version 0.4.4, released 03-Sep-2024</h3>
@@ -199,7 +208,7 @@
199</div> <!-- id="main" --> 208</div> <!-- id="main" -->
200<div id="about"> 209<div id="about">
201<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 210<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
202<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 211<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
203</div> <!-- id="about" --> 212</div> <!-- id="about" -->
204</div> <!-- id="container" --> 213</div> <!-- id="container" -->
205</body> 214</body>
diff --git a/docs/topics/LICENSE.md.html b/docs/topics/LICENSE.md.html
index 612cdb9..b7f5ac1 100644
--- a/docs/topics/LICENSE.md.html
+++ b/docs/topics/LICENSE.md.html
@@ -94,7 +94,7 @@ SOFTWARE.</p>
94</div> <!-- id="main" --> 94</div> <!-- id="main" -->
95<div id="about"> 95<div id="about">
96<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i> 96<i>generated by <a href="http://github.com/lunarmodules/LDoc">LDoc 1.5.0</a></i>
97<i style="float:right;">Last updated 2025-03-12 15:17:50 </i> 97<i style="float:right;">Last updated 2025-04-10 10:12:11 </i>
98</div> <!-- id="about" --> 98</div> <!-- id="about" -->
99</div> <!-- id="container" --> 99</div> <!-- id="container" -->
100</body> 100</body>
diff --git a/rockspecs/luasystem-0.6.0-1.rockspec b/rockspecs/luasystem-0.6.0-1.rockspec
new file mode 100644
index 0000000..21c2dc0
--- /dev/null
+++ b/rockspecs/luasystem-0.6.0-1.rockspec
@@ -0,0 +1,85 @@
1local package_name = "luasystem"
2local package_version = "0.6.0"
3local rockspec_revision = "1"
4local github_account_name = "lunarmodules"
5local github_repo_name = "luasystem"
6
7
8package = package_name
9version = package_version.."-"..rockspec_revision
10
11source = {
12 url = "git+https://github.com/"..github_account_name.."/"..github_repo_name..".git",
13 branch = (package_version == "scm") and "master" or nil,
14 tag = (package_version ~= "scm") and "v"..package_version or nil,
15}
16
17description = {
18 summary = 'Platform independent system calls for Lua.',
19 detailed = [[
20 Adds a Lua API for making platform independent system calls.
21 ]],
22 license = 'MIT <http://opensource.org/licenses/MIT>',
23 homepage = "https://github.com/"..github_account_name.."/"..github_repo_name,
24}
25
26dependencies = {
27 'lua >= 5.1',
28}
29
30local function make_platform(plat)
31 local defines = {
32 linux = { },
33 unix = { },
34 macosx = { },
35 win32 = { "WINVER=0x0600", "_WIN32_WINNT=0x0600" },
36 mingw32 = { "WINVER=0x0600", "_WIN32_WINNT=0x0600" },
37 }
38 local libraries = {
39 linux = { "rt" },
40 unix = { },
41 macosx = { },
42 win32 = { "advapi32", "winmm", "bcrypt" },
43 mingw32 = { },
44 }
45 local libdirs = {
46 linux = nil,
47 unix = nil,
48 macosx = nil,
49 win32 = nil,
50 mingw32 = { },
51 }
52 return {
53 modules = {
54 ['system.core'] = {
55 sources = {
56 'src/core.c',
57 'src/compat.c',
58 'src/time.c',
59 'src/environment.c',
60 'src/random.c',
61 'src/term.c',
62 'src/bitflags.c',
63 'src/wcwidth.c',
64 },
65 defines = defines[plat],
66 libraries = libraries[plat],
67 libdirs = libdirs[plat],
68 },
69 },
70 }
71end
72
73build = {
74 type = 'builtin',
75 platforms = {
76 linux = make_platform('linux'),
77 unix = make_platform('unix'),
78 macosx = make_platform('macosx'),
79 win32 = make_platform('win32'),
80 mingw32 = make_platform('mingw32'),
81 },
82 modules = {
83 ['system.init'] = 'system/init.lua',
84 },
85}
diff --git a/src/core.c b/src/core.c
index b642074..1d23f8e 100644
--- a/src/core.c
+++ b/src/core.c
@@ -4,7 +4,7 @@
4#include <lua.h> 4#include <lua.h>
5#include <lauxlib.h> 5#include <lauxlib.h>
6 6
7#define LUASYSTEM_VERSION "LuaSystem 0.5.1" 7#define LUASYSTEM_VERSION "LuaSystem 0.6.0"
8 8
9#ifdef _WIN32 9#ifdef _WIN32
10#define LUAEXPORT __declspec(dllexport) 10#define LUAEXPORT __declspec(dllexport)