Issues with file:read hmmm

This commit is contained in:
Netscape Navigator 2019-06-05 08:18:22 -05:00
parent d1b94eeb29
commit 2454f1e83f
3 changed files with 93 additions and 3 deletions

View File

@ -4,7 +4,7 @@ Let's try and see if we can use bi-directional pipes in [Retro Forth](http://for
## Run Application
```
```bash
./pipes.retro
```

View File

@ -55,10 +55,56 @@
</style>
</head>
<body>
<span class='text'>#!/usr/bin/env&nbsp;retro</span><br>
<span class='text'></span><br>
<span class='text'>#&nbsp;Bi-Directional&nbsp;Pipes&nbsp;in&nbsp;Retro</span><br>
<span class='text'></span><br>
<span class='text'></span><br>
<span class='text'>##&nbsp;Configuration</span><br>
<span class='text'></span><br>
<span class='text'>Let's&nbsp;set&nbsp;some&nbsp;constants&nbsp;and&nbsp;a&nbsp;string&nbsp;template</span><br>
<span class='text'></span><br>
~~~<br>
<span class='string'>'Hello,_world!</span>&nbsp;s:puts&nbsp;<br>
<span class='string'>'23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='string'>'PORT</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;<br>
<span class='string'>'localhost</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='string'>'HOST</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;<br>
<span class='string'>'telnet_%s:%s</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='string'>'TEMPLATE</span>&nbsp;const&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'>And&nbsp;now&nbsp;that&nbsp;we&nbsp;have&nbsp;configurable&nbsp;variables,&nbsp;let's&nbsp;make&nbsp;a&nbsp;template&nbsp;of&nbsp;the&nbsp;shell&nbsp;command&nbsp;we&nbsp;need&nbsp;for&nbsp;`unix:popen`</span><br>
<span class='text'></span><br>
~~~<br>
PORT&nbsp;HOST&nbsp;TEMPLATE&nbsp;s:format&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'>We've&nbsp;now&nbsp;got&nbsp;a&nbsp;formatted&nbsp;string&nbsp;on&nbsp;the&nbsp;stack.&nbsp;Probably&nbsp;looks&nbsp;like&nbsp;`telnet&nbsp;materiamagica.com:4000`.&nbsp;Isn't&nbsp;RPN&nbsp;funny?</span><br>
<span class='text'></span><br>
<span class='text'>Let's&nbsp;save&nbsp;that&nbsp;for&nbsp;later:</span><br>
<span class='text'></span><br>
~~~<br>
<span class='string'>'SHELL_CMD</span>&nbsp;const&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'>##&nbsp;Prepare&nbsp;the&nbsp;Shell&nbsp;Command</span><br>
<span class='text'></span><br>
<span class='text'>Let's&nbsp;get&nbsp;a&nbsp;file&nbsp;handle:</span><br>
<span class='text'></span><br>
~~~<br>
SHELL_CMD&nbsp;file:R+&nbsp;unix:popen&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'>...and&nbsp;save&nbsp;it&nbsp;as&nbsp;`TELNET_FD`:</span><br>
<span class='text'></span><br>
~~~<br>
<span class='string'>'TELNET_FD</span>&nbsp;const&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'>##&nbsp;Is&nbsp;This&nbsp;Thing&nbsp;On?</span><br>
<span class='text'></span><br>
~~~<br>
TELNET_FD&nbsp;file:read&nbsp;s:put&nbsp;<br>
~~~<br>
<span class='text'></span><br>
<span class='text'></span><br>
<span class='text'>I&nbsp;don't&nbsp;have&nbsp;any&nbsp;more&nbsp;time&nbsp;for&nbsp;tonight&nbsp;to&nbsp;keep&nbsp;coding&nbsp;sorry.</span><br>
</body>
</html>

View File

@ -2,6 +2,50 @@
# Bi-Directional Pipes in Retro
## Configuration
Let's set some constants and a string template
~~~
'Hello,_world! s:put
'23 'PORT const
'localhost 'HOST const
'telnet_%s:%s 'TEMPLATE const
~~~
And now that we have configurable variables, let's make a template of the shell command we need for `unix:popen`
~~~
PORT HOST TEMPLATE s:format
~~~
We've now got a formatted string on the stack. Probably looks like `telnet materiamagica.com:4000`. Isn't RPN funny?
Let's save that for later:
~~~
'SHELL_CMD const
~~~
## Prepare the Shell Command
Let's get a file handle:
~~~
SHELL_CMD file:R+ unix:popen
~~~
...and save it as `TELNET_FD`:
~~~
'TELNET_FD const
~~~
## Is This Thing On?
~~~
TELNET_FD file:read s:put
~~~
I don't have any more time for tonight to keep coding sorry.