Fix some example code

This commit is contained in:
Justine Tunney 2022-04-29 08:19:09 -07:00
parent e4b559c76a
commit a85406da4c
2 changed files with 127 additions and 124 deletions

View file

@ -22,20 +22,20 @@ unix.umask(mask)
Write('<dd>%.4o\r\n' % {mask})
Write('<dt>unix.getsid(0)\r\n')
sid, errno = unix.getsid(0)
sid, err = unix.getsid(0)
if sid then
Write('<dd>%d\r\n' % {sid})
else
Write('<dd>%s\r\n' % {tostring(errno)})
Write('<dd>%s\r\n' % {err})
end
Write('<dt>unix.gethostname()\r\n')
Write('<dd>%s\r\n' % {EscapeHtml(unix.gethostname())})
Write('<dd>%s\r\n' % {EscapeHtml(assert(unix.gethostname()))})
Write('<dt>unix.getcwd()\r\n')
Write('<dd>%s\r\n' % {EscapeHtml(unix.getcwd())})
Write('<dd>%s\r\n' % {EscapeHtml(assert(unix.getcwd()))})
function PrintResourceLimit(name, id)
soft, errno, hard = unix.getrlimit(id)
soft, hard = unix.getrlimit(id)
Write('<dt>getrlimit(%s)\r\n' % {name})
if soft then
Write('<dd>')
@ -54,7 +54,7 @@ function PrintResourceLimit(name, id)
end
Write('\r\n')
else
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
Write('<dd>%s\r\n' % {EscapeHtml(tostring(hard))})
end
end
PrintResourceLimit('RLIMIT_AS', unix.RLIMIT_AS)
@ -66,7 +66,7 @@ PrintResourceLimit('RLIMIT_NOFILE', unix.RLIMIT_NOFILE)
Write('<dt>unix.siocgifconf()\r\n')
Write('<dd>\r\n')
ifs, errno = unix.siocgifconf()
ifs, err = unix.siocgifconf()
if ifs then
for i = 1,#ifs do
if ifs[i].netmask ~= 0 then
@ -77,215 +77,217 @@ if ifs then
Write('%s %s/%d<br>\r\n' % {EscapeHtml(ifs[i].name), FormatIp(ifs[i].ip), cidr})
end
else
Write('%s\r\n' % {EscapeHtml(tostring(errno))})
Write('%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DEBUG)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DEBUG)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DEBUG)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%d\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_ACCEPTCONN)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_ACCEPTCONN)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_ACCEPTCONN)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%d\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEADDR)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEADDR)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEADDR)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%d\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEPORT)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEPORT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_REUSEPORT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%d\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_KEEPALIVE)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_KEEPALIVE)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_KEEPALIVE)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%s\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NODELAY)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NODELAY)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NODELAY)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil on error
Write('<dd>%s\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
secs, errno, micros = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVTIMEO)
secs, nanos = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVTIMEO)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVTIMEO)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if secs then -- is nil on error
Write('<dd>%d seconds + %d nanoseconds\r\n' % {secs, nanos})
else
Write('<dd>%d sec %d µs\r\n' % {secs, micros})
err = nanos
Write('<dd>%s\r\n' % {err})
end
secs, errno, micros = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDTIMEO)
secs, nanos = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDTIMEO)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDTIMEO)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if secs then -- is nil on error
Write('<dd>%d seconds + %d nanoseconds\r\n' % {secs, nanos})
else
Write('<dd>%d sec %d µs\r\n' % {secs, micros})
err = nanos -- unix.Errno is always second result
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DONTROUTE)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DONTROUTE)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_DONTROUTE)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil if error
Write('<dd>%d\r\n' % {enabled}) -- should be 0 or 1
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDBUF)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDBUF)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDBUF)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then -- is nil if error
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVBUF)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVBUF)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVBUF)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then -- is nil if error
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then -- is nil if error
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_BROADCAST)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_BROADCAST)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_BROADCAST)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil if error
Write('<dd>%d\r\n' % {enabled}) -- should be 1 or 0
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_CORK)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_CORK)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_CORK)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then -- is nil if error
Write('<dd>%d\r\n' % {enabled}) -- should be 1 or 0
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_QUICKACK)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_QUICKACK)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_QUICKACK)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if enabled then
Write('<dd>%d\r\n' % {enabled})
else
Write('<dd>%s\r\n' % {enabled})
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_DEFER_ACCEPT)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_DEFER_ACCEPT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_DEFER_ACCEPT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if enabled then
Write('<dd>%s\r\n' % {enabled})
else
Write('<dd>%s\r\n' % {err})
end
enabled, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN_CONNECT)
enabled, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN_CONNECT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_FASTOPEN_CONNECT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
if err then
Write('<dd>%s\r\n' % {err})
else
Write('<dd>%s\r\n' % {enabled})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDLOWAT)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDLOWAT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_SNDLOWAT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVLOWAT)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVLOWAT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_SOCKET, unix.SO_RCVLOWAT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPCNT)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPCNT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPCNT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_MAXSEG)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_MAXSEG)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_MAXSEG)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_SYNCNT)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_SYNCNT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_SYNCNT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NOTSENT_LOWAT)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NOTSENT_LOWAT)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_NOTSENT_LOWAT)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_WINDOW_CLAMP)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_WINDOW_CLAMP)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_WINDOW_CLAMP)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPIDLE)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPIDLE)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPIDLE)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
bytes, errno = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPINTVL)
bytes, err = unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPINTVL)
Write('<dt>unix.getsockopt(GetClientFd(), unix.SOL_TCP, unix.TCP_KEEPINTVL)\r\n')
if errno then
Write('<dd>%s\r\n' % {EscapeHtml(tostring(errno))})
else
if bytes then
Write('<dd>%d\r\n' % {bytes})
else
Write('<dd>%s\r\n' % {err})
end
Write('<dt>unix.environ()\r\n')

View file

@ -318,12 +318,13 @@ REPL
redbean.com -i binarytrees.lua 15
In this mode redbean won't start a web server and instead functions
like the `lua` command. The first command line argument becomes the
script you want to run. If you don't supply a script, then the repl
without a web server is displayed. This is useful for testing since
redbean extensions and modules for the Lua language, are still made
available. You can also write redbean scripts with shebang lines:
When the `-i` flag is passed (for interpreter mode), redbean won't
start a web server and instead functions like the `lua` command. The
first command line argument becomes the script you want to run. If you
don't supply a script, then the repl without a web server is
displayed. This is useful for testing since redbean extensions and
modules for the Lua language, are still made available. You can also
write redbean scripts with shebang lines:
#!/usr/bin/redbean -i
print('hello world')
@ -1452,14 +1453,14 @@ MAXMIND MODULE
This module may be used to get city/country/asn/etc from IPs, e.g.
-- .init.lua
maxmind = require "maxmind"
maxmind = require 'maxmind'
asndb = maxmind.open('/usr/local/share/maxmind/GeoLite2-ASN.mmdb')
-- request handler
as = asndb:lookup(GetRemoteAddr())
if as then
asnum = as:get("autonomous_system_number")
asorg = as:get("autonomous_system_organization")
asnum = as:get('autonomous_system_number')
asorg = as:get('autonomous_system_organization')
Write(EscapeHtml(asnum))
Write(' ')
Write(EscapeHtml(asorg))
@ -1483,7 +1484,7 @@ UNIX MODULE
Returns a file descriptor integer that needs to be closed, e.g.
fd = assert(open("/etc/passwd", unix.O_RDONLY))
fd = assert(unix.open("/etc/passwd", unix.O_RDONLY))
print(unix.read(fd))
unix.close(fd)
@ -1622,9 +1623,9 @@ UNIX MODULE
Performs `$PATH` lookup of executable.
unix = require "unix"
prog = assert(unix.commandv("ls"))
unix.execve(prog, {prog, "-hal", "."}, {PATH="/bin"})
unix = require 'unix'
prog = assert(unix.commandv('ls'))
unix.execve(prog, {prog, '-hal', '.'}, {'PATH=/bin'})
unix.exit(127)
We automatically suffix `.com` and `.exe` for all platforms when