diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | docs/classes/bitflags.html | 2 | ||||
-rw-r--r-- | docs/examples/compat.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/flag_debugging.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/password_input.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/read.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/readline.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/spinner.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/spiral_snake.lua.html | 2 | ||||
-rw-r--r-- | docs/examples/terminalsize.lua.html | 2 | ||||
-rw-r--r-- | docs/index.html | 2 | ||||
-rw-r--r-- | docs/modules/system.html | 55 | ||||
-rw-r--r-- | docs/topics/01-introduction.md.html | 2 | ||||
-rw-r--r-- | docs/topics/02-development.md.html | 2 | ||||
-rw-r--r-- | docs/topics/03-terminal.md.html | 4 | ||||
-rw-r--r-- | docs/topics/CHANGELOG.md.html | 15 | ||||
-rw-r--r-- | docs/topics/LICENSE.md.html | 2 | ||||
-rw-r--r-- | rockspecs/luasystem-0.6.0-1.rockspec | 85 | ||||
-rw-r--r-- | src/core.c | 2 |
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>. | ||
510 | Even if the file descriptors are unique, they still might point to the same | ||
511 | file description, and hence share settings like <code>O_NONBLOCK</code>. This means that | ||
512 | if one of them is set to non-blocking, the other will be as well. This can | ||
513 | lead to unexpected behavior.</p> | ||
514 | |||
515 | <p>This function is used to detach <code>stdout</code> and <code>stderr</code> from the original | ||
516 | file descriptions, and create new file descriptions for them. This allows | ||
517 | independent control of flags (e.g., <code>O_NONBLOCK</code>) on <code>stdout</code> and <code>stderr</code>, | ||
518 | avoiding 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>"timeout"</code> if the timeout was reached.</li> | 864 | error message when the timeout was reached (<code>"timeout"</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). |
992 | Check <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 | 1038 | sys.<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) |
997 | sys.<span class="function-name">setnonblock</span>(<span class="global">io</span>.stdin, <span class="keyword">true</span>) | 1042 | sys.<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) |
199 | sys.<span class="function-name">tcsetattr</span>(<span class="global">io</span>.stdin, sys.TCSANOW, { | 201 | sys.<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 @@ | |||
1 | local package_name = "luasystem" | ||
2 | local package_version = "0.6.0" | ||
3 | local rockspec_revision = "1" | ||
4 | local github_account_name = "lunarmodules" | ||
5 | local github_repo_name = "luasystem" | ||
6 | |||
7 | |||
8 | package = package_name | ||
9 | version = package_version.."-"..rockspec_revision | ||
10 | |||
11 | source = { | ||
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 | |||
17 | description = { | ||
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 | |||
26 | dependencies = { | ||
27 | 'lua >= 5.1', | ||
28 | } | ||
29 | |||
30 | local 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 | } | ||
71 | end | ||
72 | |||
73 | build = { | ||
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 | } | ||
@@ -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) |