new example: using pipes and curl to make network requests
FossilOrigin-Name: 4ee196650050b118929e3c2af90a3145321f7cb76e57a9c9e8b8b49f5354a0a3
This commit is contained in:
parent
a0b61dcee9
commit
25e9758a29
2 changed files with 35 additions and 1 deletions
|
@ -18,13 +18,14 @@
|
||||||
## Interfaces
|
## Interfaces
|
||||||
|
|
||||||
- use strlcpy, strlcat instead of strcpy and strcat
|
- use strlcpy, strlcat instead of strcpy and strcat
|
||||||
|
- include copies of the above for users of glibc
|
||||||
- add retro-compiler
|
- add retro-compiler
|
||||||
|
|
||||||
### retro
|
### retro
|
||||||
|
|
||||||
### retro-compiler
|
### retro-compiler
|
||||||
|
|
||||||
- new interface for creating turnkey executables
|
- new interface for creating turnkey executables on bsd, linux
|
||||||
|
|
||||||
### retro-ri
|
### retro-ri
|
||||||
|
|
||||||
|
@ -48,5 +49,6 @@
|
||||||
- add DisplayNames.forth
|
- add DisplayNames.forth
|
||||||
- add KeyValueStore.forth
|
- add KeyValueStore.forth
|
||||||
- switch to dvorak key bindings in Roo.forth
|
- switch to dvorak key bindings in Roo.forth
|
||||||
|
- add net_fetch.forth
|
||||||
|
|
||||||
## Final Notes
|
## Final Notes
|
||||||
|
|
32
example/net_fetch.forth
Normal file
32
example/net_fetch.forth
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# net:fetch
|
||||||
|
|
||||||
|
This is a simple wrapper over `curl` (https://curl.haxx.se). It
|
||||||
|
uses the `unix:popen` word to initiate a pipe to curl and stores
|
||||||
|
the returned data into a buffer.
|
||||||
|
|
||||||
|
This takes in three values:
|
||||||
|
|
||||||
|
- the URL to fetch
|
||||||
|
- the destination buffer
|
||||||
|
- a maximum number of bytes to read
|
||||||
|
|
||||||
|
The buffer should be at least one cell longer than the max to
|
||||||
|
allow for the NULL termination.
|
||||||
|
|
||||||
|
## The Code
|
||||||
|
|
||||||
|
~~~
|
||||||
|
:net:fetch (san-n)
|
||||||
|
[ [ buffer:set
|
||||||
|
'curl_-s_%s s:format file:R unix:popen ] dip
|
||||||
|
[ dup file:read 0; buffer:add ] times unix:pclose
|
||||||
|
buffer:start s:length ] buffer:preserve ;
|
||||||
|
~~~
|
||||||
|
|
||||||
|
## Test Case
|
||||||
|
|
||||||
|
```
|
||||||
|
'Data d:create #256001 allot
|
||||||
|
'https://www.osnews.com Data #300009 net:fetch
|
||||||
|
'%n_bytes_read\n s:format s:put
|
||||||
|
```
|
Loading…
Reference in a new issue