I filled out the bug form. Please respond to me at [EMAIL PROTECTED]
Thanks.

-mike (efnet/alycat)

---
If you should see what you think to be a bug, please fill out
this form and send to the following address(es):

                [EMAIL PROTECTED]

And we will try to get back to you as soon as we can, and will
correct the bug if it is at all possible.


Please remember when reporting a bug that information counts.  Since
we have not yet mastered the skill of mind-reading, you should not
assume that we know anything about your situation.  We have seen some 
things that look absolutely strange to us, but are perfectly normal 
to the user. It is best for you to take the stance that we dont know 
that much about your operating system, so you should try to start at 
the beginning and clue us in.  Thanks a bunch. |8^)


Question one:  Please describe your computer system
        Hardware type?
        Operating System? (try uname -a for most, or uname -X for SCO)

sunny:~$ uname -a
SunOS sunny 5.9 Generic sun4m sparc SUNW,SPARCstation-5

        Your compiler (include version, if known)
sunny:~$ gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld 
--disable-nls
Thread model: posix
gcc version 3.2

        What scripts/script packs you run (phoenix, uus, superpack, etc)
        Anything else you think might be helpful.

I am running a small script that my friend wrote (for ircii) years ago.
It is probably breaking epic because of some sort of compatibility problem,
however I wouldn't expect a script to be able to crash epic.  The source
is attached.

Question two:  Where does your problem occur?
        [ ]  Configure time (dies while running configure)
        [ ]  Compiler time (dies when you type 'make')
        [*]  Run time (You got a "CRITICAL PROTECTION ERROR")
        [ ]  Run time (You got a "PANIC" message)
        [ ]  Run time (non-fatal logic bug)
* * * * * * * * * * * * * * * * * * * * * * * *
IRC-II has trapped a critical protection error.
This is probably due to a bug in the program.

If you have access to the 'BUG_FORM' in the ircII source distribution,
we would appreciate your filling it out if you feel doing so would
be helpful in finding the cause of your problem.

If you do not know what the 'BUG_FORM' is or you do not have access
to it, please dont worry about filling it out.  You might try talking
to the person who is in charge of IRC at your site and see if you can
get them to help you.

This version of IRC II is  --->[EPIC4-1.1.12 (524)]
The date of release is     --->[20030613]

* * * * * * * * * * * * * * * * * * * * * * * *
The program will now terminate.
Call stack
[  0] /join #tehutheu
End of call stack
sunny:~$


If it is at run time, please try to describe as best you can what
you were doing when the client malfunctioned.  Had you just run 
a command?  Can you duplicate the error?  What seems to cause the
error in your best judgement?  Have you found anything else
that independantly causes this same problem?

The problem is manifest when I launch epic and then try to join any channel.
I see the windows start to rearrange themselves like they should and then it
crashes with the message that I pasted above.

If you know how to use a debugger, it would be helpful if you 
can get a stack trace, and cut and paste it here.

*** End of /MOTD command.
*** Mode change "+i" for user alycat by alycat
*** CTCP VERSION  from DkChk
 alycat

Program received signal SIGSEGV, Segmentation fault.
0xef332e90 in strlen () from /usr/lib/libc.so.1
(gdb) bt
#0  0xef332e90 in strlen () from /usr/lib/libc.so.1
#1  0xef3840c8 in _doprnt () from /usr/lib/libc.so.1
#2  0xef3860ac in vsnprintf () from /usr/lib/libc.so.1
#3  0x74428 in vsend_to_aserver (refnum=1, format=0xa19e8 "JOIN %s %s",
    args=0xefffc4fc) at server.c:1008
#4  0x74320 in send_to_aserver (refnum=1, format=0xa19e8 "JOIN %s %s")
    at server.c:974
#5  0x87714 in window_channel (window=0x101250, args=0xa19e8) at window.c:2835
#6  0x89a60 in windowcmd (command=0x0, args=0xb58f0 "",
    subargs=0x1 <Address 0x1 out of bounds>) at window.c:4572
#7  0x32314 in parse_command (line=0xef5da "window channel", hist_flag=0,
    sub_args=0xefffcbee "#nthth") at commands.c:3742
#8  0x31bd8 in parse_line (name=0x0,
    org_line=0x1010cc "//window channel $0;^window name $0",
    args=0xefffcbee "#nthth", hist_flag=0, append_flag=0) at commands.c:3451
#9  0x4f3e4 in ifcmd (command=0x8cb20 "IF",
    args=0x1010f1 "{//window channel #$0;^window name #$0}",
    subargs=0xefffcbee "#nthth") at if.c:207
#10 0x32314 in parse_command (line=0x1010b8 "if (ISCHANNEL", hist_flag=0,
    sub_args=0xefffcbee "#nthth") at commands.c:3742
#11 0x31bd8 in parse_line (name=0x0,
    org_line=0xe8ec0 "window new;^window notify;if (ischannel($0)) {//window channel 
$0;^window name $0} {//window channel #$0;^window name #$0};wait -CMD if (1) {window 
hide_others;window push;window show 1;window refnum "...,
    args=0xefffcbee "#nthth", hist_flag=0, append_flag=1) at commands.c:3451
#12 0x20704 in parse_line_alias_special (name=0x0,
    what=0xe8ec0 "window new;^window notify;if (ischannel($0)) {//window channel 
$0;^window name $0} {//window channel #$0;^window name #$0};wait -CMD if (1) {window 
hide_others;window push;window show 1;window refnum "...,
    args=0xefffcbee "#nthth", d1=0, d2=1, arglist=0x0, function=0)
    at alias.c:2126
#13 0x20848 in call_user_alias (alias_name=0x0,
    alias_stuff=0xe8ec0 "window new;^window notify;if (ischannel($0)) {//window 
channel $0;^window name $0} {//window channel #$0;^window name #$0};wait -CMD if (1) 
{window hide_others;window push;window show 1;window refnum "...,
    args=0xb3400 "", arglist=0x0) at alias.c:2175
#14 0x32178 in parse_command (line=0xefffcbe9 "join #nthth", hist_flag=1,
    sub_args=0x0) at commands.c:3691
#15 0x31d18 in parse_line (name=0x0, org_line=0xefffcbe8 "/join #nthth",
    args=0x0, hist_flag=1, append_flag=734208) at commands.c:3511
#16 0x53ee0 in send_line (key=10 '\n', string=0x0) at input.c:1162
#17 0x5c368 in key_exec (key=0xcb638) at keys.c:242
#18 0x5c5d4 in handle_keypress (last=0xcb638, pressed={tv_sec = 167772160,
---Type <return> to continue, or q <return> to quit---
      tv_usec = 823128}, key=10 '\n') at keys.c:338
#19 0x54280 in edit_char (key=10 '\n') at input.c:1326
#20 0x7269c in do_screens (rd=0xeffff7d0, wd=0xffffdff8) at screen.c:3112
#21 0x55520 in io (what=0x953b0 "main") at irc.c:903
#22 0x55f20 in main (argc=1, argv=0xeffff95c) at irc.c:1338
(gdb)



Please include any other information that you think we should know about.

I included the script that I am running. it consists of only two files:
.ircrc and .irc-local. they total about 800 lines.

***** included file: .irc-local (92 lines)

# authenticate before adding notifies
#gpass

xecho -level crap Adding user local extensions...
# this should be approximately <the height of your screen>/4 -- 80x25 users
# will probably want 5 here.
@ shrink_size = 4

# tell ircII-4.4 to check my mail
set mail 1

# your notify list, do what you want here.

#  these set the cut-off lengths of channels in the status line
# this one is used when the channel is the current one (it's inverse-video)
@ current_chanlen = [7]
# this one is used when the channel has activity (it's boldened)
@ active_chanlen = [7]
# this one is used when the channel is normal
@ default_chanlen = [7]
# these codes are on the status line surrounding the current channel
# (the "on" one comes before it, the "off" one comes after)
# default is inverse-video
@ current_chanon = [*]
@ current_chanoff = [*]
# these codes are on the status line surrounding active channels
# default is bold
@ active_chanon = [\[]
@ active_chanoff = [\]]
# these codes are on the status line surrounding normal channels
# default is nothing
@ default_chanon = [ ]
@ default_chanoff = [ ]


# uncomment this if you want public flood prot (recomment it after one run!)
# exec echo add public floodprot|mail [EMAIL PROTECTED]


# me_mask[x] is the mask that will be searched for to match in a word to
# mark a public message as being directed to you.  me_beginning is the text
# to be matched with the beginning of the line.  You may probably want to
# rewrite for_me, too.

@ me_mask[0] = [zack]
@ me_mask[1] = [fire]
@ me_beginning = [fire]
alias for_me {
        @ function_return = 0
        @ temp = [$strip( $*)]
        foreach me_mask i {
                if (match($me_mask[$i] $temp)) {
                        @ function_return = 1
                }
        }
        if (left([EMAIL PROTECTED] $0) == [$me_beginning]) {
                @ function_return = 1 
        }
        ^assign -temp
}


# this bit gets rid of bold colons at the end of the first word of public
# messages -- you may want to turn this into a NOP, or you may want to add
# other things to get rid of.
# $0 is the first word, $1 is the channel name
alias deboldenize {
        @ function_return = [$0]
        if (right(3 $0) == [:]) { @ function_return = [$strip(: $0):] }
        if (right(3 $0) == [:]) { @ function_return = [$strip(: $0):] }
        if (right(3 $0) == [:]) { @ function_return = [$strip(: $0):] }
        if (right(3 $0) == [,]) { @ function_return = [$strip(, $0):] }
        @ temp = [$strip( $0)]
        if (onchannel($temp $1) || onchannel($left([EMAIL PROTECTED] $temp) $1) || 
onchannel($left([EMAIL PROTECTED] $temp) $1)) {
                @ function_return = [$temp]
        }
        ^assign -temp
}

# this is what shows up in ()'s after your nick, I hope
#set realname got to stop spinning

# hack 'cause epic treats the server status differently than it should
#set -status_server

^set log on

# this sets the status bar to be in a more compressed format:
@ compressed_format = 0

# this makes DCC CHAT messages beep
@ dcc_chat_beep = 0

***** included file: .ircrc (729 lines)
# this is GAlexand's script: dot ircrc

# todo:
# playback in own window, possibly with /clear <nick> and something to keep nicks out 
of the awaylog, and maybe an option to keep both sides of a conversation
# make configurable feature: queries don't beep
# make it not say "gakko" is for me
# deal with lines with untermed bolds or stuff.
# make spam privmsg's not beep
# make different color for windows where for_me() activity has occured (??)
# add bans and ops to log
# wordkick
# add DCC offer and other shit
# make it set me +i on server connect
xecho -level crap Loading script...

if (![$shrink_size]) { window level all }

load ~/.irc-local

@ activity_windows = []
set -status_user1
set -status_user

# set variables
set dcc_block_size 8192
set lastlog 16384
set lastlog_level all
set auto_whowas off
set novice off
set show_channel_names on
set show_away_once off
set help_path /usr/local/lib/irc/help
set hold_mode off
set load_path ~
set -input_prompt
set beep_on_msg msgs
set indent on
set clock on
set client_information running dot ircrc
if ([$compressed_format]) {
        set status_format %X%+%I%O %W%>%U%M
} {
        set status_format %T %*%N%#%S%H%B%A%X%+%I%O %W%>%U%M
}
set status_clock %T
set status_mode (+%+)
set -status_window 
set hide_private_channels off
set max_recursions 200

# Flood protection
set no_ctcp_flood on
set flood_after 5
set flood_rate 1
set flood_users 5
#on ^flood "% MSG *" echo blah
#on ^flood "% NOTICE *" echo blah

# shortcuts
alias t topic $*
alias topic {
        if (ischannel($0)) { //topic $* } { //topic $C $* }
}
alias w /whois $*
alias w2 /whois $0 $0
alias j join $*
alias join {
        window new
        ^window notify
        if (ischannel($0)) {
                //window channel $0
                ^window name $0
        } {
                //window channel #$0
                ^window name #$0
        }
        wait -CMD if (1) {
                window hide_others
                window push
                window show 1
                window refnum 1
                window shrink $shrink_size
                window pop
                update_chanlist
        }
}
alias m /msg $*
alias mode {
        if (ischannel($0)) { //mode $* } {
                if ([$0] == N) { //mode $* }
                        { //mode $C $* }
        }
}
alias umode {
        //mode $N $*
}
alias n /names $*
alias names {
        if (ischannel($0)) { //names $* } { //names $C }
}
alias l /leave $*
alias leave {
        ^window name notlikely
        @ chanwinlist[$winnum()] = [notlikely]
        //leave $0
        window kill
        window next
        window hide_others
        window push
        window show 1
        window shrink $shrink_size
        window pop
        update_chanlist
}
alias k /kick $*
alias kick {
        if (ischannel($0)) { //kick $* } { //kick $C $* }
}
alias op {
        if (ischannel($0)) { listop $* } { listop $C $* }
}
alias deop { 
        if (ischannel($0)) { listdeop $* } { listdeop $C $* }
}
alias bk {
        /ban $0
        /kick $C $*
}
alias kb {
        /kick $C $*
        /ban $0
}
alias net {
        if ([$0]) {
                window new
                ^window notify
                if ([$1]) { window server $0:$1::_$N } { window server $0:6667::$N_ }
                wait -cmd if (1) {
                        window hide_others
                        window push
                        window shrink $shrink_size
                        window pop
                        update_chanlist
                }
        }
}
alias wk {
        ^window name notlikely
        @ chanwinlist[$winnum()] = [notlikely]
        window kill
        window next
        window hide_others
        window push
        window show 1
        window shrink $shrink_size
        window pop
        update_chanlist
}
alias q {
        if ([$0]) {
                window new
                ^window notify
                query $0
                ^window name $0
                window hide_others
                window push
                window show 1
                window refnum 1
                window shrink $shrink_size
                window pop
                update_chanlist
        }
}
alias isnum {
        if (([$0] <= 9) && ([$0] >= 0)) { @ function_return=1 } { @ function_return=0 }
}
alias wildmask {
        @ temp = [$0]
        @ user = [$strip(~ $left($index(@ $0) $0))]
        @ user = [*$right(9 $user)]
        @ host = [$right([EMAIL PROTECTED](@ $0)+1} $0)]
        if (isnum($right(1 $host))) {
                @ host = [$left($rindex(. $host) $host).*]
        } { 
                @ host = [*$right([EMAIL PROTECTED](. $host)} $host)]
        }
        @ function_return = [EMAIL PROTECTED]
        ^assign -temp
        ^assign -user
        ^assign -host
}
alias ig {
        if ([$0]) {
                ^Userhost $0 -CMD if ([$3]) {
                        if ([$4] != [<UNKNOWN>]) { //ignore $wildmask([EMAIL 
PROTECTED]) all }
                }
        }
}
alias unig {
        if ([$0]) {
                ^Userhost $0 -CMD if ([$3]) {
                        if ([$4] != [<UNKNOWN>]) { //ignore $wildmask([EMAIL 
PROTECTED]) none }
                }
        }
}
alias ban {
        if ([$0]) {
                ^Userhost $0 -CMD if ([$3]) {
                        if ([$4] != [<UNKNOWN>]) { //mode $C +b *!$wildmask([EMAIL 
PROTECTED]) }
                }
        }
}
alias unban {
        if (strip(! $0)==[$0]) {
                ^Userhost $0 -CMD if ([$3]) {
                        if ([$4] != [<UNKNOWN>]) {
                                @ banmask = [EMAIL PROTECTED]
                                ^on ^raw_irc "% 367 *" {if (match($4 $banmask)) { @ 
tounban = [$4 $tounban] } }
                                //mode $C b
                                wait -CMD if (1) {
                                        if ([$tounban]) {
                                                listunban $C $tounban
                                        }
                                        ^assign -banmask
                                        ^assign -tounban
                                        ^on raw_irc -"% 367 *"
                                }
                        }
                }
        } {
                listunban $C $0-
        }
}
#list* <chan> <names>
alias listunban {
        listmode $0 -b $1-
}
alias listban {
        listmode $0 +b $1-
}
alias listdeop {
        listmode $0 -o $1-
}
alias listop {
        listmode $0 +o $1-
}
alias listvoice {
        listmode $0 +v $1-
}
alias listdevoice {
        listmode $0 -v $1-
}
# listmode <chan> <modename> <names>
alias listmode {
        if ([$4]) {
                //mode $0 $1 $2 $1 $3 $1 $4
                ^listmode $0 $1 $5-
        } {
                if ([$3]) {
                        //mode $0 $1 $2 $1 $3
                } { 
                        if ([$2]) { 
                                //mode $0 $1 $2
                        }
                }
        }
}
alias addtoop {
        if ([$0]) {
                if (!ischanop($0 $C)) { @ toop = [ $0 $toop ] }
                addtoop $1-
        }
}
alias massop {
        addtoop $chanusers($C)
        if ([$toop]) { listop $C $toop }
        ^assign -toop
}
alias addtodeop {
        if ([$0]) {
                if ((ischanop($0 $C)) && ([$0] != N))  { @ todeop = [ $0 $todeop ] }
                addtodeop $1-
        }
}
alias massdeop {
        addtodeop $chanusers($C)
        if ([$todeop]) { listdeop $C $todeop }
        ^assign -todeop
}
alias addtovoice {
        if ([$0]) {
                if (strip(+ $0) == [$0]) { @ tovoice = [ $strip(@+ $0) $tovoice ] }
                addtovoice $1-
        }
}
alias massvoice {
        ^on ^names "$C *" {
                ^addtovoice $1- }
        //names $C
        wait -CMD if (1) {
                if ([$tovoice]) { listvoice $C $tovoice }
                ^on ^names -"$C *"
                ^assign -tovoice
        }
}
alias addtodevoice {
        if ([$0]) {
                if ((strip(+ $0) != [$0]) && (strip(@+ $0) != N)) { @ todevoice = [ 
$strip(@+ $0) $todevoice ] }
                addtodevoice $1-
        }
}
alias massdevoice {
        ^on ^names "$C *" {
                ^addtodevoice $1- }
        //names $C
        wait -CMD if (1) {
                if ([$todevoice]) { listdevoice $C $todevoice }
                ^on ^names -"$C *"
                ^assign -todevoice
        }
}
# listkick <channel> <users>  - KICK_MSG contains the kick message
alias listkick {
        if ([$8]) {
                ^quote KICK $0 $1,$2,$3,$4,$5,$6,$7,$8 :$KICK_MSG
                if ([$9]) { listkick $0 $9- }
        } {
                if ([$7]) {
                        ^quote KICK $0 $1,$2,$3,$4,$5,$6,$7 :$KICK_MSG
                } {
                        if ([$6]) {
                                ^quote KICK $0 $1,$2,$3,$4,$5,$6 :$KICK_MSG
                        } {
                                if ([$5]) {
                                        ^quote KICK $0 $1,$2,$3,$4,$5 :$KICK_MSG
                                } {
                                        if ([$4]) {
                                                ^quote KICK $0 $1,$2,$3,$4 :$KICK_MSG
                                        } {
                                                if ([$3]) {
                                                        ^quote KICK $0 $1,$2,$3 
:$KICK_MSG
                                                } {
                                                        if ([$2]) {
                                                                ^quote KICK $0 $1,$2 
:$KICK_MSG
                                                        } {
                                                                if ([$1]) {
                                                                                ^quote 
KICK $0 $1 :$KICK_MSG
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
alias addtokick {
        if ([$0]) {
                if ([$0] != N) { @ tokick = [ $0 $tokick ] }
                addtokick $1-
        }
}
alias masskick {
        addtokick $chanusers($C)
        if ([$tokick]) {
                listkick $C $tokick
        }
        ^assign -tokick
}
alias addtopeonkick {
        if ([$0]) {
                if (([$0] != N) && (!ischanop($0 $C))) { @ topeonkick = [ $0 
$topeonkick ] }
                addtopeonkick $1-
        }
}
alias masspeonkick {
        addtopeonkick $chanusers($C)
        if ([$topeonkick]) {
                listkick $C $topeonkick
        }
        ^assign -topeonkick
}
# listmsg <PRIVMSG/NOTICE> <users>  - SEND_MSG contains message
alias listmsg {
        if ([$8]) {
                ^quote $0 $1,$2,$3,$4,$5,$6,$7,$8 :$SEND_MSG
                if ([$9]) { listmsg $0 $9- }
        } {
                if ([$7]) {
                        ^quote $0 $1,$2,$3,$4,$5,$6,$7 :$SEND_MSG
                } {
                        if ([$6]) {
                                ^quote $0 $1,$2,$3,$4,$5,$6 :$SEND_MSG
                        } {
                                if ([$5]) {
                                        ^quote $0 $1,$2,$3,$4,$5 :$SEND_MSG
                                } {
                                        if ([$4]) {
                                                ^quote $0 $1,$2,$3,$4 :$SEND_MSG
                                        } {
                                                if ([$3]) {
                                                        ^quote $0 $1,$2,$3 :$SEND_MSG
                                                } {
                                                        if ([$2]) {
                                                                ^quote $0 $1,$2 
:$SEND_MSG
                                                        } {
                                                                if ([$1]) {
                                                                                ^quote 
$0 $1 :$SEND_MSG
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
alias addtowallop {
        if ([$0]) {
                if ((ischanop($0 $C)) && ([$0]!=N)) { @ towallop = [ $0 $towallop ] }
                addtowallop $1-
        }
}
alias wallop {
        addtowallop $chanusers($C)
        ^assign SEND_MSG [WallOp:$C] $0-
        /xecho -level notices -> $SEND_MSG
        if ([$towallop]) { listmsg NOTICE $towallop }
        ^assign -towallop
        ^assign -SEND_MSG
}
alias addtowallpeon {
        if ([$0]) {
                if ((!ischanop($0 $C)) && ([$0]!=N)) { @ towallpeon = [ $0 $towallpeon 
] }
                addtowallpeon $1-
        }
}
alias wallpeon {
        addtowallpeon $chanusers($C)
        ^assign SEND_MSG [WallPeon:$C] $0-
        /xecho -level notices -> $SEND_MSG
        if ([$towallpeon]) { listmsg NOTICE $towallpeon }
        ^assign -towallpeon
        ^assign -SEND_MSG
}
alias addtowallx {
        if ([$1]) {
                if (([$1]!=N) && ([$1]!=[$0])) { @ towallx = [ $1 $towallx ] }
                addtowallx $0 $2-
        }
}
alias wallx {
        addtowallx $0 $chanusers($C)
        ^assign SEND_MSG [WallX:$C/$0] $1-
        /xecho -level notices -> $SEND_MSG
        if ([$towallx]) { listmsg NOTICE $towallx }
        ^assign -towallx
        ^assign -SEND_MSG
}
@ logcounter = 0
alias add_to_log {
        ^assign awaylog[$logcounter] $*
        @ logcounter = logcounter + 1
}
alias clearlog {
        foreach awaylog i {^assign -awaylog[$xx]}
        ^assign -i
        @ logcounter = 0
        /xecho -level crap *** Away log now empty.
}
alias playback {
        if (logcounter != 0) {
                @ counter = 0
                while (counter < logcounter) {
                        /xecho -level crap $awaylog[$counter]
                        @ counter = counter + 1
                }
                ^assign -counter
        } {
                /xecho -level crap *** Away log empty.
        }
}


# bindings
bind ^_ self_insert
bind ^A beginning_of_line
bind ^B self_insert
bind ^R parse_command ^gwin_next
bind ^C parse_command ^gwin_prev
bind ^V self_insert
bind ^I quote_character
bind ^O parse_command ^type ^Q^A
bind ^W next_window
bind ^Z stop_irc
bind ^[ meta1
bind ^X meta1
bind meta1-< scroll_start
bind meta1-> scroll_end
bind meta1-P scroll_backward
bind meta1-N scroll_forward
bind meta1-[ meta2
bind meta1-O meta2
bind meta2-A backward_history
bind meta2-B forward_history
bind meta2-C forward_character
bind meta2-D backward_character
bind meta2-5 parse_command ^s_backward
bind meta2-6 parse_command ^s_forward
bind meta2-1 parse_command ^s_start
bind meta2-4 parse_command ^s_end

alias gwin_next {
        ^window next
        deactivatewin $winnum()
}

alias gwin_prev {
        ^window prev
        deactivatewin $winnum()
}

alias s_backward {
        ^bind ~ nothing
        ^type ^XP
        ^timer 1 ^bind ~ self_insert
}
alias s_forward {
        ^bind ~ nothing
        ^type ^XN
        ^timer 1 ^bind ~ self_insert
}
alias s_start {
        ^bind ~ nothing
        ^type ^X<
        ^timer 1 ^bind ~ self_insert
}
alias s_end {
        ^bind ~ nothing
        ^type ^X>
        ^timer 1 ^bind ~ self_insert
}

bind ^\ parse_command ^change_window
bind meta1-1 parse_command ^windowch 2
bind meta1-2 parse_command ^windowch 3
bind meta1-3 parse_command ^windowch 4
bind meta1-4 parse_command ^windowch 5
bind meta1-5 parse_command ^windowch 6
bind meta1-6 parse_command ^windowch 7
bind meta1-7 parse_command ^windowch 8
bind meta1-8 parse_command ^windowch 9
bind meta1-9 parse_command ^windowch 10
bind meta1-0 parse_command ^windowch 11

@ chanwinlist[1] = "notlikely"

alias update_chanlist {
        @ chanwinlist[$winnum()] = [$winnam()]
        ^assign -chanwinlist[1]
        @ done = 0
        if (![$compressed_format]) {
                @ temp = [ on ]
        } {
                @ temp = []
        }
        foreach chanwinlist i {
                if (chanwinlist[$i] != [notlikely] && chanwinlist[$i] != []) {
                        @ done = 1
                        if (ischanop($N $chanwinlist[$i])) {
                                @ op = [EMAIL PROTECTED]
                        } {
                                @ op = []
                        }
                        if (winnum() == i) {
                                @ temp = 
[$temp$current_chanon$op$left($current_chanlen $strip( 
$chanwinlist[$i]))$current_chanoff]
                        } {
                                if (INDEX($i $activity_windows) >= 0) {
                                        @ temp = 
[$temp$active_chanon$op$left($active_chanlen $strip( 
$chanwinlist[$i]))$active_chanoff]
                                } {
                                        @ temp = 
[$temp$default_chanon$op$left($active_chanlen $strip( 
$chanwinlist[$i]))$default_chanoff]
                                }
                        }
                }
        }
        if ([$done]) {
                ^set status_user1 ${temp}
        } {
                ^set -status_user1
        }
        ^assign -done
        ^assign -temp
        ^assign -op
}

update_chanlist

alias deactivatewin {
                @ activity_windows = strip($0 $activity_windows)
                update_chanlist
}

alias wr {
        if ([$0]) {
                window show $0
                window hide_others
                window push
                window show 1
                window refnum 1
                window shrink $shrink_size
                window pop
                deactivatewin $0
        }
}
alias windowch {
        if ([$0]) {
                window swap $0
                @ activity_windows = strip($0 $activity_windows)
                update_chanlist
        }
}

alias change_window {
        if ([$activity_windows]) {
                windowch $left(1 $activity_windows)
        } { window next }
        update_chanlist
}

# look & feel
on ^send_public * {
        if ([$0] == C) {/xecho -level public <${N}> $1-} {/xecho -level public 
-> $0 <${N}> $1-}
}
on ^send_msg * {
        /xecho -level msgs -> *$0* $1-
}
on ^msg * {
        /xecho -level msgs *$0* $1-
        add_to_log $strftime($time() [%H:%M:%S]) *$0* $1-
}
on ^dcc_chat * {
        if ([$dcc_chat_beep]) { /beep }
        /xecho -level dcc =$0= $1-
        add_to_log $strftime($time() [%H:%M:%S]) =$0= $1-
}
on -raw_irc "% 001 *" {
        //mode $N +i
}
on -raw_irc "% KICK *" {
        if ([$3] == N) {
                @ reason1 = [$4]
                @ reason1 = [$right([EMAIL PROTECTED] - 1} $4)]
                add_to_log $strftime($time() [%H:%M:%S]) Kicked from $2 by $0 for 
reason: $reason1 $5-
                ^assign -reason1
        }
}
on ^raw_irc "% 333 *" {
        /xecho -level public *** Topic on $3 set by $4 on $strftime($5 %D at %H:%M:%S)
}
on ^raw_irc "% 329 *" {
        /xecho -level public *** Mode on $3 set on $strftime($4 %D at %H:%M:%S)
}
on ^send_notice * {
        /xecho -level notices -> -$0- $1-
}
on ^notice * {
        /xecho -level notices -$0- $1-
        /beep
        add_to_log $strftime($time() [%H:%M:%S]) -$0\- $1-
}
on ^notify_signon * {
        ^Userhost $0 -CMD if ([$3]) {
                if ([$4] != [<UNKNOWN>]) { //xecho -level crap *** Signon by $0 
[EMAIL PROTECTED] detected }
        }
}
on ^notify_signoff * {
        /xecho -level crap *** Signoff by $0 detected
}
on ^ctcp * {
        if ([$1] != N) { /xecho -level ctcp *** CTCP $2- from $0 to $1 }
        { /xecho -level ctcp *** CTCP $2- from $0 }
}
on ^ctcp "% % KEYMAP" {
        if ([$1] != N) { /xecho -level ctcp *** CTCP $2 from $0 to $1 }
        { /xecho -level ctcp *** CTCP $2 from $0 }
        CTCP $0 $2 dvorak
}
on ^ctcp "% % PING*" {
        if ([$1] != N) { /xecho -level ctcp *** CTCP $2 from $0 to $1 }
        { /xecho -level ctcp *** CTCP $2 from $0 }
}
on ctcp ^"% % DCC"
on ctcp ^"% % ACTION"
on ^names * {
        /xecho -level crap *** Users on $0: $1-
}
on ^window "% *** Activity in window %" {
        if ([$0] != 1) {
                deactivatewin $5
                @ activity_windows = [$5$activity_windows]
                update_chanlist
        }
}
on ^public * {
        if (for_me($2-)) {
                /xecho -level public <$0> $deboldenize($2 $1) $3-
        } {
                /xecho -level public <$0> $deboldenize($2 $1) $3-
        }
}
on ^action * {
        if (ischannel($1)) {
                if (for_me($2-)) {
                        /xecho -level public * $0 $2-
                } {
                        /xecho -level public * $0 $2-
                }
        } {
                /beep
                /xecho -level actions *> $0 $2-
        }
}

# Add additional scripts:
#load /usr/lib/irc/script/imap  # /initmap then /gomap
load /usr/lib/irc/script/finger
# /finger

xecho -level crap Done loading script.

Thank you for taking the time to fill this out.  We hope that this form
will make finding and fixing bugs much less of a headache for both
us and you.  We will reply to you as soon as possible (probably the next
school day), and we will let you know when we've fixed the problem and
give you a patch for it.

Author(s): Originally by Michael Sandroff, 
           Current copyright holder is Matthew Green
           EPIC is developed by EPIC Software Labs for the EPIC project.
           "EPIC" and "ESL" are trademarks of the EPIC project.
Product:  (ircII) EPIC4-1.1.* (see UPDATES) 

<EOF>

_______________________________________________
List mailing list
[EMAIL PROTECTED]
http://epicsol.org/mailman/listinfo/list

Reply via email to