; ping command.
; if $isalias(ircd/ping) returns $true
; calls /ircd/ping <sockname> <parameters offset> <length>
; else sent 'unknown command' by parser in SOCKREAD event
alias ircd/ping {
; $+(&,%sock) - traffic/commands from user
; %offset for parameters
; %0 length with CR/LF (/breplaced to 0 byte)
var %sock = $1, %offset = $2, %0 = $3 - 1
; check for ':'
if ($bvar($+(&,%sock),%offset) == 58) var %offset = %offset + 1, %0 = %0 - 1
; if length > 0
if (%0 > 0) {
; works fine, but i thinks thats is not pretty.
; need ideas for gluing binary variables and text :)
bunset $+(&,$1,/,ping)
; generate IRC command: $+(:,$host) PONG $host :
bset -t $+(&,$1,/,ping) 1 $+(:,$host) PONG $host :
; copy user's parameters to end
bcopy $+(&,$1,/,ping) $calc($bvar($+(&,$1,/,ping),0) + 1) $+(&,$1) %offset %0
; adding CRLF
bset $+(&,$1,/,ping) $calc($bvar($+(&,$1,/,ping),0) + 1) 13 10
; and sent to user
ircdsock %sock $+(&,$1,/,ping)
}
}