mirror of
https://github.com/GeorgeMcMullen/rxIRC.git
synced 2026-01-27 12:43:05 +00:00
Compare commits
4 Commits
2.1
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a8bb81121 | ||
|
|
34051b49ad | ||
|
|
75c03e2bdc | ||
|
|
e341a3219c |
182
rxirc.exec
182
rxirc.exec
@@ -1,11 +1,16 @@
|
|||||||
/* rxIRC
|
/* rxIRC
|
||||||
* Internet Relay Chat client program for VM/CMS systems
|
* Internet Relay Chat client program for VM/CMS systems
|
||||||
* written by Carl 'LynX' v. Loesch (loesch@informatik.uni-oldenburg.de)
|
* written by Carl 'LynX' v. Loesch (loesch@informatik.uni-oldenburg.de)
|
||||||
|
* created by Lynx (244661 at DOLUNI1) on Thursday, 14 Feb 1991
|
||||||
* Credits for suggestions, code contribution, miscellaneous help go to:
|
* Credits for suggestions, code contribution, miscellaneous help go to:
|
||||||
* Jose Maria Blasco, Doug Sewell, Martin Ahlborn, Jim McMaster,
|
* Jose Maria Blasco, Doug Sewell, Martin Ahlborn, Jim McMaster,
|
||||||
* Scott Maxell, Juan Courcoul, Rob Blais, Mike Letourneau, Grant Pair
|
* Scott Maxell, Juan Courcoul, Rob Blais, Mike Letourneau, Grant Pair
|
||||||
* (in historical order mostly). Thank y'all very much!
|
* (in historical order mostly). Thank y'all very much!
|
||||||
*
|
*
|
||||||
|
* Extras (Pluses) written by George McMullen
|
||||||
|
* Thanks to Carl 'LynX' v. Loesch for his suggestions, ideas, and
|
||||||
|
* explanations of code, which made much of the additions possible.
|
||||||
|
*
|
||||||
* requires RXSOCKET MODULE version 2 by Arty Ecock (eckcu@cunyvm.bitnet)
|
* requires RXSOCKET MODULE version 2 by Arty Ecock (eckcu@cunyvm.bitnet)
|
||||||
*
|
*
|
||||||
* Copyright (C)1991,2,3,4 by LynX & CvO University Oldenburg, Germany
|
* Copyright (C)1991,2,3,4 by LynX & CvO University Oldenburg, Germany
|
||||||
@@ -14,7 +19,7 @@
|
|||||||
* Warning: Changing the code to display fake user information is
|
* Warning: Changing the code to display fake user information is
|
||||||
* considered an offense by many IRC administrators!
|
* considered an offense by many IRC administrators!
|
||||||
*
|
*
|
||||||
*/ progname='rxIRC'; vers='2.1'; trace 'O'
|
*/ progname='rxIRC'; vers='2.2 (GM Branch)'; trace 'O'
|
||||||
address "COMMAND"; signal on HALT; "VMFCLEAR"
|
address "COMMAND"; signal on HALT; "VMFCLEAR"
|
||||||
cmds='AWAY AWAIT ADMIN CHANNEL CONNECT DEOP DIE HASH INFO ISON JOIN KICK',
|
cmds='AWAY AWAIT ADMIN CHANNEL CONNECT DEOP DIE HASH INFO ISON JOIN KICK',
|
||||||
'KILL LIST LINKS LUSERS MODE MAIL MOTD NAMES NICK NOTICE NOTE OPER PASS',
|
'KILL LIST LINKS LUSERS MODE MAIL MOTD NAMES NICK NOTICE NOTE OPER PASS',
|
||||||
@@ -26,6 +31,9 @@
|
|||||||
v.=; al.=; varnames=; aliasnames=; cmdchar=; userinfo=; sourcing=0
|
v.=; al.=; varnames=; aliasnames=; cmdchar=; userinfo=; sourcing=0
|
||||||
have_rxwt=0; who_empty=0; catmode=0; catlist=; abortsource=0; skiplines=0
|
have_rxwt=0; who_empty=0; catmode=0; catlist=; abortsource=0; skiplines=0
|
||||||
nflist=; nfhere=; nfcatch=0
|
nflist=; nfhere=; nfcatch=0
|
||||||
|
jumpcoms=0;sourcenum=0;numons=0;display='display'
|
||||||
|
call SET 'display On'
|
||||||
|
|
||||||
"EXECIO * CP (STEM PF. STRING QUERY PF"
|
"EXECIO * CP (STEM PF. STRING QUERY PF"
|
||||||
do i=1 to pf.0
|
do i=1 to pf.0
|
||||||
a=word(pf.i,2)
|
a=word(pf.i,2)
|
||||||
@@ -37,7 +45,7 @@
|
|||||||
"CP TERM CHARDEL OFF"
|
"CP TERM CHARDEL OFF"
|
||||||
"CP TERM LINESIZE 130"
|
"CP TERM LINESIZE 130"
|
||||||
sock=; buffer=; alphalo=xrange('a','z'); alphahi=xrange('A','Z')
|
sock=; buffer=; alphalo=xrange('a','z'); alphahi=xrange('A','Z')
|
||||||
lf='25'x; cr='0d'x; msa='01'x; rev='02'x; beep='2f'x; undl='32'x
|
lf='25'x; cr='0d'x; msa='01'x; rev='02'x; beep='2fx; undl='32'x
|
||||||
bold='1f'x; hi='1de8'x; lo='1d60'x; yo='1d44'x
|
bold='1f'x; hi='1de8'x; lo='1d60'x; yo='1d44'x
|
||||||
nice.=; u@n.=; via.=;
|
nice.=; u@n.=; via.=;
|
||||||
realname=; servername=;
|
realname=; servername=;
|
||||||
@@ -156,7 +164,6 @@
|
|||||||
if rc/=0 then call BYE "nonblocking i/o:" etc
|
if rc/=0 then call BYE "nonblocking i/o:" etc
|
||||||
myurl="http://"hostname"."domain":"wwwport"/"
|
myurl="http://"hostname"."domain":"wwwport"/"
|
||||||
end
|
end
|
||||||
|
|
||||||
call S progname||hi||vers||yo"- You are" ircnick "("ircname")"
|
call S progname||hi||vers||yo"- You are" ircnick "("ircname")"
|
||||||
call S "Logging is" onoff.log"; Audible bells are",
|
call S "Logging is" onoff.log"; Audible bells are",
|
||||||
onoff.loud"; Quiet ignore is" onoff.quiet
|
onoff.loud"; Quiet ignore is" onoff.quiet
|
||||||
@@ -180,7 +187,38 @@
|
|||||||
do forever
|
do forever
|
||||||
if index(buffer, lf)=0 then leave
|
if index(buffer, lf)=0 then leave
|
||||||
parse var buffer in (lf) buffer
|
parse var buffer in (lf) buffer
|
||||||
call OUT PARSE(strip(in,,cr))
|
see=PARSE(strip(in,,cr))
|
||||||
|
parse var see com sndr' ### 'eye
|
||||||
|
call OUT eye
|
||||||
|
if sndr/='' & sndr/=servername & pos(sndr,v.0)^=0 then
|
||||||
|
call SET 0 sndr
|
||||||
|
see=com
|
||||||
|
do i= 0 to 9
|
||||||
|
see=see v.i
|
||||||
|
end
|
||||||
|
upper see
|
||||||
|
if numons>0 then do test=1 to numons
|
||||||
|
parse var on.test look '::' com
|
||||||
|
upper look
|
||||||
|
do exam=1 to words(look)
|
||||||
|
single=word(look,exam)
|
||||||
|
if single=word(see,exam)|single="*" then iterate
|
||||||
|
if right(single,1)="*" then
|
||||||
|
if pos(left(single,length(single)-1),word(see,exam))=1 then
|
||||||
|
iterate
|
||||||
|
if left(single,1)="*" then
|
||||||
|
if right(single,1)="*" then
|
||||||
|
if pos(substr(single,2,length(single)-2),word(see,exam)),
|
||||||
|
>=1 then iterate
|
||||||
|
else nop
|
||||||
|
else
|
||||||
|
if lastpos(right(single,length(single)-1),word(see,exam)),
|
||||||
|
= length(word(see,exam))-(length(single)-2)&,
|
||||||
|
length(word(see,exam))-(length(single)-2)^=0 then iterate
|
||||||
|
leave
|
||||||
|
end
|
||||||
|
if exam=words(look)+1 then call SHELL com
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
when type = 'CONS' then if data/='' then do
|
when type = 'CONS' then if data/='' then do
|
||||||
@@ -255,7 +293,7 @@
|
|||||||
PARSE:
|
PARSE:
|
||||||
parse arg a
|
parse arg a
|
||||||
if loud & pos(beep,a)/=0 then "BEEP"
|
if loud & pos(beep,a)/=0 then "BEEP"
|
||||||
tu=; a=translate(a,"%"||beepch||"_",rev||beep||undl)
|
tu=; a=translate(a,"%"||beepch||"_",rev||beep||undl); bm=;
|
||||||
i=1; j=0; do forever; i=index(a,bold,i)
|
i=1; j=0; do forever; i=index(a,bold,i)
|
||||||
if i=0 then leave
|
if i=0 then leave
|
||||||
if j=0 then a=insert(hi,a,i)
|
if j=0 then a=insert(hi,a,i)
|
||||||
@@ -289,7 +327,10 @@ PARSE:
|
|||||||
when m='KICK' then tu='***' s 'kicks' f 'off channel' e '('g')'
|
when m='KICK' then tu='***' s 'kicks' f 'off channel' e '('g')'
|
||||||
when m='KILL' then tu='You were killed by' s subword(g,2)
|
when m='KILL' then tu='You were killed by' s subword(g,2)
|
||||||
when m='MODE' then tu='Mode change:' s 'sets' f 'on' e||g
|
when m='MODE' then tu='Mode change:' s 'sets' f 'on' e||g
|
||||||
when m='MSG' then tu='<'s'>' g
|
when m='MSG' then do
|
||||||
|
tu='<'s'>' g
|
||||||
|
m='PUBLIC'
|
||||||
|
end
|
||||||
when m='NICK' then tu='***' s 'is now known as' e||g
|
when m='NICK' then tu='***' s 'is now known as' e||g
|
||||||
when m='NOTICE' then select
|
when m='NOTICE' then select
|
||||||
when s='' | s=servername then do
|
when s='' | s=servername then do
|
||||||
@@ -313,14 +354,32 @@ PARSE:
|
|||||||
if ^quiet then call SEND('NOTICE' s ':'ignore_reply)
|
if ^quiet then call SEND('NOTICE' s ':'ignore_reply)
|
||||||
return ''; end
|
return ''; end
|
||||||
else do
|
else do
|
||||||
if CTCP(1 g) then tu='*'s'*' g
|
if CTCP(1 g) then do
|
||||||
|
tu='*'s'*' g
|
||||||
|
m='MSG'
|
||||||
|
end
|
||||||
|
else do
|
||||||
|
m='CTCP'
|
||||||
|
parse var g . (msa) bm g (msa) .
|
||||||
|
bm=s bm g
|
||||||
|
end
|
||||||
lastsender=s
|
lastsender=s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else if ^FINDM(omit,s) & ^FINDM(omit,sad) then
|
else if ^FINDM(omit,s) & ^FINDM(omit,sad) then do
|
||||||
if CTCP(0 g) then do
|
if CTCP(0 g) then do
|
||||||
if translate(e)=target then tu='<'s'>' g
|
m='CTCP'
|
||||||
else tu='<'s':'e'>' g
|
parse var g . (msa) bm g (msa) .
|
||||||
|
bm=s bm g
|
||||||
|
end
|
||||||
|
if translate(e)=target then then if CTCP(0 g) then do
|
||||||
|
yu='<'s'>' g
|
||||||
|
m='PUBLIC'
|
||||||
|
end
|
||||||
|
otherwise if CTCP(0 g) then do
|
||||||
|
tu='<'s':'e'>' g
|
||||||
|
m='PUBLIC'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
when m='QUIT' then tu='Signoff by' s '('g')'
|
when m='QUIT' then tu='Signoff by' s '('g')'
|
||||||
@@ -343,14 +402,20 @@ PARSE:
|
|||||||
when m='314' then do; parse var f ni ui no .
|
when m='314' then do; parse var f ni ui no .
|
||||||
tu=ni 'was' ui'@'no '('g')'; end
|
tu=ni 'was' ui'@'no '('g')'; end
|
||||||
when m='312' then tu='via' word(f,2) '('g')'
|
when m='312' then tu='via' word(f,2) '('g')'
|
||||||
when m='315' then if who_empty then call S 'No matches for /who'
|
when m='315' then if who_empty then do
|
||||||
|
bm='No matches for /who'
|
||||||
|
call S bm
|
||||||
|
end
|
||||||
when m='319' then tu='on channels:' g
|
when m='319' then tu='on channels:' g
|
||||||
when m='317' then tu='apparently idle' word(f,2)/60 'minutes'
|
when m='317' then tu='apparently idle' word(f,2)/60 'minutes'
|
||||||
when m='322' then do
|
when m='322' then do
|
||||||
parse var f ch n .
|
parse var f ch n .
|
||||||
if ch/='*' & substr(ch,2,1)/='27'x then do
|
if ch/='*' & substr(ch,2,1)/='27'x then do
|
||||||
if catmode then do; if n>4 then catlist=ch catlist; end
|
if catmode then do; if n>4 then catlist=ch catlist; end
|
||||||
else if listall | n>7 then call OUT left(ch,13) left(n,4)g
|
else if listall | n>7 then do
|
||||||
|
bm=left(ch,13) left(n,4)g
|
||||||
|
call OUT left(ch,13) left(n,4)g
|
||||||
|
end
|
||||||
end; end
|
end; end
|
||||||
when m='323' then do
|
when m='323' then do
|
||||||
if catmode then do
|
if catmode then do
|
||||||
@@ -369,10 +434,14 @@ PARSE:
|
|||||||
else if (ch/='*' & a>length(ch)) then
|
else if (ch/='*' & a>length(ch)) then
|
||||||
k=lo||ch||hi||n||lo||copies(' ',a-length(ch)-1)us"@"no
|
k=lo||ch||hi||n||lo||copies(' ',a-length(ch)-1)us"@"no
|
||||||
else k=hi||n||lo||copies(' ',a)us"@"no
|
else k=hi||n||lo||copies(' ',a)us"@"no
|
||||||
|
bm=st ni ch us no n
|
||||||
call S left(st,3)yo||left(ni,9)k
|
call S left(st,3)yo||left(ni,9)k
|
||||||
end
|
end
|
||||||
when m='353' then do; ch=word(f,2); a=words(g)
|
when m='353' then do; ch=word(f,2); a=words(g)
|
||||||
if ch/='*' & (a>6 | translate(ch)=target) then call OUT hi||left(ch,15)yo||g
|
if ch/='*' & (a>6 | translate(ch)=target) then do
|
||||||
|
bm=left(ch,15)||g
|
||||||
|
call OUT hi||left(ch,15)yo||g
|
||||||
|
end
|
||||||
end
|
end
|
||||||
when m='313'|m='364' then tu=f g
|
when m='313'|m='364' then tu=f g
|
||||||
when m='004'|m='318'|m='321'|m='365'|m='366'|m='406' then nop
|
when m='004'|m='318'|m='321'|m='365'|m='366'|m='406' then nop
|
||||||
@@ -387,7 +456,13 @@ PARSE:
|
|||||||
if s/="" & s/=servername then tu='('s')' tu
|
if s/="" & s/=servername then tu='('s')' tu
|
||||||
if numb then tu='{'m'}' tu
|
if numb then tu='{'m'}' tu
|
||||||
end
|
end
|
||||||
return translate(tu,"@",msa)
|
if bm=''&b/='' then bm=tu
|
||||||
|
do jjj=1 to 10
|
||||||
|
if word(bm,jjj)^='' then call SET jjj-1 word(bm,jjj)
|
||||||
|
else call UNSET jjj-1
|
||||||
|
if jjj>=10 then leave
|
||||||
|
end
|
||||||
|
return m s '###' translate(tu,"@",msa)
|
||||||
|
|
||||||
VAR:
|
VAR:
|
||||||
parse arg x
|
parse arg x
|
||||||
@@ -421,11 +496,26 @@ SET:
|
|||||||
z=word(varnames,i); call S '$('z') is "'v.z'"'
|
z=word(varnames,i); call S '$('z') is "'v.z'"'
|
||||||
end
|
end
|
||||||
else do
|
else do
|
||||||
parse var z a b
|
parse var z vn vv
|
||||||
if b='' then call S 'Variable' a 'has the value "'v.a'"'
|
if b='' then call S 'Variable' vn 'has the value "'v.vv'"'
|
||||||
else do; v.a=b; if find(varnames,a)=0 then varnames=a varnames; end
|
else do; v.vn=vv; if find(varnames,vn)=0 then varnames=vn varnames; end
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
|
|
||||||
|
UNSET:
|
||||||
|
parse arg z etc
|
||||||
|
if z='' then do;call S "Deleting all set variables..."
|
||||||
|
do i=1 to words(varnames)
|
||||||
|
z=word(varnames,i); v.z=;
|
||||||
|
end;varnames=;end
|
||||||
|
else do
|
||||||
|
nvn=' '
|
||||||
|
do i=1 to words(varnames)
|
||||||
|
if z=word(varnames,i) then nop
|
||||||
|
else nvn=nvn word(varnames,i);end
|
||||||
|
v.z=;varnames=nvn
|
||||||
|
end
|
||||||
|
return
|
||||||
|
|
||||||
EDIT:
|
EDIT:
|
||||||
parse arg in
|
parse arg in
|
||||||
@@ -438,10 +528,11 @@ EDIT:
|
|||||||
else if left(in,2)=cmdchar' ' then call SEND 'PRIVMSG' target ':'substr(in,3)
|
else if left(in,2)=cmdchar' ' then call SEND 'PRIVMSG' target ':'substr(in,3)
|
||||||
else call SHELL substr(in,2)
|
else call SHELL substr(in,2)
|
||||||
return
|
return
|
||||||
|
|
||||||
SHELL:
|
SHELL:
|
||||||
parse arg lin
|
parse arg lin
|
||||||
if abbrev('ALIAS', translate(word(lin,1)), 2) then do
|
if abbrev('ALIAS', translate(word(lin,1)), 2) then do
|
||||||
|
lin=strip(lin)
|
||||||
parse var lin . name lin
|
parse var lin . name lin
|
||||||
if name='' then do i=1 to words(aliasnames)
|
if name='' then do i=1 to words(aliasnames)
|
||||||
name=word(aliasnames,i); call S name': "'al.name'"'
|
name=word(aliasnames,i); call S name': "'al.name'"'
|
||||||
@@ -454,6 +545,18 @@ SHELL:
|
|||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
if abbrev('ON', translate(word(lin,1)), 2) then do
|
||||||
|
lin=strip(lin)
|
||||||
|
parse var lin . lin
|
||||||
|
if lin=''&numons>0 then do i=1 to numons
|
||||||
|
call S i'- ON: "'on.i'"'
|
||||||
|
end
|
||||||
|
else if lin\='' then do
|
||||||
|
numons=numons+1
|
||||||
|
on.numons=lin
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
do while lin/=''
|
do while lin/=''
|
||||||
if left(lin,1)='*' then return
|
if left(lin,1)='*' then return
|
||||||
parse var lin one '15'x lin
|
parse var lin one '15'x lin
|
||||||
@@ -473,6 +576,11 @@ SHELL:
|
|||||||
sb=sb||k||VAR(x)
|
sb=sb||k||VAR(x)
|
||||||
end
|
end
|
||||||
parse var sb com par '::' next
|
parse var sb com par '::' next
|
||||||
|
do while jumpcoms>0 & next ^=''
|
||||||
|
parse var next com par '::' next
|
||||||
|
jumpcoms = jumpcoms-1
|
||||||
|
end
|
||||||
|
jumpcoms=0
|
||||||
upper com
|
upper com
|
||||||
if next/='' then lin=next||'15'x||lin
|
if next/='' then lin=next||'15'x||lin
|
||||||
if find(lc, com)=0 then lc=com lc
|
if find(lc, com)=0 then lc=com lc
|
||||||
@@ -514,6 +622,7 @@ COMMAND:
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
when abbrev('INTERPRET',q,3) then call INTERP r
|
when abbrev('INTERPRET',q,3) then call INTERP r
|
||||||
|
when abbrev('ASSIGN',q,3) then call ASSIGN r
|
||||||
when abbrev('INVITE',q,1) then do
|
when abbrev('INVITE',q,1) then do
|
||||||
if words(r)=1 & target/=0 then out='INVITE' r target
|
if words(r)=1 & target/=0 then out='INVITE' r target
|
||||||
else out='INVITE' r
|
else out='INVITE' r
|
||||||
@@ -523,11 +632,26 @@ COMMAND:
|
|||||||
when abbrev('NICKNAME',q,1) then if r='' then out='WHOIS' ircnick
|
when abbrev('NICKNAME',q,1) then if r='' then out='WHOIS' ircnick
|
||||||
else do; out='NICK' r; ircnick=r; capnick=translate(r); end
|
else do; out='NICK' r; ircnick=r; capnick=translate(r); end
|
||||||
when q='NF'|abbrev('NOTIFY',q,4) then call NOTIFY r
|
when q='NF'|abbrev('NOTIFY',q,4) then call NOTIFY r
|
||||||
|
when abbrev('SEND',q,4) then if r='' then do
|
||||||
|
call S "Send what?"
|
||||||
|
end
|
||||||
|
else do
|
||||||
|
call S "Sent command ("r")."
|
||||||
|
call SEND(r)
|
||||||
|
end
|
||||||
|
when abbrev('QUOTE',q,4) then if r='' then do
|
||||||
|
call S "Quote what?"
|
||||||
|
end
|
||||||
|
else do
|
||||||
|
call SEND(r)
|
||||||
|
end
|
||||||
when left(q,2)='PF' then 'CP SET' q r
|
when left(q,2)='PF' then 'CP SET' q r
|
||||||
when abbrev('REPLY',q,1) then call QUERY lastsender
|
when abbrev('REPLY',q,1) then call QUERY lastsender
|
||||||
when abbrev('SERVER',q,1) then call CONNECT r
|
when abbrev('SERVER',q,1) then call CONNECT r
|
||||||
when q='SET' then call SET r
|
when q='SET' then call SET r
|
||||||
|
when abbrev('UNSET',q,3) then call UNSET r
|
||||||
when q='SKIP' & sourcing then if datatype(r,'w') then skiplines=r
|
when q='SKIP' & sourcing then if datatype(r,'w') then skiplines=r
|
||||||
|
when q='JUMP' then if datatype(r,'w') then jumpcoms=r
|
||||||
when abbrev('SOURCE',q,2) then call SOURCE r
|
when abbrev('SOURCE',q,2) then call SOURCE r
|
||||||
when abbrev('STATUS',q,1) then do; out='WHOIS' ircnick
|
when abbrev('STATUS',q,1) then do; out='WHOIS' ircnick
|
||||||
call OUT 'Target:' target'; Query:' query'; Invitation:' invitation'; Last sender:' lastsender'; Last joined:' lastjoin
|
call OUT 'Target:' target'; Query:' query'; Invitation:' invitation'; Last sender:' lastsender'; Last joined:' lastjoin
|
||||||
@@ -656,9 +780,11 @@ LOGGING:
|
|||||||
return
|
return
|
||||||
|
|
||||||
S:
|
S:
|
||||||
parse arg k; say k; if log then writelog k
|
parse arg k
|
||||||
|
if translate(v.display)/='OFF' then say k
|
||||||
if logevent/=0 then do
|
if logevent/=0 then do
|
||||||
curll=curll+1; ll.curll=k; logevent=0; k=curll-50; ll.k=; end
|
curll=curll+1; ll.curll=k; logevent=0; k=curll-50; ll.k=; end
|
||||||
|
if log then writelog k
|
||||||
return
|
return
|
||||||
|
|
||||||
OUT:
|
OUT:
|
||||||
@@ -719,7 +845,7 @@ CTCP:
|
|||||||
when ctcp="USERINFO" then call MSAREPLY "USERINFO" userinfo
|
when ctcp="USERINFO" then call MSAREPLY "USERINFO" userinfo
|
||||||
when ctcp="VERSION" then
|
when ctcp="VERSION" then
|
||||||
call MSAREPLY "VERSION" progname vers "VM/CMS",
|
call MSAREPLY "VERSION" progname vers "VM/CMS",
|
||||||
":Survival package for VM-struck humans"
|
":Beta Version of Improved rxIRC - The Survival package for VM-struck humans"
|
||||||
otherwise if fla=1 then call MSAREPLY "ERRMSG Huh? Can't do" ctcp
|
otherwise if fla=1 then call MSAREPLY "ERRMSG Huh? Can't do" ctcp
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
@@ -972,6 +1098,7 @@ TELL:
|
|||||||
|
|
||||||
SOURCE:
|
SOURCE:
|
||||||
arg sfn, sfl
|
arg sfn, sfl
|
||||||
|
sourcenum=sourcenum+1
|
||||||
if sfn='' then do
|
if sfn='' then do
|
||||||
call S "You must specify a file to /source"
|
call S "You must specify a file to /source"
|
||||||
return -1
|
return -1
|
||||||
@@ -985,6 +1112,13 @@ SOURCE:
|
|||||||
'MAKEBUF'; 'EXECIO * DISKR' sfn '(FIFO FINIS'; skiplines=0;
|
'MAKEBUF'; 'EXECIO * DISKR' sfn '(FIFO FINIS'; skiplines=0;
|
||||||
do queued(); sourcing=1
|
do queued(); sourcing=1
|
||||||
parse pull l; if abortsource then iterate
|
parse pull l; if abortsource then iterate
|
||||||
|
if right(strip(l),2)='::' then
|
||||||
|
ll=ll||l
|
||||||
|
else do
|
||||||
|
ll=ll||l
|
||||||
|
call SHELL strip(ll)
|
||||||
|
ll=''
|
||||||
|
end
|
||||||
if skiplines=0 then call SHELL strip(l)
|
if skiplines=0 then call SHELL strip(l)
|
||||||
else skiplines=skiplines-1
|
else skiplines=skiplines-1
|
||||||
end
|
end
|
||||||
@@ -1017,6 +1151,11 @@ INTERP:
|
|||||||
signal on SYNTAX; INTERPRET(statement); signal off SYNTAX
|
signal on SYNTAX; INTERPRET(statement); signal off SYNTAX
|
||||||
return rc
|
return rc
|
||||||
|
|
||||||
|
ASSIGN:
|
||||||
|
parse arg asto asfrom
|
||||||
|
signal on SYNTAX; INTERPRET(statement); signal off SYNTAX
|
||||||
|
return rc
|
||||||
|
|
||||||
NOTIFY:
|
NOTIFY:
|
||||||
arg a
|
arg a
|
||||||
do i=1 to words(a)
|
do i=1 to words(a)
|
||||||
@@ -1084,3 +1223,4 @@ WRITEFILE:
|
|||||||
DROPIT:
|
DROPIT:
|
||||||
'DROPBUF'
|
'DROPBUF'
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
13
setenv.exec
Normal file
13
setenv.exec
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/* SETENV EXEC
|
||||||
|
* Set an environment variable for C programs to access
|
||||||
|
* last change by Lynx_VM (244661 at DOLUNI1) on Sunday, 12 May 1991
|
||||||
|
*/
|
||||||
|
address 'COMMAND'
|
||||||
|
parse arg n c; upper n
|
||||||
|
if n="" then
|
||||||
|
'GLOBALV SELECT CENV LIST'
|
||||||
|
else if c="" then
|
||||||
|
'GLOBALV SELECT CENV LIST' n
|
||||||
|
else
|
||||||
|
'GLOBALV SELECT CENV SETL' n c
|
||||||
|
exit rc
|
||||||
Reference in New Issue
Block a user