pkg://ircii-EPIC-3.004+SrfRoG-1.src.rpm:689475/ircii-EPIC-3.004+SrfRoG.tar.gz
info downloads
ircii-EPIC-3.004+SrfRoG/ 40755 0 0 0 6533632212 12457 5 ustar root root ircii-EPIC-3.004+SrfRoG/BUG_FORM 100600 0 144 5366 6263041224 14165 0 ustar root users
If you should see what you think to be a bug, please fill out
this form and send to the following address(es):
ircii-epic@concentric.net
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? (include version, if known)
Your compiler (include version, if known)
What scripts/script packs you run (phoenix, uus, superpack, etc)
Anything else you think might be helpful.
Question two: Where does your problem occur?
[ ] Configure time (dies while running configure)
[ ] Compiler time (dies when you type 'make')
[ ] Run time (dies when you use the program)
[ ] Run time (non-fatal logic bug)
If it is configure time, please include a cut and paste of everything
that appears on your screen from the line when you type "./configure"
until you see your prompt again. Please do not leave out any
lines, for any line may contain very important information!
If it is at compile time, please include a cut and paste of
everything that appears on your screen from the line when you
type 'make' until you see your prompt again. Please do not leave
out any lines, for any line may contain very important information!
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?
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.
Please include any other information that you think we should know about.
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-EPIC3 (see UPDATES)
<EOF>
ircii-EPIC-3.004+SrfRoG/INSTALL 100600 0 144 3557 6174311606 14040 0 ustar root users How to compile this package:
Its really quite simple -- its about the same difficulty as compiling
any GNU software (however, this is _not_ GNU software)
o Run 'configure' by using one (and only one) of the following:
./configure
sh configure
o By default, 'configure' sets up the software to be run from
/usr/local -- if this is not the case for you (ie, you are not
the superuser compiling for the entire system) you can run
configure with the "--prefix=/path/to/somewhere" flag, for example:
./configure --prefix=/usr/home/jnelson
o This IRC II client can be compiled and run on almost every unix
known to man. It can compile on both an old ("K&R") compiler as
well as a new ("ANSI") compiler. It definitely should work fine
for all reasonable POSIX systems (4.4BSD, SVR4, OSF/2, Linux), and
will probably work on SVR3, 4.2BSD, and even NeXT systems.
o To compile ircii, type 'make' in the main ircii directory. This
will compile the `irc', `ircflush', `ircserv' and `wserv' programs
that live in the `source' subdirectory.
o Once that you are happy with the compilation, you can install them
with `make install'. This will install all the binaries, scripts,
translation tables, man pages, and help files into the path you
specified in the Makefile (or when you ran configure)
o You can now delete the object files and binaries if you want to
save some space by typing `make clean'. If you are sure you probably
wont have to compile again, but you want to keep the source code
around, you can use `make distclean'. You should make distclean
before you try to compile again for a different architecture.
o Bug reports go to ircii@cris.com. Please see the BUG_FORM file for
information about how to file a bug report. Please include as much
information as possible.
ircii-EPIC-3.004+SrfRoG/Jamfile.in 100600 0 144 366 6215277165 14670 0 ustar root users #
# IRC II - written by Michael Sandrof
# Copyright 1991, 1996, Michael Sandrof and others, All Rights Reserved
#
# This file (Jamfile.in) is donated to the public domain
# Pay no attention to the man behind the curtain
#
SubDir TOP source ;
ircii-EPIC-3.004+SrfRoG/Jamrules.in 100600 0 144 6062 6215277740 15121 0 ustar root users #
# IRC II - written by Michael Sandrof
# Copyright 1991, 1996 Michael Sandrof and others, All Rights Reserved
#
# This file (Jambase.in) is donated to the public domain.
# Pay no attention to the man behind the curtain.
#
# Default paths (system-wide installs)
prefix = @prefix@ ;
exec_prefix = @exec_prefix@ ;
bindir = @bindir@ ;
# Where the ircII binary will be installed.
# 'make install' will compile and install the program
INSTALL_IRC = $(bindir)/irc ;
# Where the ircII library will be. This is the place where 'make install'
# will put the scripts, help pages, and translation tables. It is very
# important that this is set correctly.
IRCLIB = @IRCLIB@ ;
# Alternate paths for me (home directory installs)
#prefix = $(HOME)/irc/client ;
#exec_prefix = $(prefix) ;
#bindir = $(prefix) ;
#IRCLIB = $(bindir)/irclib ;
CC = @CC@ ;
DEFS = @DEFS@ ;
LIBS = @LIBS@ ;
# Set this to -g if you want to be able to debug the client, otherwise
# use -O to have the compiler do some optimization instead.
CFLAGS = @CFLAGS@ ;
# set this to whatever flag your compiler takes to turn on ansi mode.
# gcc is ansi by default, but you can specify -ansi anyhow. Digital's
# 'cc' requires this, as may other non-gcc compilers.
# Typically, its "-ansi" or "-std1" or some such thing.
ANSIFLAGS = ;
# Set this to -s if you want the binary to be striped.
LDFLAGS = @LDFLAGS@ ;
####### You probably don't need to change anything below this line ##########
#
# Full path of the directory for ircII help files.
# The help files are not within the source distribution, if you don't have
# them and want them, check out your nearest ircII archive.
# You may comment HELP_DIR, then the ircIIhelp service will be used.
# If you don't comment it out and want to use the IRCIIHelp service anyway,
# you must make sure that the directory doesn't exist.
HELP_DIR = $(IRCLIB)/help ;
# Full path of the directory in which to copy the
# IRCII scripts supplied with the code. These scripts
# may be loaded by using the LOAD command in IRCII.
INSTALL_SCRIPT = $(IRCLIB)/script ;
# Default setting for IRC_PATH where irc will look for
# its script files if the environment variable is undefined.
# Usually, this should contain the same path as used for INSTALL_SCRIPT in
# the Makefile, but it can contain multiple path elements
# separated by colons. The path MUST lead to an existing directory,
# because the 'global' script is expected to be found there.
IRC_PATH = ~/.irc:$(INSTALL_SCRIPT):. ;
# Path for TRANSLATION variable.
TRANS_PATH = $(IRCLIB)/translation ;
# Set the next line to the full path for installation of the ircserv program
# if you wish to use it.
INSTALL_IRCSERV = $(bindir)/ircserv ;
# This little program is necessary to have an interactive shell
# in a window of ircII. The 'shell' script uses it, so also update
# the path in there, if you want to enable this.
INSTALL_IRCFLUSH = $(bindir)/ircflush ;
# This program allows you to use screen/xterm's to put new irc windows
# on new screen/xterm windows.
INSTALL_WSERV = $(bindir)/wserv ;
#
# The version of this copy of IRC II
#
VERSION = @VERSION@ ;
ircii-EPIC-3.004+SrfRoG/KNOWNBUGS 100600 0 144 607 6273600020 14247 0 ustar root users BUGS REPORTED, OUTSTANDING, OR FIXED SINCE LAST RELEASE (EPIC3.003)
PENDING THINGS:
--------------
BUGS FIXED/CHANGES MADE SINCE THE LAST RELEASE
----------------------------------------------
* Fixed bug with /set lastlog_level all -c (rb crowman)
* Fixed bug with $N and $R (rb wc)
* Fixed lame bug with /leave, /part (rb wc)
* Fixed bug with line wrapping with ansi chars used (colten)
ircii-EPIC-3.004+SrfRoG/Makefile.in 100600 0 144 15732 6227207473 15077 0 ustar root users # IRC II - written by Michael Sandrof
# Copyright (c) 1991 - All Rights Reserved
# Modified by Matthew Green, 1993.
#
# @(#)$Id: Makefile.in,v 1.27 1995/01/05 06:40:23 mrg stable $
# targets recognised by this makefile:
# all, everything - compiles ircii, ircserv, ircflush and wserv
# ircserv - compiles ircserv
# ircflush - compiles ircflush
# wserv - compiles wserv
# install - installs ircii, ircserv, ircflush and wserv the scripts
# and the translation tables.
# installirc - installs ircii
# installserv - installs ircserv
# installwserv - installs wserv
# installflush - installs ircflush
# installscript - installs the scripts
# installtranslation - installs the translation tables
# installeverything - all of the above
# clean - remove all .o files, core, and binaries
# disclean - remove all files geneated by compilation/installation.
# Default paths (system-wide installs)
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
# Where the ircII binary will be installed.
# 'make install' will compile and install the program
INSTALL_IRC = $(bindir)/irc
# Where the ircII library will be. This is the place where 'make install'
# will put the scripts, help pages, and translation tables. It is very
# important that this is set correctly.
IRCLIB = @IRCLIB@
# Alternate paths for me (home directory installs)
#prefix = $(HOME)/irc/client
#exec_prefix = $(prefix)
#bindir = $(prefix)
#IRCLIB = $(bindir)/irclib
CC = @CC@
DEFS = @DEFS@
LIBS = @LIBS@
# Set this to -g if you want to be able to debug the client, otherwise
# use -O to have the compiler do some optimization instead.
CFLAGS = @CFLAGS@
# set this to whatever flag your compiler takes to turn on ansi mode.
# gcc is ansi by default, but you can specify -ansi anyhow. Digital's
# 'cc' requires this, as may other non-gcc compilers.
# Typically, its "-ansi" or "-std1" or some such thing.
ANSIFLAGS =
# Set this to -s if you want the binary to be striped.
LDFLAGS = @LDFLAGS@
####### You probably don't need to change anything below this line ##########
#
# Full path of the directory for ircII help files.
# The help files are not within the source distribution, if you don't have
# them and want them, check out your nearest ircII archive.
# You may comment HELP_DIR, then the ircIIhelp service will be used.
# If you don't comment it out and want to use the IRCIIHelp service anyway,
# you must make sure that the directory doesn't exist.
HELP_DIR = $(IRCLIB)/help
# Full path of the directory in which to copy the
# IRCII scripts supplied with the code. These scripts
# may be loaded by using the LOAD command in IRCII.
INSTALL_SCRIPT = $(IRCLIB)/script
# Default setting for IRC_PATH where irc will look for
# its script files if the environment variable is undefined.
# Usually, this should contain the same path as used for INSTALL_SCRIPT in
# the Makefile, but it can contain multiple path elements
# separated by colons. The path MUST lead to an existing directory,
# because the 'global' script is expected to be found there.
IRC_PATH = ~/.irc:$(INSTALL_SCRIPT):.
# Path for TRANSLATION variable.
TRANS_PATH = $(IRCLIB)/translation
# Set the next line to the full path for installation of the ircserv program
# if you wish to use it.
INSTALL_IRCSERV = $(bindir)/ircserv
# This little program is necessary to have an interactive shell
# in a window of ircII. The 'shell' script uses it, so also update
# the path in there, if you want to enable this.
INSTALL_IRCFLUSH = $(bindir)/ircflush
# This program allows you to use screen/xterm's to put new irc windows
# on new screen/xterm windows.
INSTALL_WSERV = $(bindir)/wserv
############ You shouldn't change anything below this line ###################
srcdir = .
RM = @RM@
LN = @LN@
CP = cp
MV = mv
INSTALL = ./bsdinstall -c -m 755
INSTALL_DATA = ../bsdinstall -c -m 644
VERSION = @VERSION@
SHELL = /bin/sh
MAKE = make $(MFLAGS)
MFLAGS ='CC=$(CC)' \
'ANSIFLAGS=$(ANSIFLAGS)' \
'CFLAGS=$(CFLAGS)' \
'DEFS=$(DEFS)' \
'HELP_DIR=$(HELP_DIR)' \
'INSTALL_IRC=$(INSTALL_IRC)' \
'INSTALL_IRCSERV=$(INSTALL_IRCSERV)' \
'INSTALL_WSERV=$(INSTALL_WSERV)' \
'IRCLIB=$(IRCLIB)' \
'IRCPATH=$(IRC_PATH)' \
'LDFLAGS=$(LDFLAGS)' \
'LIBS=$(LIBS)' \
'LN=$(LN)' \
'PP_DEFS=$(PP_DEFS)' \
'PP_OBJS=$(PP_OBJS)' \
'PPS_DEFS=$(PPS_DEFS)' \
'RM=$(RM)' \
'TRANS_DIR=$(TRANS_PATH)'
all: irc ircserv ircflush wserv
everything: all
install installeverything: all installbin installscript installtranslation
installbin: installirc installserv installflush installwserv
irc: source/Makefile Makefile
@cd source; $(MAKE) all
installirc: irc installdirs test
if ./my_test \( ! -f $(INSTALL_IRC)-$(VERSION) \) -o source/irc -nt $(INSTALL_IRC)-$(VERSION); then \
$(INSTALL) source/irc $(INSTALL_IRC)-$(VERSION); \
if ./my_test -f $(INSTALL_IRC).old; then $(RM) $(INSTALL_IRC).old; fi; \
if ./my_test -f $(INSTALL_IRC); then $(MV) $(INSTALL_IRC) $(INSTALL_IRC).old; fi; \
$(RM) $(INSTALL_IRC); \
$(LN) $(INSTALL_IRC)-$(VERSION) $(INSTALL_IRC); \
fi
ircserv: source/Makefile
@cd source; $(MAKE) ircserv
installserv: ircserv installdirs test
if ./my_test \( \! -f $(INSTALL_IRCSERV) \) -o source/ircserv -nt $(INSTALL_IRCSERV); then \
$(INSTALL) source/ircserv $(INSTALL_IRCSERV); \
fi
ircflush: source/ircflush.c source/Makefile
@cd source; $(MAKE) ircflush
installflush: ircflush installdirs test
if ./my_test \( \! -f $(INSTALL_IRCFLUSH) \) -o source/ircflush -nt $(INSTALL_IRCFLUSH); then \
$(INSTALL) source/ircflush $(INSTALL_IRCFLUSH); \
fi
wserv: source/wserv.c source/term.c source/Makefile
@cd source; $(MAKE) wserv
installwserv: wserv installdirs test
if ./my_test \( \! -f $(INSTALL_WSERV) \) -o source/wserv -nt $(INSTALL_WSERV); then \
$(INSTALL) source/wserv $(INSTALL_WSERV); \
fi
installscript: installdirs test
-chmod -x script/*
-@( \
if ./my_test -f $(INSTALL_SCRIPT)/local; then \
if ./my_test -f script/local; then \
$(MV) script/local script/local.orig; \
fi; \
fi \
)
cd script; \
for i in *; \
do \
if ../my_test \( \! -f $(INSTALL_SCRIPT)/$$i \) -o $$i -nt $(INSTALL_SCRIPT)/$$i; then \
$(INSTALL_DATA) $$i $(INSTALL_SCRIPT); \
fi; \
done
installtranslation: installdirs test
-chmod -x translation/*
cd translation; \
for i in *; \
do \
if ../my_test \( \! -f $(TRANS_PATH)/$$i \) -o $$i -nt $(TRANS_PATH)/$ii; then \
$(INSTALL_DATA) $$i $(TRANS_PATH); \
fi; \
done
installhelp: installdirs
(cd help; tar cf - .) | (cd $(HELP_DIR); tar xf -)
installdirs:
umask 022; ./mkinstalldirs $(IRCLIB) $(bindir) $(TRANS_PATH) $(INSTALL_SCRIPT) $(HELP_DIR)
test.o: test.c
$(CC) -c test.c
test: test.o
$(CC) test.o -o my_test
clean:
@-if test -f source/Makefile; then cd source; $(MAKE) clean; fi
distclean cleandir realclean: clean
$(RM) Jamfile Jamrules source/Jamfile Makefile source/Makefile source/sig.inc config.status config.cache config.log easyinst.status include/defs.h test.o my_test
depend:
(cd source;make depend)
ircii-EPIC-3.004+SrfRoG/UPDATES 100600 0 0 304413 6442542375 13652 0 ustar root root EPIC3.003 [[MORE BY DEMAND]]
*** News 11/08/97 -- DCC SENDs now trigger the ON DCC_REQUEST hook.
Same thing as with DCC GETs but for DCC SENDs. When you send
a file to someone, the DCC_REQUEST hook will be activated.
*** News 11/04/97 -- Syntax of QUOTE command improved.
Now the QUOTE commands can take an argument for the
server to send data to.
/QUOTE -server <server index number>
This will only work if the server is connected.
The old behavior still works.
*** News 7/14/97 -- Support for ISO2469 (mIRC) colors added.
To toggle it ON/OFF, set the variable "DISPLAY_COLOR".
The format is:
^Cxx,yy
Where xx is the foreground value (0 - 16) and yy the
background value (0 - 16). The "," must be present if
a background color is desired.
Possible combinations include:
^Cxx - Set just foreground color.
^C,yy - Set just background color.
^Cxx,yy - Set both.
^C - Toggles color OFF.
There can't be spaces between ^C and the xx|yy values or ",".
Sematics:
operator := [int] ["," + [int]]
If no background color is given and "," is supplied, the comma
will be taken as literal and displayed as part of regular text.
Possible colors (Color Table):
1/black 2/navy blue 3/green 4/red 5/brown 6/purple 7/orange 8/yellow
9/birgh green 10/greyblue 11/brightblue 12/blue
13/magenta 14/dark gray 15/gray 16 or 0/ white
These are valid for both foreground and background colors. Any
value exceeded than 16 will go to a lower denominator of 16.
-- SrfRoG (srfrog@nema.com).
*** News 12/30/96 -- Support for all 26 possible user modes
All user modes are now supported. This should be the last
of it until someone comes up with the bright idea of making
uppercase modes mean different things (and ill strangle the
bastard who does...) I based it on the idea from sheik, but
i took a quite different approach...
*** News 12/27/96 -- New built in command /repeat
Up until now, /repeat has been an alias. This has been a pain
in the butt, because all of them either cant be used recursively,
or theyre terribly expensive to use (or both). So now you have
a zero-overhead /repeat command that can be used without any
headaches.
There are two forms. The old one you all know and love, and a new
form that allows you to specify an expression in parens:
/repeat text command(s) (traditional form)
/repeat (exp) command(s) (new form)
eg, the following two commands are equivalent:
/repeat $var {commands}
/repeat (var) {commands)
*** News 12/12/96 -- New command, /input_char
/input_char is identical to /input, except that it returns after
only one character has been pressed, instead of waiting for the
return key to be pressed. See the 'less' script for an example.
/input_char has problems with /wait and /pause just like /input.
*** News 12/12/96 -- New command, /pause <X>
If you specify an argument, the client will wait X seconds
before continuing. Its kind of a mix between /wait and /sleep,
except that this is nonblocking (unlike sleep) and doesnt send
anything to the server (unlike wait). It also doesnt assure
that you wont have any race conditions (unlikes wait) and it
will parse all incoming traffic normally (unlike sleep).
If no argument is specfied, the client will wait for the user
to press a key. This kind of sort of works, but not really so
much as i would recommend you use it unless you do so as an
experiment as to whether it really works in the real world.
Maybe if you find bugs youll tell me about it? >;-)
/pause does recursive calls to io() (much like /wait does).
That means that it has problems if you intermix calls to /input
while you are /pause'd, and vice versa. Let the coder beware.
*** News 12/12/96 -- New /window option, "BEEP_ALWAYS"
This option allows you to control whether a beep in a hidden
window will still beep. (Up until now, it has not.) If this
is ON, then a beep in a hidden window will beep anyhow. If
this is OFF, then a beep in a hidden window will be silent.
*** News 12/12/96 -- /ON DCC_CONNECT/DCC_REQUEST changed
Arguments to /ON DCC_REQUEST are now:
$0 Nickname of other peer
$1 The type of DCC
$2 Filename or other information
$3 The remote IP
$4 The remote port
$5 Filename (DCC SEND only)
$6 File Size (DCC SEND only)
Arguments to /ON DCC_CONNECT are now:
$0 Nickname of the other peer
$1 The type of DCC
$2 The remote IP
$3 The remote port
$4 Filename (DCC SEND only)
$5 File Size (DCC SEND only)
*** News 12/10/96 -- Virtual Hostname support
The IRCHOST environment variable, and the /hostname (/irchost)
commands reflect this new support. Supposedly it works on
feeding, so i guess its ok. (thanks to flarp)
*** News 12/09/96 -- Double line status bar
/window double and its attendant features have been added.
You can thank Archon for doing all the work =)
*** News 12/06/96 -- New status line variable
You can now use %= in your status format to denote when
you are a channel voice (+v). It only goes on when you are
+v but not also +o. (Crowman)
*** News 11/25/96 -- New Built in function $winvisible()
Archon pestered me enough to put this in that i did so that
he would leave me alone. ;-)
It takes one argument, a reference to a window.
The return value is:
1 if window exists and is visible
0 if window exists and is hidden
-1 if the window does not exist (error)
EPIC3.002 [[MINOR RELEASE]]
*** News 10/29/96 -- New functionality to /timer
You may now specify any arbitrary string (up to 10 characters)
as the refnum for /timer. Example:
/timer -refnum foobar 10 echo booya booya booya boo!
*** News 10/28/96 -- New script ``fake-dcc''
I wrote a new script to demonstrate the two features below.
It allows the client to (at random) substitute any word out
of a list for the word ``DCC'' in a DCC handshake. The
reciever, if they have the same list of words, will then be
able to decode it using this script.
*** News 10/28/96 -- New /on, /ON SEND_TO_SERVER
Any time anything is sent to a server, this will be hooked. It
takes three (or more) arguments:
$0 - the server refnum
$1 - the unix filedescriptor
$2- - what is being sent
Note that using this /on is very expensive -- expensive along the
same lines as /on raw_irc. So please use with discernment.
If you hook this SILENTLY, you will inhibit the sending of the
message to the server. You can then use /QUOTE to send a new
message. Please note that use of /QUOTE in /ON SEND_TO_SERVER
can cause an infinitely loop that will crash your client if you
are not careful. It is up to you to not do that.
on ^send_to_server "% % % PRIVMSG % :$chr(1)DCC*" {
quote PRIVMSG $4 :$chr(1)$getrandword($fake_dcc) $6-
}
*** News 10/28/96 -- New command, /PRETEND
The pretend command allows you to ``pretend'' that a line has come
from the CURRENT server. Use of this command where the current
server is undefined results in undefined behavior. Use of this
command is expensive and can lead to convoluted scripting. You
(of course) can use it however you wanted, but i had in mind a way
to fake out the client when there is no other way to get around
some client limitation. See the ``fake-dcc'' script for an example
of such a case.
on ^raw_irc "% PRIVMSG % :$chr(1)\\[$fake_dcc\\]*" {
pretend $0 $1 $2 :$chr(1)DCC $4-
}
EPIC3.001 [[FINAL PUBLIC RELEASE]]
*** News 10/12/96 -- Solidified syntax for /SERVER
Now you may use either of the forms:
server:port:password:nick
or server port password nick
for the ``server'' argument(s) to /SERVER. Of course, all fields,
except for the ``server'' field, are optional. If you want to
omit a field, you will have to use the colon-seperated syntax.
*** News 10/11/96 -- New built in function
$uniq(... list of words ...) -- The easiest way to explain this is
that each word in the given list is present at most once in the
return value.
*** News 10/04/96 -- New /set, /SET COMMENT_HACK
Sheik wanted this to become a /set rather than a compile time option.
Just remember to make sure this is the right setting, (It should be
ON usually), or your scripts could get very confused.
*** News 10/04/96 -- New /set, /SET DCC_STORE_PATH
This setting determines what directory you want your incoming dcc's
to be stored into. You must have it set correctly before you
/dcc get, as there's no turning back after that. Twiddles are
expanded, there is no default (puts it into the current directory).
*** News 10/03/96 -- New command, /CALL
The built in command "/CALL" outputs to the display the current
script-level stack trace. These are the commands whose execution
is in progress.
If the client crashes (due to a segmentation or bus fault), the
stack trace will be displayed, as an aid to debugging.
There must be a #define WIND_STACK in config.h (the default).
This will show up as an 'a' in $info(o)
*** News 09/23/96 -- New built-in-functions
Several new built in functions are available:
$chmod([filename|fd] perm) -- given either a filename, or a file
descriptor corresponding to a previously $open()ed file, change the
permissions on that file to 'perm', which is an absolute octal value.
Example: $chmod(foobar 0700). See the man page for 'chmod' for
more information.
$umask(perm) -- specfies the bits that are to be turned OFF when
you next create a file. This affects every file that the client
may create during the same session, including but not limited to
any $open()s, or /save's. The old umask is returned, so you can
restore it later if you want to. See the man page for 'umask'
for more information.
*** News 09/18/96 -- Information about /on send_notice
/on send_notice is triggered any time you send a notice or a notice
is sent on your behalf, unless such triggering would cause an infinite
loop, in that case the /on is NOT triggered. If you want to send a
notice without it ever being triggered, try /quote notice instead.
*** News 09/18/96 -- /set AUTO_REJOIN semantics fixed
It should now rejoin in the CORRECT window instead of the current
window. This should make some people happy. =)
*** News 09/18/96 -- New flag to /XECHO -- "-CURRENT"
/XECHO -CURRENT ..... sends "....." to your current window.
Im not really sure why i told people to use this when it didnt
exist. *cough*.
*** News 09/17/96 -- Change to /WINDOW ADD and /WINDOW DELETE.
James pointed out that you cant /WINDOW ADD a nick that begins
with a caret ('^'), and that a caret is a legal n-char.
Furthermore, /WINDOW REMOVE has existed and is the "normal"
way to remove nicknames from the list. Therefore, you may no
longer remove a nick from the window's "nicklist" by prepending
it with a caret ('^'). You must now use /WINDOW REMOVE to remove
any nicknames. You may now /WINDOW ADD nicks that start with a
caret without any error messages.
*** News 09/16/96 -- New set, /SET DCC_SLIDING_WINDOW <int>
When you are sending a file to any peer, EPIC will send
<int> packets at the initiation and attempt to always keep
<int> packets outstanding. This is a simplistic implementation
of the traditional sliding window algorithm. There is no irc-level
error correction: We depend entirely on TCP to keep everything
straight. This should not be a problem, except over lossy networks,
so you should have this /SET to 1 unless you are willing to take a
gamble! Since packet sizes are 2k, and most OSs have socket sendq's
ranging from 4k to 32k, you may have to tweak this /SET for optimal
efficiency on your system (trial and error).
This should have *NO IMPACT* on the person to whom youre sending
the file, regardless of what client theyre using. If you have any
problems, it is probably a bug -- so please let me know.
*** News 09/16/96 -- Silent change to /WINDOW arguments
At the request of kanan, /WINDOW LEVEL, /WINDOW NOTIFY_LEVEL
and /WINDOW LASTLOG_LEVEL now do not require an argument.
If you do not specify an argument, the current level will
be displayed.
*** News 09/02/96 -- New feature covers up weakness in syntax
There was a semantic ambiguity that allowed the following
construction:
/EVAL (...[$0])
to crash the client due to the $0 not being expanded because
the (...) protects expansion. After conferring with several
people, it appeared that no real reason exists to formally
support aliases that begin with a left-paren. This allows the
use of the left-paren to be semantically bound to something
else, to prevent the above from crashing the client, and so the
paren-set was made as a synonym for the @ construction: So that
means the following two STATEMENTS are equivalent:
@ x = 3
(x = 3)
*** News 08/14/96 -- Two new config.h define's.
#define MIRC_BROKEN_DCC_RESUME turns on mIRC compatable
/DCC RESUME feature. It breaks the protocol, so it does
NOT come #define'd by default -- you must turn it on yourself
explicitly so that you take sole responsibility for it.
This shows up as 'i' in $info(o)
#define USE_DCC_CHECKSUM turns on DCC SEND checksumming.
If not defined, you neither send nor honor file checksums
that are sent from other epic clients.
This shows up as 'v' in $info(o).
*** News 08/08/96 -- Silent change to /on send_(msg|public)
With the changes to the send_text subsystem, if you sent a msg
to multiple targets, it will pass all of the nicks to
/on send_msg and /on send_public. This is in contrast to previously,
where it hooked them once per nick. It is still possible for
both to be hooked with the same message, of course.
*** News 08/07/96 -- CTCP PING now works to microsecond resolution
More or less. The client now sends off second + usecond
information, and then calculates the ping time based on
that when it comes back.
*** News 08/06/96 -- Revamped CTCP support
Several changes have happened to the CTCP support:
If any of these changes cause you a great deal of problems, let
me know, and ill work something out with you. The choices made
here were based upon personal and public discussions i had with
people on the epic mailing list, so your mileage may vary:
* If you have an /encrypt set up for a target, any CTCPs you send
to that person will be encrypted now. This is very useful for
encrypting DCC handshakes. This is in addition to your ability
to send CTCPs over pre-existing DCC CHAT connections.
* Since no known clients allow you to send more than one CTCP per
privmsg, and this (multiple CTCPs per privmsg) is a well known
mechanism for flooding, only the first CTCP that would normally
be "returned" is actually returned. All the rest are ignored.
CTCPs that dont "return" are not limited by this restriction.
The one exception to *this* is DCC. Only one CTCP DCC will be
accepted per privmsg.
* Other internal changes have occured. See the source code for
more information. Most of the support has been rewritten.
Nothing else should have changed from the user point of view.
*** News 08/03/96 -- Added socks support from ircii-2.9
ircII-2.9 has support for the 'socks' firewall library,
and so i took that support and added it at the request
of several people.
*** News 08/02/96 -- Implemented workaround for incompatability
I implemented support for the gratutitous incompatability
brought to you by the efnet 2.9 server in the JOIN command.
It should do the "right thing" now.
*** News 07/31/96 -- Finished work on encrypted CTCPs.
I had started support before for encrypted CTCPs. They should
be fully supported now, and they will be used if possible. Note
that this might be a problem if youre carrying on an /encrypt'd
conversation with a non-EPIC peer and you send CTCPs. They will
be encrypted, and the other peer will probably not know what
to do with them. If anyone has a grave problem with this, let
me know and ill work something out with you.
*** News 07/28/96 -- Striping quotation marks
If you want to $strip() out quotation marks, you have to
quote the quotation mark, so it isnt taken as a word
delimiter. People have been reporting $strip(" ....) not
working correct as a bug, but this is _not_ a bug, because
we need a way to be able to strip out spaces
To strip out spaces: $strip(" " ....)
To strip out quotation marks: $strip(\\" ....)
*** News 07/27/96 -- /FEC now has same semantics as /FE
The syntax as /FEC is now the same as the syntax for /FE.
However, the semantics all remain the same. An example of
what you can now do that you couldnt do before:
fec ($variable) a b c {echo $a $b $c}
*** News 05/14/96 -- $tdiff() no longer leaves trailing space
If you do $tdiff(60), you no longer get that trailing space
that was left behind: This was (IMO) a bug, because $tdiff(59)
did not have any trailing spaces.
*** News 05/14/96 -- Can now do /timer -delete all
If you want to delete all your timers, you can do /timer -delete all
and your timer list will be made very empty.
*** News 05/10/96 -- Made 'make install' less painful
Now when you do 'make install', it will attempt to only install
those things that really need to be installed. Only those things
that are newer then the installed components will actually be copied.
This applies to all the binaries, scripts, and translation tables.
*** News 05/09/96 -- Added $mkdir() at request of CrowMan
He asked why we had $rmdir() but not $mkdir().. and i guess
there wasnt any particular reason. So here it is.
*** News 05/08/96 -- Significant profiling project completed
This marks the end of the second major profiling project
in EPIC's history. Some strategic modifications have been
made in an attempt to reduce the rate at which ircII consumes
CPU time. Note that this does not neccesarily make EPIC
"faster", but rather just makes it less of a hog. Future
performance enahancements may occur on an informal basis.
*** News 05/08/96 -- New $info() command, "O" (crowman)
The "O" command (short for "options") returns a string that is
representative of the compiled-in options for the binary.
*** News 05/04/96 -- New command, /HOSTNAME (demon)
At the request of DemoN, ive added the /HOSTNAME command
that allows those with dynamic/multiple IP addresses to
change the address that DCC should use without having to
restart the client.
*** News 04/28/96 -- Added encryption over dcc send/get/chat
Its very simple. At the end of the command line, just
append a '-encrypt PASSWD' where PASSWD is what you want
the dcc encrypted with. It uses ircII's standard encryption,
so it isnt totaly secure, but its "secure enough" for those
who may be snooping. Dont even *THINK* of giving me a hard
time for implementing this.
--------------------------------------------------------
----- This doesnt work at the time of this release -----
--------------------------------------------------------
*** News 04/25/96 -- Added /server -add
Now you can add a server entry w/o having to connect to it.
Just do /server -add hostname portname password
EPIC3 [[ Hurray! We're done! (yea.... right.) ]]
*** News 04/21/96 -- New Built-in function $glob()
Before i begin, you can turn this off by #undef'fing
INCLUDE_GLOB_FUNCTION in config.h. If your system cant compile
the supplied glob.c, you should #undef NEED_GLOB in config.h.
You'll have to try your luck with your system's glob(). If your
system doesnt have a working glob(), and you cant compile glob.c,
then you must #undef INCLUDE_GLOB_FUNCTION.
The $glob() function allows you to specify a "shell-like"
wildcard argument list, for which it will return all the files
that match the patterns. Its "supposed" to behave just like the
shell does, so you should already know how it works. Yes, you
can specify more then one argument. Directories are appended
with a forward-slash ('/'), making it easier to seperate them
from the regular files.
*** News 04/20/96 -- Workaround for lame ircd lossage on ``K-line comments''
(Rant on)
I hate these things. Whoever allowed K-line comments to contain
an unlimited under of words should be drawn and quartered.
(Rant off)
*** News 04/19/96 -- Added $numsort()
Its like $sort(), but it makes an attempt to properly order
numbers present in the text. The strings are alphabetically
sorted except when numbers are placed in identicaly locations.
So 'abc5' is located before 'abc12'. However, 'abcX', where X
is any non-digit, is guaranteed to be treated as if "X" were a
0, when comparing with 'abcY', where Y is a digit.
Examples:
$sort(12 1 5) returns "1 5 12"
$sort(S5 S1 S12) returns "S1 S5 S12"
$sort(B2 A3 C1) returns "A3 B2 C3"
$sort(abcd abc12 abc5) returns "abcd abc5 abc12"
*** News 04/16/96 -- No, the help bot support wasnt removed...
I just #ifdef'd it out. Its #define USE_HELP_BOTS.
Youll have to add it to the config.h to get the support.
*** News 04/12/96 -- AUTO_UNMARK_AWAY will call /away alias if possible
Someone asked that the code that does AUTO_UNMARK_AWAY call the
user's 'away' alias if they had one, so that scripts like superpak
and phoenix could correctly end their msg logging. I should have
told the person to do an /on 306 instead. ;-)
*** News 04/11/96 -- New set, /SET DCC_LONG_PATHNAMES (ON|OFF)
If its ON, youll see the whole pathname of the files youre sending.
if its OFF, youll only see the last part.
*** News 04/11/96 -- More info in the status bar for DCC transfers
As a comprimise to those who want a ncftp-ish "progress-o-meter"
with reverse text et all, i decided to display the total number
of packets in the file transfer and how many have been transfered
so far, so that the percentage you see is more meaningful.
Will this lead some day to ETC? Perhaps.
*** News 04/10/96 -- HACKED_DCC_WARNING no longer default
So many people have had problems with it, that i am #undef'ing
it by default -- you are of course free to #define it if you
like having it.
*** News 04/08/96 -- Dropped support for help bots.
The help bots dont exist any more, so im going to take
out the code that supports them. Ill have to make sure
that the help files are easily available with the release.
*** News 04/08/96 -- Added #define CONNECT_TIMEOUT to config.h
It was silly that it was hard coded and not user-specifiable.
I changed it to 30 seconds (it was 15 before) since 15 seconds
hasnt seemed to cut it for me.
*** News 04/06/96 -- Same thing for /WHILE and /UNTIL
Removed the silly restriction (see below) for /WHILE.
The following are supported:
/while (expr) commands
/while (expr) {commands}
Applies also to /UNTIL.
*** News 04/06/96 -- removed silly restriction on /IF
The silly restriction that required you to enclose the THEN
part of an /IF comamnd even if you didnt have an ELSE part
has been removed. This is not to say you cannot, but rather
to say that you are not required to. The /IF command can now
be of the form(s):
/IF (expr) commands
/IF (expr) {commands}
/IF (expr) {commands} {commands}
Just so long as it appears as all one logical line in the script.
You should use {}s for asthetic reasons if you are using more then
one command in the THEN body. You MUST use {}s if you have an
ELSE part. All this applies to /UNLESS as well.
*** News 04/06/96 -- Added /UNLESS and /UNTIL
/UNLESS is the opposite of /IF.
unless (x == 0) {y = 7}
/UNTIL is the opposite of /WHILE.
until (x == 0) {x--;y += func()}
*** News 04/01/96 -- New built in function, $notify()
If specified with no arguments, returns the nicknames you
have on your notify list. It takes the following arguments:
ON - specifies that only those who are PRESENT should be returned
OFF - specifies that only those who are ABSENT should be returned
SERV X - specifies that server number X should be used.
This flag can be used without the "ON" or "OFF" arguments,
but there isnt much point to that. If the number argument
is missing, the whole function returns nothing.
In case of error (like invalid server number), the function returns
nothing.
*** News 03/27/96 -- $rmdir(), $unlink(), and $rename()
They now expand twiddles, per the suggestion of Crowman.
*** News 03/20/96 -- Added 'sound' script
The 'sound' script is an attempt on my part to support mirc's
CTCP SOUND command. See the script for usage info.
*** News 03/20/96 -- Fix two bugs in /exec
The first one was a lame typo lamage that was the reason posix
systems (freebsd, linux) were having lossage trying to kill off
exec'd processes on quit. That should all be kosher now
The second one is that the signal handlers are reset right after
the fork() in exec'd processes so that if the program being run
coredumps, it wont output that annoying "IRC-II has trapped..."
message back up the pipe to ircII, but will rather die the default
death for memory faults on the system (a coredump).
*** News 03/20/96 -- New built in function -- $sort()
Yes, I finally got off my duff and wrote this. it requires
qsort(3), which is required by ANSI, so i hope everyone has
that without my having to have 'configure' check for it...
*** News 03/20/96 -- Reworked io()
io() no longer recreates the fd_set's every time its called,
it doesnt call functions it doesnt need to call, and several
other optimizations intended to reduce unnecesary CPU usage.
*** News 03/19/96 -- Fixed alias_special_char() to not call parse_inline()
Unscientific tests show that it improves performance of simple
variable lookups by almost 20%.
Performance of expression mode is not effected by this change,
but the performance of [$var] instead of 'var' goes from 50%
slower to 30% slower.
*** News 03/19/96 -- $common() and $diff() fixed
The following things were "broken" with $common() and $diff()
-- If a word in the left part was found in part of a word in
the right part, it was wrongly returned:
$common(one two / phone ugh) returned "one"
-- If a word appeared multiple times in the left part, and it
was present at least once in the right part, it was returned
multiple times:
$common(one two one / one three) returned "one one"
Both of these weaknesses are now fixed.
*** News 03/18/96 -- Fixed /on bug
Up until now, doing something like this didnt work like expected:
/on foo "blah blah"
{
...
}
or
/on foo "blah blah" ....
because the extra spaces fouled up the /ON command. Now any spaces
between the pattern and the body of the ON are ignored. This also
means that anyone who was doing this:
/on foo "blah blah" text to send to channel
should change it to look like this:
/on foo "blah blah" / text to send to channel
This seems to make a lot more sense to me...
*** News 03/18/96 -- Finished the "new and improved" ircserv.
This new ircserv has all the functionality of the old one except
that it actually works now, and its much simpler to both the
client and ircserv itself. The catch is that the client wont work
with the old ircserv any more, and the new ircserv wont work with
old clients. You must install the new ircserv with this version
of the client if you expect to use ircserv.
*** News 03/08/96 -- Support for //^ "feature"
The //^ "feature" that is used by many large and widely used scripts
is now supported again by popular demand. However, you should NOT
use this "feature" in new scripts, *please* use the syntactically
correct ^// construct. Thanks.
*** News 03/07/96 -- Added new command /SWITCH
The syntax is:
switch (control text)
{
(switch 1) /* "switch set" is an expr */
{ /* and some commands to */
body 1 /* execute if it matches the */
} /* control text */
(switch 2) /* A switch set may have */
(switch 3) /* then one expression, and */
{ /* if any of them match, */
body 2 /* then the commands are */
} /* executed. */
}
The "control text" is the text that youre trying to match.
Each "switch set" is comprised of one or more "switch texts"
and a "switch body". If any of the "switch texts" are found
to match (wildcards are allowed) the control text, then the
commands are executed. Only the first such "switch set" found
to match the control text is executed, the rest are ignored.
So it is important to put your most general switches at the
end of the structure.
At the face of it, the general idea is that it is a way to
allow you to do a multi-way selection on a string when there
are more then two possible values. On a deeper level, there
is also the flexibility to parse arguments using regular
expressions and then knowing what to do depending on which
pattern was matched. See the "country" script for an example
of what im talking about.
*** News 03/06/96 -- Workaround for longstanding /foreach bug
It has been a long standing problem that you couldnt use []
notation in the /foreach command
So now instead of being required to do:
/foreach foo.${ii}.${jj} kk { ... }
You have the more asthetically appealing option of:
/foreach foo[$ii][$jj] kk { ... }
Sorry, you still cant (and never will be able to) do
/foreach foo.$ii.$jj kk { ... }
*** News 03/06/96 -- Added new built in function $usermode()
Hard to believe there wasnt one before. You give it a server
number, and it gives you your umode on that server. If no
argument is specified, the "current" server is used. Specify
an argument at your own peril, as no sanity checking is done.
*** News 03/06/96 -- Added new on, /on SILENCE
Whenever you get a SILENCE message from the server, /ON SILENCE
will be hooked. It provides the following arguments:
$0 - a plus ('+') or a minus ('-') depending on whether this
message is for a silence added or removed
$1 - the pattern silenced or unsilenced.
*** News 03/06/96 -- Modified /alias's behavior on error.
Well, it seemed pretty lame indeed that having trailing junk
after the closing } in an alias would cause it to crap on the
entire alias. So now it just emits a warning and adds the alias
anyhow, which is more sensible.
EPIC3pre8 [[ Bug fixes, performance tuning ]]
*** News 03/05/96 -- Added $winsize()
If given an argument, returns the size (height) of the specified
window. If not given an argument, returns the size of the current
window.
*** News 03/04/96 -- /fe now honors "extended" words correctly
The words that are surrounded with quotation marks are now
parsed (correctly) as one word...
*** News 02/28/96 -- /set highlight_char now accepts any string
If the argument to /set highlight_char is not BOLD, UNDERLINE,
or REVERSE, the argument is taken as the string to be used as
your highlight string.
*** News 02/27/96 -- notify now queries each server
Yes, thats right -- /notify now works on each server you
have open independantly of each other. Try it out. =)
Due to logistics problems, each server has an independant
list, but each server must have exactly the same set of
nicknames (you cannot have a different list for each server,
sorry.)
*** News 02/26/96 -- Added the $strftime() function
The $strftime() function from ircII2.8.2 has been integrated.
The biggest change i made to it is that the first argument,
which is an integer representing the time, is optional. If
no time is specified, then the "current" time is used.
*** News 02/25/96 -- Fixed horrendous ++/-- bugs.
The ++/-- operators, that had a few non-trivial bugs before,
have been revamped to work in all situtations. The only catch
is that they do not actually operate on the values until such
time as they are parsed. That is to say that a prefix operator
does not reflect the new value until the operand. A postfix
operator is definitely reflected in tokens after the operand.
For a contrived example, if $foobar is 3,
(foobar++ + foobar) is (3 + 4 == 7), and *not* 6. Also,
(foobar + ++foobar) is (3 + 4 == 7), and *not* 8.
Its not so hard to understand how it works, just that its hard
to accept that it does work that way. ;-)
*** News 02/25/96 -- revamped much of next_unit (parse_inline())
I rewrote most of next_unit() by making a few general macros
and then writing the rest of everything in terms of the macros.
Makes the function a lot easier to read, and allowed me to fix
the ++/-- bugs as described above. This shouldnt affect anything
as i didnt actually change the code used, only how it is arranged.
*** News 02/22/96 -- New built-in function $pass()
This function is the opposite of $strip(). You specify a list of
characters to NOT strip out of the text, and it returns the text
after all the characters that are not in the list are removed.
*** News 02/20/96 -- New built-in function $repeat()
Very simple:
$repeat(count text)
Returns "text" repeated "count" times. You should not assume
any leading spaces are either retained or stripped, but you may
assume spaces after words (including the last word) are retained.
It doesnt put a space between each repitition -- if you need a
space between each repetition, make sure to append a trailing space.
*** News 02/20/96 -- ansi compiling
Please compile EPIC with ansi mode turned on if at all possible!
EPIC3pre7 [[ IS THIS THE LAST BETA RELEASE? WE CAN ONLY HOPE! ]]
*** News 01/16/96 -- Ok. ok. the -S and -s overloaded cla were lame.
The -s and -S command line arguments, which were overloaded to
allow you to specify a default server have now lost that semantic.
-s and -S now have only their classical meanings, whether or not
to use ircserv
*** News 01/15/96 -- The semantics for $splice()
Semantics for the heretoforth "undocumented" function $splice():
$splice(variable start length text)
Where "variable" is the name of a variable.
"variable" is modified such that words "start" to "start+length"
are replaced with the specified text. The words removed
are returned. Using an absurd value for "start" or
"length" just appends the text to the closest end.
Assuming in all cases tha the value of $foobar is "one two three"
$splice(foobar 0 1 booya booya)
returns "one"
$foobar assigned to "booya booya two three"
$splice(foobar 5 4 ooga booya)
returns empty string
$foobar assigned to "one two three ooga booya"
$splice(foobar 1 2 one)
returns "two three"
$foobar assigned to "one one"
If $foobar is empty string:
$splice(foobar 3 4 one)
returns empty string
$foobar assigned to "one"
FYI, $splice() is an expensive function, but not as expensive
as the script version was.
*** News 01/15/96 -- Added $geom()
Returns the value of the global variables CO and LI that
correspond to the number of columns and the number of lines,
respectively, in the main screen for ircII. If you have
more then one screen open and they are of different sizes,
then the actual value(s) returned by this function is at
best undefined. If all the screens are the same size, however,
then that size should always be returned by this function.
*** News 01/13/96 -- Added $chanmode()
Semantics for $chanmode():
$chanmode(#channel)
If #channel is not specified or is an "asterisk", the current
channel is assumed.
This function returns the "channel mode" for the specified
channel. You must be on the channel to use this function.
(See the $key() function for related semantics.)
*** News 01/13/96 -- revamped "timer" mechanism
At the request of several people (esp. Shiek), I have rewritten
the interface to the /timer function and written timer.c which
contains a generic time-delayed callback mechanism. You may use
it in your own C code. See the code for more information.
*** News 01/13/96 -- Silent chagne to /timer
Support for timer refnum zero ("0") is hereby withdrawn due to
the impossibility to portably differentiate between an explicitly
specified zero argument and an error returned from atoi(). More
specifically, if you attempt to use a non-numeric value for the
refnum option to /timer, it would implicitly be assigned the value
of 0, which prohibited the emition of an error message since up until
now specifying a 0 refnum was valid. Now any attempt to use refnum
zero is flagged as an error.
It is possible to support the old (broken) semantics. See the
source code for more information.
*** News 01/07/96 -- Attempts to make $ expandoes boundless
Up until this release, all $ expandoes have been truncated at
a 2048 character length. Since this has made a few people rather
irritated due to unreliable behavior, the behavior has been changed
so that $ expandoes are never truncated at any length.
Testing has shown that this new method is somewhat slower for
extremely large variables (10,000 characters and up), but this is
not totaly unexpected since mallocing off large chunks of memory
and strcpy()ing them around is more expensive then just whipping
up a stack array and strcpy()ing a shorter string into it.
For the sake of sanity, i want to point out that unless your variables
are long enough that they were being truncated, the processing time
for all variables is essentially zero. Also note that this entire
discussion applies only to the use of $ expandos and does not apply
at all to "expression" mode where variables have never been truncated.
*** News 01/02/96 -- /dcc get nick works multiple times.
/dcc get nick will not issue an error about connection already being
in progress unless all connections currently being offered from "nick"
are actually in progress. (Previously, you could only do /dcc get nick
one time, no matter how many files "nick" had offered you.)
*** News 01/01/96 -- New built-in function $info()
Semantics for $info():
Description: A function used to supply non-specific information
about the actual executable image itself.
Arguments: "COMPILE" returns information about who compiled
the binary in the form:
"Compiled by <user>@<host> on <date> at <time>"
"SUM" returns the output from the 'sum' command when
run on the file 'info.c.sh' (see below). If this value
is different from a previous use of the program you can
be insured that the binary *has* been recompiled. Since
absolute protection against tampering is effectively
impossible, the converse can not hold.
More arguments are planned in the future.
*** News 01/01/96 -- Added compile logging to the Makefile
The file "info.c.sh" is now run as a shell script and the result is
compiled each time just before a final link is executed. It records
the user, host, and time the compile was done.
If you do not want your username to be returned by the $info()
function, you can #define ANONYMOUS_COMPILE in the config.h file.
The username will then be "<anonymous>", but the host and time will
be normal.
*** News 12/28/95 -- Cleaned up config.h, vars.h, vars.c
Removed irc-vars that were not used or referenced.
Removed #defines that were not used anywhere.
*** News 12/28/95 -- Fixed a really *stupid* bug with set_int_var
To make a long story short, there were a few places that
were using set_int_var() in an inappropriate manner. Those
have been fixed to use the (correct) function set_var_val().
This was the cause of a few obscure bugs, which have now gone away.
*** News 12/28/95 -- A few modifications to the menus:
* If you are in a menu, pressing the Q key kills off the menu
as if you had done /set -menu.
* The <return> key now selects the current option in the menu.
The old behavior of <return> toggling hold mode is deprecated.
* If you #define MENU_BOTTOM in the config.h file, then that
define will be used as a seperator between a menu and the rest
of the window. The #define'd pattern is repeated for the width
of the screen.
* Cursor keys are now supported while in menu mode. Your cursor
keys must be outputing either ^[[X or ^[OX (where X is A,B,C,or D)
to take advantage of this (every vt-like terminal does this)
*** News 12/28/95 -- Made getting a quit message for youself not fatal
Apparantly it *is* possible to get a quit message for youself
in an otherwise legitimite context. I still dont believe it is
possible, but the bug reports are coming in. Now it just emits
a cryptic error message that is not fatal.
*** News 12/28/95 -- Fixed /dump on (reported by Oldpink)
Fixed dumb bug in hook.c:flush_on_hooks() that was prohibiting
named-hooks from being flushed (numeric hooks were being flushed
just fine).
*** News 12/28/95 -- Fixed $connect() (reported by Chaos and others)
The problem was that in dcc_raw_connect (what $connect()
calls to establish the connection) i forgot to cast the
user-specified portnum to network order, so on wrong-endian
machines it was actually specifying a wrong port. *sigh*
*** News 12/28/95 -- Changed the behavior of alias.c:add_alias()
The semantics of assignment have been changed slightly to support
the removal of variables when their values would be otherwise set
to a string with length 0 (an "empty string"). Such assignments
this cause the variable to "go away". This is not a problem since
referencing a variable that "dont exist" expand to the empty string,
so you get the same value either way. This also affects places where
variables are implicitly assigned (such as $shift() and $splice()).
*** News 12/28/95 -- ADVISORY -- use care with the /OPER command!
Some advice to you opers out there...
1) Dont put your history in a file if you use /oper nick passwd.
Obviously, this puts your passwd in plaintext out on the file
system which is a "bad idea", especially if someone is able to
log in as you, they can use the cursor keys to just back up in
your history and become oper w/o having to crack your passwd.
2) Make sure noone is peeking over your shoulder if you do /oper nick
and type the passwd as "invisible text", as the person peeking
would be able to figure out how many characters your passwd has
which helps them in cracking it.
*** News 12/28/95 -- Added $crypt() from CrowMan
Semantics for $crypt():
$crypt(salt password)
You give it a salt (a two letter combination) and a plaintext
and it returns an encrypted string. This just calls the C library
function $crypt(), so if you dont have it, this wont do you any good.
*** News 12/28/95 -- Added $fexist() and $fsize() from Sheik
Semantics for $fexist() and $fsize():
$fexist(filename) returns 1 if file exists, -1 if not.
$fsize(filename) returns size of file, -1 if file not exist.
*** News 12/28/95 -- Added new key binding, DELETE_TO_PREVIOUS_SPACE
Keybinding deletes characters backwards until if finds a space.
Note that if the character to the left is a space, it wont delete
anything.
EPIC3pre6 [[ LAST MINUTE BUG FIXES/ADDITIONS ]]
*** News 12/3/95 -- New built in function $aliasctl()
Semantics for $aliasctl():
Description: A function that allows for low-level manipulation
of the alias and variable lists. It takes three or more arguments:
The first argument is the string "ALIAS" or "ASSIGN"
The second argument is one of the options "GET", "SET", or "MATCH"
The third argument is the alias/assign you are operating on.
If the operation is "MATCH" and this argument is
an asterisk ('*'), then it will match all top-level
alias/assigns.
The rest of the arguments are used if you are doing a SET.
More operations may be added in the future.
"GET" returns the value of an alias/assign.
"SET" sets the value of an alias/assign.
"MATCH" returns a word-list of all aliases/assigns that begin
with the specified argument. "MATCH" does not descend
into arrays or subarrays: "MATCH" does not accept wildcards,
but does accept the special argument "*" which returns all
first-level alias/assigns.
contrived examples:
$aliasctl(ASSIGN GET foo) returns the value of $foo
$aliasctl(ASSIGN SET foo 3) same as @ foo = 3
$aliasctl(ALIAS GET join) returns the "stuff" for /join
$aliasctl(ALIAS SET join window join)
same as /alias join window join
$aliasctl(ASSIGN MATCH *) Returns all top-level assigns.
Does not return any arrays.
$aliasctl(ALIAS MATCH w) Returns list of all aliases
that start with 'w'
$aliasctl(ALIAS MATCH tk) Returns list of all aliases that
begin with 'tk'
$aliasctl(ALIAS MATCH tk.) Returns list of all aliases in
the array "tk"
*** News 12/3/95 -- New built in functions $numwords() and $strlen()
$numwords() returns the number of words in the given text.
$strlen() returns the number of characters in the given text.
Text with all whitespace characters has zero (0) words.
$numwords() does not recognize "extended words".
Use @var or #var when possible, as they are more efficient.
*** News 12/2/95 -- /FOREACH can work on command aliases
If the named argument to /FOREACH begins with a hyphen ('-')
then iteration will occur over the array of command aliases
specified (as opposed to assign aliases)
*** News 12/1/95 -- /WINDOW size added
You can specify the absolute height of a window by using the
/window size <height> operation. If the specified size is
inappropriate, the client will whine at you.
*** News 12/1/95 -- /LASTLOG displays ANSI codes if #define MURPLE
If you #define MURPLE in your config.h, /LASTLOG will turn on
DISPLAY_ANSI during its execution and turn it back to whatever
you had it set to when its done. If murple likes it, i might
make it the default.
*** News 12/1/95 -- New functions $winserv(), $lastserver(), $servername()
These functions return -1 on error (ie, on illegal value)
$winserv() or $winserv(0) returns the server index for current
window.
$winserv(winrefnum) returns the server index for that
window.
$lastserver() returns the server index for the last
server we parsed. Useful with:
$servername(servrefnum) returns the name of the specified
server.
*** News 12/1/95 -- DISPLAY_ANSI var only lets escapes through
The only ANSI character that is valid and less then 32
is the escape character (27). So if DISPLAY_ANSI is
on, we let it though but reverse all the rest (like say,
the XON/XOFF characters, and ^R and ^T. >;-)
*** News 12/1/95 -- LASTLOG level "ALL" includes USERLOG levels
You get the idea.
*** News 12/1/95 -- $-0 silent change
I think i can explain it best by an example:
For the args " 1 2 3 4", $-1 on the stock client is " 1 2"
but for the string $-0, the stock client does "1". This is
inconsistent: It should never strip the leading spaces on $-n.
So i fixed it so that $-0 is " 1" instead of "1".
*** News 12/1/95 -- /set BEEP off really *means* off
You wont get beeped *at all* if you have BEEP set to off.
Really.
EPIC3pre5 [[[ FINAL BETA RELEASE! ]]]
*** News 11/27/95 -- New built-in function $writeb()
The function $writeb() is exactly the same as $write(),
except it does not append a trailing newline.
*** News 11/27/95 -- New functionality to $read()
Expanded semantics for $read():
$read(fd bytes) -- returns the next "bytes" bytes from
the $open()ed file. It is guaranteed
that many bytes will be read and returned
unless end-of-file occurs.
*** News 11/27/95 -- Added support for NOTEs
Added support for undernet-style NOTEs.
Incoming NOTEs look like this:
[nickname] message (time)
where "nickname" is the person who sent the nick,
"message" is the message, and "(time)" is the time that the
message was sent, if and only if the message was sent more than
one minute ago. If (time) is absent, the message was just sent.
/ON NOTE supplies the following arguments:
$0 nickname of the sender
$1 The time the note was sent -- this field is only
accurate up to plus or minus 60 seconds, so just understand
that you cant trust the seconds to be accurate.
$2- The message
/IGNOREing NOTEs now works.
*** News 11/23/95 -- Sanity for /STACK
People commented that if you attemped to /stack push on XXX,
and there were no /on XXXs present, that an empty "placeholder"
should be placed on the stack, so that when /stack pop on XXX
is executed, the /on XXXs should be cleared, instead of not
clearing them and emitting an error message (agreed, fixed.)
*** News 11/23/95 -- Support for long nicknames
#define ALLOW_LONG_NICKNAMES if you want support for 30
character nicknames. Dont define it if you dont use any
servers that support long nicknames. (Default is undef)
*** News 11/23/95 -- Closed up tty bug
Sometimes, characters with the high bit set were being sneaked into
the client even if the client asked the terminal handler to strip
off the high bit. Now the client just goes ahead and strips off
the high bit itself if 8 bit characters are turned off. This fixes
the bug when people would send XOFF characters with the high bit
set and that would get passed to the terminal, which ignores the high
bit, and turns off the person's flow control -> bad. (chaos)
*** News 11/23/95 -- Support for CS servers
Support for user modes +c, +f, +k, +r, and +u have been added.
EPIC3pre4
*** News September/October/November - lots of bug fixes
So im lame. I didnt add any new features, just fixed bugs as
they popped up.
EPIC3pre3.3
*** News 09/30/95 -- Added a feature to deny a specific host
In some schools that have networked systems (ie, under AFS),
the same executable may be run by any nmber of people on any
number of machines. For these people, there is now a config.h
#define that allows you to set a file that will be checked for
hosts to deny access to the executable.
EPIC3pre3
*** News 09/09/95 -- Got rid of stupid 'count' program!
Converted *.h.proto files to use 'enum' instead of that stupid
'count' program. EPIC no longer requires (f)lex to compile.
*** News 07/31/95 -- major rewrite of built-in functions and regression test
I rewrote most of the built-in functions to fix all of the remaining
bugs that were present. I also whipped up a script to test a lot of
functions to make sure that in the future, ill know right away when
a function isnt working right.
*** News 07/06/95 -- DCC TALK and DCC SUMMON removed
In a move that is likely to be a little controversial, i removed
the DCC TALK and DCC SUMMON features because they seemed to be
1) redundant
2) not implemented very well
And also because we want to make EPIC smaller by ridding it of
extraneous unused features.
*** News 07/03/95 -- Userhost now taken on advice of the server
At the suggestion of DemoN, the client now asks the server what
it thinks our userhost is when we have connected to it, and we
take it at its word. In this way, we no longer have DCC conflicts
when we think our IP address is one thing and the rest of the
world thinks its another...
EPIC3pre2
*** News 06/23/95 -- /on timer actually hooks at the top of each minute
/on TIMER actually hooks when the minute rolls around instead
of "up to" 15 seconds after the minute. Another aspect of this
is that EPIC doesnt do 4 select() calls a minute when youre
idle, it only does one, which lowers the CPU usage.
*** News 06/14/95 -- DCC Transfers now measured to microsecond precision
If your system has gettimeofday() (its a BSDish syscall) EPIC
will report your DCC transfer rates in terms of second/usecond
resolution -- providing a better representation of the kb/sec
for small, fast transfers. Anyone want to tell me what/if there
is a posix or sysv call to get second/usecond info?
EPIC3pre1 (size level 123%)
*** News 05/21/95 Highlight characters may now be bound (keys.c, edit.c)
You may bind any sequence you wish to BOLD, UNDERLINE, REVERSE,
or HIGHLIGHT_OFF. However, please note that no matter what key
you have bound to them, BOLD will always insert a ^B into your
input line, UNDERLINE inserts ^_, etc, etc, etc. Yes. i know this
can be confusing, but unless someone comes up with a big gripe,
im most likely going to leave it this way. The highlight keys come
bound to the highlight bindings that they should be bound to by
default. >;-)
*** News 05/21/95 /set INDENT should work properly with ascii sequences
(screen.c)
Or so i think. Let me know if you dont think it works properly.
*** News 05/20/95 # walls incorrectly hooked (parse.c)
# walls (ie, walls sent to a hostname pattern) were incorrectly
hooked as PUBLIC_MSGs instead of MSG_GROUP. Fixed.
*** News 05/20/95 choices for help now paged (help.c)
When you are given a list of choices to select from in the help
browser (ie, in /help set), the options are paged if you have
HELP_PAGER set.
*** News 05/17/95 built-in aliases now binary searched (alias.c)
The built in aliases (all 101 of them) are now binary searched
instead of sequentially searched. This should make the use of
built in aliases all that much faster, as well as increasing
the speed of your own aliases since the entire builtin alias
list will not have to be traversed before your aliases are
searched.
*** News 05/17/95 Complete rewrite of main loop (irc.c, others)
irc_io has been replaced (modularized, actually). Hopefully
this will make ircII more reliable and less prone to lock ups.
The first thing you will probably notice is that the client
still accepts input from the keyboard even during a /wait
command. Preliminary tests show this new design to be more
sturdy then irc_io ever hoped to be.
*** News 05/11/95 Completed rewrite of ignore (ignore.c, whois.c)
The rewrite of the ignore system has been completed. Ignores are
now officially based on *!*@* patterns instead of nickname or
userhost patterns.
*** News 05/11/95 Key bindings are now allocated dynamically (keys.c)
Up until now, the key maps have been stored in static arrays, 10 maps
of 256 characters for a total of 2560 entries at 13 bytes per entry.
(2 integers a pointer and a char) for a usage of 33,280 bytes (32K).
That has been dropped down to 2560 pointers (10,240 bytes) with 13
bytes still used for each key binding, a savings of 23,040 bytes
(22k) in overhead. You would have to have over 1,770 key bindings
before you will use as much RAM under this new system as you did under
the old system.
*** News 05/11/95 Client no longer needs the 002 numeric (notice.c)
Some people, who hacked the 002 numeric reply on their server, broke
all the ircII clients out there that rely on the 002 numeric being of
a specific format to extract the server name and version info. This
is totaly ludicrous to me, since that is what the 004 numeric is there
for, (to provide server and version info.) So the .ircrc is not
loaded until the 004 numeric is recieved now. The ``kludge'' that
ircd has for older ircII clients is ignored if you recieve the 001
numeric (which signifies a 2.8 class server). If you do not recieve
a 001 numeric, then the server waits until the kludge is recieved to
load the .ircrc, as it has always done for ever and a day.
*** News 05/09/95 Removal of support for 2.5/2.6 (all)
Per the vote taken on the mailing list, all support for ircd2.5
and ircd2.6 has been terminated. Please do not use EPIC on those
servers. (This should not be a problem since there hasnt been a
ircd2.6 server in over three years) I have ripped out large chunks
of code that were specific to ircd2.5 and 2.6, and which were
confusing the whole code and making things harder then they had to
be. Also, code that is specific to ircd2.7 servers has been
#ifdef'd out by default, you can get that code by #define COMPAT_27
in the config.h. If you dont need ircd2.7 compatability, you will
save some amount of space in your executable.
*** News 05/06/95 new command /MESG (output.c)
The new command 'MESG' now does what its counterpart in unix does:
It allows or disallows writes to your screen: If you set it to 'n',
you will not recieve any talk requests or writes from other users
directly onto your screen. If you set it to 'y', you will be able
to recieve talk requests and writes from other users. THIS DOES NOT
RESET THE PREVIOUS STATE WHEN YOU EXIT! If you use 'MESG' to set
permissions on your tty, those permissions will still be set after
you exit.
*** News 05/06/95 new function $trunc (alias.c)
A new function $trunc() is available for rounding or truncating
floating point numbers. It takes two arguments, the first is the
precision and the second is the number. If the first argument is
positive, that is taken as the number of decimal places to round at.
If the first argument is negative, that is taken as the number of
significant digits to round at. The answer will never have more
precision then what you provide. This function uses the system call
printf() to format the output, so your actual output is dependant
upon your system's implementation of printf(). If you provide strange
input (ie, something that isnt a number) you will probably get strange
output. (garbage in, garbage out)
*** News 05/06/95 DCC reject (dcc.c ctcp.c)
If you use the /DCC CLOSE command to close an offered or pending DCC
connection, it will send a CTCP notice to the other peer telling them
that the transaction will not occur. Both peers will then remove the
offer from their respective DCC lists. Either peer (either the sender
or the reciever) may reject the connection by using /DCC CLOSE and the
other peer will be notified. If the other peer is an older client,
they may not handle the CTCP notice gracefully. A script is provided
with the client to supply this functionality to older clients.
*** News 05/06/95 DCC Warning before overwriting file (dcc.c)
If you recieve a dcc send request for a file that already exists, you
will get a warning to that effect, advising you to use /DCC RENAME if
you dont want to overwrite the original file.
*** News 05/06/95 DCC Progress-o-meter (dcc.c, etc)
New status format variable: %D -- shows the progress of the current
DCC send/get transfer showing the nickname and percent of transfer
completed. /DCC LIST now shows the size of the file and the
percentage transfered instead of simply showing the number of bytes
sent.
*** News 05/01/95 Floating point support (alias.c)
There *IS* floating point support. However, it is preliminary and
may not neccesarily be complete or manageable! In all cases where
integers are needed, any floating point values will be truncated to
the next lowest integer (or to the next higher integer if youre
talking about a negative value)
You have to /set FLOATING_POINT_MATH to 1 before you will get any
floating point answers. This is to maintain backwards compatability
with old scripts until i have a chance to assess the damage that
would result in older scripts that assume integer math.
Also note that no matter what FLOATING_POINT_MATH is set to, floating
point math will be done on the operands. if it is set to OFF, the
result will then be truncated after the operation. So any script that
did something like 8 - 3.2 will get the answer '4' instead of the '5'
that previously would have been given.
Please keep in mind that ircII parses its algebraic expressions from
right to left (this is a bug im working on, so dont harass me yet),
so if you try to do floating point math, please be aware that you may
have to use paranthesis to get the right parsing order.
*** News 04/28/95: More security
A new /set, "SECURITY" is in place to allow you to do some primitive
backdoor security. If you set it to 1, you cannot use a variable as
a command. If you set it to 2, you cannot use /exec except
interactively. If you set it to 4, you cannot use the /set command
except interactively. You can add these numbers up to suit the
security you wish to have.
****************************************************************************
EPIC2 [[[ PUBLIC RELEASED VERSION! ]]]
*** News 04/09/95: ~ operator had wrong precedence (alias.c)
The ~ operator had the wrong precedence. Its now been fixed.
*** News 04/08/95: $open() now expands twiddles (files.c)
Kev asked me to have the $open() call expand_twiddle so
you can do ~/filenam type stuff.
*** News 04/08/95: New functions added (alias.c)
The following functions, which act simply as front ends
to the system calls by the same name have been added:
$unlink(file1 [file2 ...]) Delete a list of files
$rename(file1 file2) Rename file1 to file2
$rmdir(file1 [file2 ...]) Delete a list of directories
These functions return the number of files that were not
successfully handled. So, it returns 0 if all went well or
if no arguments were specified.
These functions wont do anything the system call wont do, ie,
theyre rather primative. Use /exec for more complex tasks.
These functions do NOT do any wildcard expansion!
*** News 04/08/95: EMACS keybindings no longer bound by default (keys.c)
Someone from Europe said that using EPIC on scandinavean
keyboards was difficult at best becuase of the emacs metakey
bindings that i doubt anyone uses anyhow. You can #define
EMACS_KEYBINDS if you want them, or just /bind them in
your .ircrc
*** News 04/05/95: Nickname not fudged in /nick (numbers.c, etc)
Kanan asked that the /nick command not fudge your nick
if you enter an invalid nickname.
*** News 04/03/95: Fixed brain dead ignore (ignore.c)
Many, many people have asked why /ignore cannot support
the nick!user@host construct. Well, now it can. In fact,
you can give it any non-ambiguous nick!user@host pattern
and it will recognize it and do the right thing. A userhost
*must* contain either a "@" or a "." Any string with no
"!"s, "@"s, or "."s is assumed to be a nickname.
Also, the /ignore command stores ignores as nick!user@host
patterns now instead of as a "nick" or a "userhost" -- this
is backwards compatable becuase you can think of what used
to be stored as "nick" is now "nick!*@*" and what used to
be stored as "user@host" is now "*!user@host" -- ok?
*** News 04/03/95: Finished implmenting /stack (stack.c)
/stack (PUSH|POP) (ASSIGN|ALIAS|ON) now works.
/stack LIST isnt implemented yet. Will come in future version.
EPIC2pre5 [[[ FINAL BETA RELEASE! ]]]
*** News 04/02/95: Modified 'LOAD' command (edit.c)
You may now specify any number of filenames per LOAD command.
Not only will this allow you to tighten up your scripts by
loading many files per LOAD command, but also allows you to
stub several files to one alias (see below) -- of course,
if you use the -args flag, you may not specify more then
one file after the flag to load. The -args flag has effect
only on the one filename that follows it. (see help files)
*** News 04/02/95: New command "STUB" (alias.c edit.c)
*** NOTE: The use of the word 'alias' can also be
extended to the word 'assign' as well.
You may now "stub" an alias to a file. What this means is
that the first time you attempt to use that alias, the file
it is stubbed to will be loaded. Therefore, if the alias
is never used, the file it is contained in will never be
loaded (Obviously, if another alias that is stubbed to the
same file is used, all aliases in that file will also be
unstubbed.) The idea is that instead of loading a very
large script pack on boot up, you can create a file that
will contain "stubs" to the real files those aliases are in.
If/when you actually use those aliases, at that time will the
file be loaded, so you dont have to load everything every time
if you dont use everything every time. >;-)
Stubs *are* aliases. The /STUB command is used only to enter
stubs. Once they are entered, you can (and must) list or
delete list them using the /ALIAS command just as if it were
a normal alias.
Probably I (or someone who is interested) should write a C
program, or maybe even a perl program that will automatically
generate stub programs for multi-file script packs.
*** News 03/31/95: Implemented CTCP over DCC (ctcp.c, dcc.c, etc)
You are now allowed to send CTCP commands over an open
DCC CHAT connection by using the form =nickname, just like
you do for /msg =nick. This buys you three things:
* On a really really bad day, you can send files to a person
you are dcc chatting with without having to be at the mercy
of a certain d0g3-st()()p1d server that lags a lot.
* If you dont want to tell the whole net that youre sending
a file to someone, this allows only you and your target to
see the handshake.
* Since all CTCP commands can be sent this way, its just another
way to reduce network traffic, making life better for everyone.
*** News 03/28/95: Fixed the STACK command (stack.c)
STACK POP ON XXX now works correctly. huzzah!
EPIC2pre4
*** News 03/27/95: Bug fix for umode +o (parse.c)
Doh! Cant pass a null pointer to do_hook....
*** News 03/27/95: New privacy feature (config.h, irc.c)
As detailed in the config.h, there is a new privacy feature
in ircII. You are now able to define at compile time, or,
to specify a file containing at run time, user ids in integer
form, that will be authorized to run the program. Unauthorized
users will be "spoofed" -- that is, ircII will execute another
program (that you may also define) without giving any clues.
You may also specify a password that will be used in conjunction
with uid checking.
You can also define a second file that will be used to specify
the uids of those users who will NOT be allowed to use the
program *at all*
See the config.h for a full explanation of the feature.
*** News 03/26/95: Fixed bug with ${} expando (alias.c)
The ${} expando (that allows you to switch to the expression
context from within the command context) didnt allow nesting
before. I consider this a bug, so i fixed it.
(ie, ${[${foo}bar]} now is the variable $foo followed
by the string 'bar'. Nesting ${}s usually is done
when you are using the tertiary operator)
EPIC2pre3.1
*** News 03/23/95: new /set: DISPLAY_ANSI
At the request of Deadelvis, i included a new /set that will allow
you to display ANSI characters as is without their being fudged
by the client into reverse characters. It is off by default.
*** *** *** WARNING! *** *** *** WARNING! *** *** ***
If you run the client with this set to ON, you run the risk of
keybombs/whatnot!
*** *** *** *** *** *** *** *** *** *** *** *** *** ***
My advice is to do something like this:
alias real_echo {set DISPLAY_ANSI ON;eval echo $*;set DISPLAY_ANSI OFF}
then use /real_echo to display things with ansi characters.
*** News 03/23/95: Unexpected EOF message more informative
the "Unexpected EOF in file ..." error message will now attempt
to tell you what line the beginning { started at. Its not
guaranteed to get the right one, but it will get the first unmatched
{ correct. ;-) (deadelvis)
*** News 03/23/95: /ignore MSG no longer ignores CTCPs
At the request of DeadelviS, /ignore ... MSG no longer ignores
CTCPs. you have to /ignore ... MSG CTCP now. Unless someone has
a dire problem with this, i will keep it this way. If you have
a dire problem with it, let me know, and ill work something out
with you.
*** News 03/23/95: wait % functionality restored
Flav alerted me to the fact that wait % was a noop. I put back
its functionality. Dont ask me why phone took it out in the first
place. Whee.
EPIC2pre3 (2.8 compliant)
*** News 03/19/95: finished prototyping
Most (all?) the header files are now prototyped.
*** News 03/18/95: new config.h define, "EXEC_COMMAND"
At the request of DemoN, i have included a define in config.h
that will allow you to remove the EXEC command at compile time.
If you remove the EXEC command, it cannot be used unless you
recompile the client again. If you do not define EXEC_COMMAND,
you cannot use the file manipulation functions either. This
is "supposed" to be a security feature. >;-)
*** News 03/17/95: New /set: AUTO_NEW_NICK
If the server rejects you for a nickname collision, and
you have AUTO_NEW_NICK set to ON, the client will convolute
your nickname in an attempt to get a nickname suitable for
reconnecting. It has a pretty good idea when its out of
guesses, and if that happens, it will fall back and ask
you for a new nickname. If AUTO_NEW_NICK is off, the client
will always ask you for a new nickname if you are collided.
*** News 03/17/95: New function (alias.c notice.c server.h)
New function:
$version([servernumber]) - returns in text form the "class"
of server specified. The servernumber should be
a number corresponding to a server in your server list
TO WHICH YOU ARE OR ALREADY HAVE BEEN CONNECTED!!
Specifying no arguments implies your current server.
The classes are such:
"2.5" a 2.5 server
"2.6" a 2.6 server
"2.7" a 2.7 server
"2.8" a regular 2.8 server
"u2.8" an undernet 2.8 server (mu/me)
"2.9" a regular 2.9 server
"u2.9" an undernet 2.9 server
"2.10" a regular 2.10 server
"u3.0" an undernet 3.0 server
Please dont get confused if you get the reply "u2.8" from
a server on efnet: All that is meant to convey is that the
server has the capability to handle the extended undernet
numerics and replies.
If you ask for the version of a server to which you have not
been connected, "2.5" will be returned (becuase it is the
lowest common denominator)
*** News 03/16/95: EPIC finally loads 100% of ircII2.2.9 scripts
Thanks to the prodding of Kanan and Murple, i tracked down
the reason EPIC wouldnt load old script packs. It was in
edit.c in the loader, the part that handled comments was
munging up lines that it shouldnt have been. I am now able
to load textbox, axis, and phoenix without any apparant
problems. (mixed blessing) This is the most fundamental
bug that i have fixed, so it is worth upgrading for.
*** News 03/16/95: character translation function
New function:
$tr(/oldc/newc/text) - Substitutes any instances of characters
in 'oldc' with corresponding character in 'newc' in
'text'. If 'oldc' is longer then 'newc', then the last
character in 'newc' will be used to extend 'newc' to the
length of 'oldc' Delim is the first character, does not
have to be '/'. Examples:
$tr(/a/b/Mary had a little lamb) returns "Mbry hbd b little lbmb"
$tr(?a??Mary had a little lamb) returns "Mry hd little lmb"
$tr(:abcdefghijklmnopqrstuvqxyz:nopqrstuvwxyzabcdefghijklm:$*)
would do a "rot-13" on the text passed to the alias.
$tr(/$chr($jot($ascii(a) $ascii(z)))/
$chr($jot($ascii(n) $ascii(z)))$chr($jot($ascii(a) $ascii(m)))/$*)
Does the same thing as above.
EPIC2pre2 (2.8 compliant)
*** News 03/14/95: New IP/name conversion functions
Added three new functions:
$iptoname(ip-addr) given a XXX.XXX.XXX.XXX ip address, returns the
hostname associated with that IP
$nametoip(hostname) given a hostname, returns the XXX.XXX.XXX.XXX
ip address associated with that host.
$convert(whatever) converts whatever you give it to whatever it isnt.
$convert($convert(rush.cc.edu)) should return "rush.cc.edu"
*** News 03/13/95: file reading/writing by popular request
You now have the capability to manipulate files directly in
irc using several built in functions.
$open(FILENAME <type>) where <type> is R or W depending
on whether you want to Read or Write. Write does
not truncate file, but rather appends. Returns the
file descriptor to the opened file.
$close(fd) closes the file corresponding to the fd.
$read(fd) returns a line from the file corresponding to the fd.
$write(fd text...) writes the line of text to the file
corresponding to the fd.
$eof(fd) returns 1 if the fd is at end-of-file, 0 otherwise.
These functions return -1 if there is some sort of error.
More functions can be added if you tell me what you want to have.
The "read" option uses uzfopen, so you can read compressed files
via this method if you wish.
Example of usage:
alias cat {
@ fd = open($0 R)
do { echo $read($fd) } while (!eof($fd))
@close($fd)
}
EPIC2pre1 (2.8 compilant)
*** News 03/01/95: do (if.c) (final support in pre2)
Finally got around to supporting the do/while command. It takes
the following form(s):
/do cmds
/do {cmds}
/do {cmds} while (expr)
All forms should work correctly.
*** News 02/28/95: uzfopen (edit.c ircaux.c help.c)
Added capability for ircII to automatically grok the *.Z, *.z,
and *.gz compressed file extentions and automatically know what
to do with them. You may now compress any LOADable file, or
any HELP file any way you choose (gzip or compress) and ircII
will know what to do. Blew away all uses of the ZCAT macro.
*** News 02/27/95: Bug fixes, 2.8 compliance (all)
Wow. Now that its all ANSI prototyped, i have to go through and
fix all the function calls that are incorrect, especially most
of the key binding functions. Some of them were (char, char *),
some of them were (char *, void (*)()), and some of them were (void).
Ick. They all take (char, char *) now. I need to go through and
compile ircII with the -Wall option and find all the bugs i can...
*** News 02/15/95: More Undernet Support (edit.c status.c)
u2.9 commands /RPING, /UPING, and /MAP now supported
u2.9 user mode +d now supported.
mu3 /SILENCE command and replies now supported
*** News 02/9/95: Hack for 'uname' and 'c-like comments'
see config.h about #define UNAME_HACK and #define COMMENT_HACK
basically, it provides some sanity checking for people who dont
like 1) giving out their uname's, and 2) having scripts like
phoenix break on EPIC. (awwwww! >;-)
*** News 01/10/95: Bug fixes (alias.c)
A tertiary operator without a colon (? but no :) caused a
coredump: this has been fixed
*** News 01/02/95: Sanity check for SUPPRESS_SERVER_MOTD (numbers.c)
If you have /set SUPPORT_SERVER_MOTD set to ON, then you
cannot hook /on 372, 375, or 376 the first time you join
a server (ie, its suppressed). You will still hook these
ons any other time you do a /motd.
*** News 01/02/95: new set: NUM_OF_WHOWAS (vars.h.proto vars.c edit.c whois.c)
Allows you to set the number of WHOWAS replies you will recieve
from the server for any given /WHOWAS command. If the value is
nonpositive, the WHOWAS suppression is turned off and you will
recieve all the WHOWAS replies from the server. If it is set
to a positive number, you will recieve up to but not more then
that number of WHOWAS replies per command.
You can override the set by using /WHOWAS <nickname> <NUMBER>
where number is the number of whowas's you want for that
command ONLY. It does not change the default.
*** News 12/22/94: Command line parser rewritten (irc.c)
Revamped the command line argument parser, its not quite as
quirky now, and is more able to cope with different styles.
The biggest change (that will break things) is that every flag
must be preceeded by a hypen (ie, -lbs is *not* the same as
-l -b -s any more.)
Of the commands that need to take an argument, the argument
may either be in the same "word" as the flag or may be in
the next word. (ie, -lfoo.irc is the same as -l foo.irc)
Arguments given in the same word to flags that do not expect
an argument elicit a warning but are not fatal.
Naked arguments (arguments not starting with a hyphen) are parsed
just like they always have been, with the first naked argument
being used as the default nickname and any other naked args used
as default server(s)
All taken into account, it is intended that the command line
arguments will now be easier to use and wont be quite so
painful with its (oft) mistaken restrictions...
New command line argument(s):
-n sets the default nickname
The command flags -I and -i will be supported in some future
release. (used to determine default visibility)
***************************************************************************
EPIC1.003 (vars.h.proto vars.c alias.c)
Added new set, /set PAD_CHAR that is used to determine the
padding character used in the "width" expando (ie, $[10]foo).
While syntatically PAD_CHAR may be set to any string, only the
first character will actually be used and the rest are ignored.
EPIC1 (2.6 compliant)
Upgraded to 2.6 (of course)
Functions isalpha() and isdigit() added: isalpha() returns "1"
if first character passed is a lowercase or uppercase letter.
Isdigit() returns "1" if the number is a digit, or is a hypen and
the second character is a digit.
Most (all?) of the word functions now call new_next_arg() instead
of next_arg(). What this means for you is that if you wish, you
can group more than one word inside of quotation marks, and they
will be considered as one "word" for matching/counting/etc.
The usefulness of this will be demonstrated below. ;-)
Flexible hooks have been added: You can enter and recognize
flexible hooks by using single quotes (') instead of double
quotes (") around the pattern in the /on statement.
So: /on join '$N *' echo $*
will /echo $* any time you join a channel. The difference
between a flexible hook and a regular hook is that the
flexible hook's pattern is not static, but rather is dynamic,
and any variables in the pattern will be expanded before it
is matched against the incoming line. This allows you to put
variables/functions in a pattern and have it work right.
Ability added to allow inline explosion of regular expressions.
If you place two or more words inside a \\[ \\] set, the word
that makes the pattern best match the string will be used:
Example: (newlines added solely for readability)
$rmatch(jnelson@rush.cc.edu
"sconway@\\[ugly raisin\\].ucs.indiana.edu"
"jnelson@\\[rush.cc.edu it.uwp.edu\\]")
would return "2" because the 2nd pattern matches the string.
$rmatch(sconway@raisin.ucs.indiana.edu
"sconway@\\[ugly raisin\\].ucs.indiana.edu"
"jnelson@\\[rush.cc.edu it.uwp.edu\\]")
would return "1" becuase the 1st pattern matches the string.
Note the use of quotation marks around the 2nd and 3rd argument
(which contain spaces) allows them to be considered as one
logical word.
An example that combines the previous two features:
/assign $ak nick@user*host lamer@bogus*host
/on JOIN '% % \\[$ak\\]' kick $1 $0
This ON will be parsed as follows: Since this is a flexible hook,
the $ak will be expanded to its value each time someone joins a
channel. Next, it sees that the value of $ak is inside a \\[ \\]
pair, so it subsitutes each word inside the pair into the expression
to see which (if any) best match the pattern. The value of a
\\[ \\] pattern is the number of characters that is matched
by the word in the pattern that exactly matches the most number of
characters in the pattern.
While it is syntatically acceptable to use nested \\[ \\] sets,
the behavior of this is currently undefined and should not be used
or trusted to be consistant in any future releases.
The $which() function can now take two arguments, with the
first being the file to search for, and the second argument
being a colon seperated path. The second argument is optional
and $LOAD_PATH is used if no path is specified.
EPIC-pre1 (2.3.23 compliant)
Ban listings are now counted, and the total number of
bans is displayed (or available via /on 368 as $1)
Undernet numerics are now (mostly) supported, and the
additions to present numerics are also supported
(Obsolete stuff about ZCAT removed)
If you want things the way wintrhawk has them, just
#define WINTRHAWK somewhere in config.h: otherwise things
will appear as they normally are, more conventionally.
2.3.23+11.1
(obviously) upgraded to 2.3.23
Included stuff from wintrhawk: (everything from here on till
you see the 2.3.22+11 line is from WintrHawk)
Added 6 new STATUS_USER [4..9] variables that will only show in
your NON-CURRENT window. SHOW_STATUS_ALL must be OFF for these to
work. You can predefine these in the config.h or utilise them in
exactly the same manner as you would STATUS_USER[..3].
Additionally, all STATUS_USER variables can now be called with
%0..%9 in STATUS_FORMAT with backwards compatibility of:
[%U, %X..%Z] == [%0..%3]
I hope you'll find these usefull in displaying additional
information on your statusbar. Look for my updated scripts that
will take advantage of these in the near future. I actually do plan
to add more STATUS_USER variables but I don't have the time or
patience yet. |8^)
Fixed the core dump problem when you attempt irc -h.
Got rid of the "ircII%s..." bug that refused to show version info on
abnormal termination.
Introduced a new global variable UNAME to define system type and
release information during a CTCP VERSION reply. Maybe one of these
days I'll have it autoconfig'd with the Gnu AutoConfigure Script.
Fixed the bug that hop introduced that would strip all leading
whitespaces from the input line. Maybe he had a hidden agenda for
doing that... I just found it annoying.
DCC TALK was disabled because the routines didn't work right. It's
now fixed.
Also fixed the bug that would cause you to exit even if you answered
"no" to the "Do you want to quit?" prompt after hitting ^C.
Changed +10's IRCFINGER routine. Functionality remains the same.
2.3.22+11
New function: $which() searches your LOAD_PATH for
the filename you specify, and returns the full path
to it. Useful for this example:
alias send_script dcc send $0 $which($1)
You can now enclose arguments to /LASTLOG inside "".
You can also now use wildcards in /LASTLOG to determine
what you want to search against. If you use these two
together, you can search for multi-word regexes.
example: /lastlog "t*is su"
/lastlog -literal "6667 is the port for irc"
/lastlog o*er
$before() and $after() now have a few new features.
You can now supply an optional integer value as the
first argument to these functions, and if present, will
be used to indicate which instance of the characters
you wish to use. If the number is negative, it counts
off from the end. You can also supply more then one
character to look for, if you wish. Some examples:
# completely backwards compatable
$after(! hop!jnelson@pv0420.vincent.iastate.edu)
returns "jnelson@pv0420.vincent.iastate.edu"
$after(-1 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "edu"
$before(2 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "hop!jnelson@pv0420.vincent"
$before(-3 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "hop!jnelson@pv0420"
$after(-5 . hop!jnelson@pv0420.vincent.iastate.edu)
returns "" because there are not 5 .'s
Added new operators: +=, -=, *=, %=, /=, #=. All do
just what they do in C, except for #= which is a
string catenation operator. I hope to have &=, ^=, and |=
in the next release.
New Keybinding: SHOVE_TO_HISTORY: simply takes what you
have in the input line, saves it to your history, and
then clears the input line (presumably for more pressing
needs). You can get back to your line whenever you
wish by just cycling through your history.
Comes bound to ^] by default.
$F now returns the time the client booted up,
in $time() format (long integer in seconds since 1970)
$J now returns the ircII client version you are
running as a string ($V returns the date released)
2.3.17+10
A new hook, /on EXIT will be hooked as the client is exiting.
This hook is not recoverable (the client can not be stopped
from exiting when /on exit is hooked), but you can do some
housekeeping before the client quits with this.
The /DUMP command can now have 4 optional arguments
"ALIAS" dumps all aliases
"VARIABLES" dumps all variables
"ON" dumps all ons
"ALL" dumps everything
If no args are given, all is used as the default.
New function $chr(int int int int)
Returns the string corresponding to the ascii numbers given
$chr(65 66 67 68) returns the string "ABCD"
New Function: $ascii(string)
Returns the ascii numbers corresponding to the chars given
$ascii(ABCD) returns "65 66 67 68"
Thanks to tychy for the following idea.
When you get an incoming dcc handshake, the userhost of
the person who sent you the request is displayed, as well
as the machine that is in the handshake, and the port number
in the handshake.
If the port number is less then 1024, it is rejected.
If the userhost does not agree with the ip number, beware!
Added two functions: $before() and $after()
Syntax: $before(chars text text text)
Usage: Returns the text (before|after) the first instance
of any character in "chars"
$E now returns your idle time.
Added C-like comments /* */.
Limitations:
While comments may span more then one line, code
may not be broken up over one line. For example:
echo test /* this is a comment
this is more comment */booya
will echo "test" and execute the alias booya.
If you #define COMMENT_HACK, you can only have C like
comments that start at the BEGINNING of a line. The
end of the comment still can occur anywhere.
Fixed the serial numbered hook bug. The one where any serial
numbered hooks higher then the first serial number hook set
that did not have a match were not hooked.
Fixed the mother of all memory leaks. The one that leaked
the channel mode each time the status bar was updated. Phone
fixed this but introduced a new bug in the process. That bug
got fixed in EPIC1.
Added the ~ operator (Bitwise negative)
Added the comma operator. What it does is evaluate the
expression to the left of the comma, and throws away the
result, then evaluates the right side and returns it.
If you are kicked from a channel, and there is a channel
key, auto-rejoin will use that key.
2.3.16+9
Reworked the mathematical parser (next_unit) as follows:
* Added the &, |, and ^ operators
* Made && and || short circuit
* Added the tertiary operator
* The order of hirearchy is the same as C++,
the main change being that assignment
has LESS priority then conjunctions.
Are you sick of when your status line repeats the last
character off to the end of the line? Then you can just
/set status_no_repeat ON.
Added the /ABORT command. It does a "save" into the current
directory and then coredumps. If ALLOC_DEBUG is defined,
it does a memory dump, as well. Useful for confused bots.
NOTE: IT WILL *_NOT_* corrupt your .ircrc!
New function $numonchannel(). Returns the number of people
on the channel specified. The channel may not be ommitted,
and you must be on the channel in question. Returns 0 on error.
Replaced Auto-reconnect in a new form, which was removed from
2.3.16. Autoreconnect is done automatically on server kills.
fixed the $ischanop() bug from 2.2.9. The one where if
someone changed nickname, the client thought they were no
longer opped. This bug still seems to be around in 2.8,
but it is not present in EPIC.
2.3.16+8
Changed the /userhost command. You may now use any number of
nicks per command, delimiting the list with "-cmd", and each
nick will be passed through the commands given.
The client does not automatically turn on the screen when it
is done loading a script, but rather honors the value of
/set DISPLAY. Dont ask me why it was changed in the first
place.
A mode stripper has been added: The mode stripper does not
replace /on mode, but rather complements it. You can turn on
the mode stripper with:
/set MODE_STRIPPER on
and then you can catch stripped modes with
/on MODE_STRIPPED "...."
NOTE: /on mode STILL works even with the mode stripper on.
The load parser has been partially rewritten fixing a bug
when a semicolon was the last char on a line.
2.2.9+7
The behavior of the Command Parser has been changed, and you
may now use {} blocks just about anywhere you want to,
including the /userhost and /timer command, without having
to use the /do command. Try playing around with it, and
youll see what i mean.
The "WAIT has been called recursively" problem is no longer
a problem, so the warning message has been removed. Waiting
recusively no longer locks up the client.
New Functions:
$center(length string)
Returns "STRING" centered in a field
of length LENGTH.
To get a string of length 'length' you
will need to use the width expando, ie
$[length]center(length string)
$split(delim string)
Actually, it just changes any occurances
of any character in DELIM to a space.
Useful with the $word() function.
The % operator (modulus, aka remainder) has been added
Full support for postfix and prefix (in|de)crement
operators has been added. They now work correctly
and as you would expect.
Remember: $blah++ is not legal, it must be used as
${blah++}. Also legal is @ blah++.
New Functions/commands:
$SHIFT(var) removes word 0 from $var and returns it
$UNSHIFT(var word) puts "words" at the beginning of $var
$POP(var) removes the last word from $var and returns it
$PUSH(var word) puts "words" at the end of $var, returns $var.
These functions are also provided in command form, so that
they can be used simply for their side effects.
New Function:
$SAR([r][g]/search/replace/text) - search and replace
If 'r' is the first character, "text" is assumed
to be the name of a variable, and the text sub-
titution is done on that variable and the result
is put back into the variable, and is returned.
If 'g' is the first character, all matches of
"search" will be replaced with "replace". Normally
only the first match is replaced.
In any case, the first character that is not 'r' or
'g' is assumed to be the delimiter. You may use any
delimiter you want, but you should take care that
you dont use it in the first two fields (obviously).
The delimiter may safely appear in the last field.
2.2.9+6
New Command: FEC
Syntax: /fec (string) var {commands}
FEC iterates over STRING one character at a time putting
each character into $var. If you specify more then one
variable, the first one is used, the rest are ignored.
For each character in the string, the commands are
executed.
/fec (booya) x {echo $x}
would output "booya" one character on a line.
New Command: DO
Syntax: /do {commands}
Useful for those places where you can only have one
command, and backslashing semicolons doesnt appeal to
you, like in /timer.
*** Note: This command has added capabilities now. But
its straight use is generally uneccesary becuase the command
parser is now able to deal with embedded {} blocks effectively.
FOR, FOREACH, and FE are now all aliases of each other.
If the arguments do not start with a '(', it is assumed
to be the "FOREACH" command. If there is a () pair, and
there are exactly two commas between them, it is assumed
to be a FOR command, else it is assumed to be a FE command.
New functions:
$reverse(text)
reverses all the text character by character
$revw(word ... word)
reverses the text word by word
$jot(min max interval)
returns a list of numbers from "min" to "max" every
"interval" integers, (interval is one if ommited)
EXAMPLE:
$jot(1 10) returns the string
"1 2 3 4 5 6 7 8 9 10"
$jot(2 10 2) returns the string
"2 4 6 8 10"
2.2.9+5 (includes 2.2.9+4.1)
New command: FOR (CMDS1, EXPR, CMDS2) {CMDS3}
Looks and feels just like the C command (sorta)
Upon commension, cmds1 is executed once
Expr is then evaluated, and if expr is TRUE,
Cmds3 and then cmds2 are executed,
Repeat loop.
Stop command
The comma was chosen as a delimeter on purpose, so you can
have multiple commands in a set.
Example:
alias repeat for (@x=0, x<$0, @x++) {$1-}
alias foo for (@x=0; @y=0, x+y<5 , @x=x+2;@y--) {echo $x $y}
New command: DUMP
Deletes all of your aliases, assigns, and ons,
in case you really FUBAR things. You can then
/load global and your .ircrc to effectively reboot.
New functions:
RPATTERN (word patttern pattern...)
Returns all patterns that match "word"
RFILTER (word pattern pattern...)
Returns all patterns that do not match "word"
COPATTERN (pattern variable1 variable2)
For each value in variable1 that matches the pattern,
the corresponding value from variable2 is returned.
ENFORCE_STRICTER_PROTOCOL now forbids kicks from /on who.
Using /on who to kick is lame anyhow....
If you give the function $key() no arguments, or the argument
'*', the current channel will be assumed.
2.2.9+4
New command: /QUEUE <flags> NAME <number> <{commands}>
Flags: -DO run the commands in the named queue. Deletes
the queue by default.
-NO_FLUSH when you run the commands, do not delete
the queue.
-SHOW show the contents of all of the queues
-LIST show the contents of the named queue.
-DELETE remove the numbered entry in the named queue
-FLUSH remove the named queue
o The "QUEUE" command allows you to store a list of commands
into named queues. You may have as many entries into an
individual queue as you like, and you may have as many
named queues as you like.
o Error checking is not very tight right now, so if you try to
crash the command by doing weird stuff, you probably will.
o If you give a list of commands, they must be surrounded by
braces, and they will be added to the named queue.
o At this point, it is not recommended that you use more
then one flag per command, as i have not tested this yet.
Store commands: /queue BOOYA {echo one}
/queue WAHOO {mode * +o nick}
Exec. commands: /queue -do BOOYA
/queue -do -no_flush WAHOO
If you provide no arguments or the argument "*" to the
functions $onchannel(), $chops(), and $nochops(), the
current channel will be assumed.
New function: $key(#channel)
Returns the channel key for #channel, (provided
you are on the channel that you ask about)
2.2.9+3
$X now returns your userhost
$Y now returns your ircname
(*** Deleted info about $tert() function that is obsolete)
Added the builtin function $onchannel() that returns
everyone on the channel given, but is only reliable if
you are ON that channel. Returns a null if you are not.
Added the builtin functions $chops() and $nochops()
They return the channel operators and non-channel
operators on the specified channels.
Karll's "Array Suite" has been incorperated. The source
file is array.c and the instructions are in ARRAY
META5-9 have been added. You now have 9 META keys to
work with. Meta4 is still sticky.
New command "REALNAME" (or "IRCNAME") allows you to change
your REALNAME (the text on the right in the first line of
a whois reply), it will take effect after you use the
command "RECONNECT"
2.2.9+2
Several new built-in functions have been added:
$leftw(x list) returns the x left words in list
$rightw(x list) returns the x right words in list
$restw(x list) returns the Xth word and after
$midw(start stop list) returns the words start to
stop in list
$notw(x list) return list without the Xth word
$insertw(x word list) returns list with word added as
the Xth word
$remw(word list) returns the list without "word"
$pattern(pattern list) returns all words in list that
rmatch pattern
$filter(pattern list) returns all words in list that
do not rmatch pattern
$chngw(x new list) returns list with the Xth word
changed to new.
$tow(word list) returns the list up to/including word
$fromw(word list) returns the list after/including word
$beforew(word list) returns the list before word
$afterw(word list) returns the list after word
$common(list1 / list2) returns all words present in
both list1 and list2 (case insensitive)
$diff(list1 / list2) returns all words not in both list1
and list2 (case insensitive)
/on encrypted_privmsg and /on encrypted_notice added:
they have the same parameters as /on msg and /on notice
expect that they only are hooked when the msg is encrypted.
NOTE: If you hook these with ^, normal /on msgs will not
be hooked. (you can override defaults)
(Obsolete stuff about ZSUFFIX and loaded files removed)
/on disconnect now hooks whenever you are not connected to a
server, as stated in the help files.
2.2.9+
(Obsolete stuff about ZSUFFIX and help files removed)
Four new ONs added: NOTE: /on dcc_raw ALWAYS has higher
priority over any of these ons.
/on DCC_REQUEST tells you when you have recieved a DCC request
$0 is the person sending the request
$1 is the type of DCC request (chat, send)
$2 is the description (filename for dcc send)
$3 is the size of the file (for dcc send)
/on DCC_LOST tells you when a DCC connection terminates
$0 is the user connected to
$1 is the type of connection lost
$2- any additional information as applicable
/on DCC_CONNECT tells you when a DCC connection becomes active
$0 is the user connected to
$1 is the type of connection being made
$2- any addition information as applicable
A new SET has been added, "AUTO_REJOIN". When set to ON,
you will automatically rejoin the channel if you are kicked.
A new command /FE has been added.
FE (list of words) control vars { commands to execute }
FE allows you to go through a given list of words using an
arbitrary number of them at a time, and execute a set of
commands once for each pass. examples:
/alias opalot fe ($2-) x y z {mode $0 $1ooo $x $y $z}
/alias kickalot fe ($1-) xx {kick $0 $xx}
The first would op/deop a list of people 3 at a time
The second kicks a list of people
An arbitrary limit of 255 control variables was used.
A lot of scripts added. Look through them, you might find
some of them useful.
CTCP FINGER returns a null. (if you #define HOP)
ircii-EPIC-3.004+SrfRoG/acconfig.h 100600 0 144 10014 6200754724 14735 0 ustar root users /*
* @(#)$Id: acconfig.h,v 1.17 1994/10/16 00:35:31 mrg stable $
*/
/* define if allow sys/time.h with time.h */
#undef TIME_WITH_SYS_TIME
/* define this if you are using BSD wait union thigs */
#undef BSDWAIT
/* Define this if you have SUN_LEN in <sys/un.h> */
#undef HAVE_SUN_LEN
/* define this if you are using -ltermcap */
#undef USING_TERMCAP
/* define this if you are using -lcurses */
#undef USING_CURSES
/* define this if you are using -lxtermcap */
#undef USING_XTERMCAP
/* define this if you are using -ltermlib */
#undef USING_TERMLIB
/* define this if signal's return void */
#undef SIGVOID
/* define this if you are using sigaction() instead of signal() */
#undef USE_SIGACTION
/* define this if you are using sigset() instead of signal() */
#undef USE_SIGSET
/* define this if you are using system V (unreliable) signals */
#undef SYSVSIGNALS
/* define this if wait3() is declared */
#undef WAIT3_DECLARED
/* define this if waitpid() is declared */
#undef WAITPID_DECLARED
/* define this if waitpid() is unavailable */
#undef NEED_WAITPID
/* define this if -lnls exists */
#undef HAVE_LIB_NLS
/* define this if -lnsl exists */
#undef HAVE_LIB_NSL
/* define his if -lPW exists */
#undef HAVE_LIB_PW
/* define this to the mail spool */
#undef MAIL_DIR
/* define this if you have scandir() */
#undef HAVE_SCANDIR
/* define this if you have memmove() */
#undef HAVE_MEMMOVE
/* define this if you have setsid() */
#undef HAVE_SETSID
/* define this if you have getsid() */
#undef HAVE_GETSID
/* define this if you have getpgid() */
#undef HAVE_GETPGID
/* define this if your getpgrp() doesn't take a pid argument */
#undef BROKEN_GETPGRP
/* define this if you have sys/select.h */
#undef HAVE_SYS_SELECT_H
/* define this if you have sys/fcntl.h */
#undef HAVE_SYS_FCNTL_H
/* define this if you have fcntl.h */
#undef HAVE_FCNTL_H
/* define this if you have sys/file.h */
#undef HAVE_SYS_FILE_H
/* define this if you have sys/time.h */
#undef HAVE_SYS_TIME_H
/* define this if you have sys/wait.h */
#undef HAVE_SYS_WAIT_H
/* define this if you have string.h */
#undef HAVE_STRING_H
/* define this if you have memory.h */
#undef HAVE_MEMORY_H
/* define this if you have netdb.h */
#undef HAVE_NETDB_H
/* define this if you have sys/ptem.h */
#undef HAVE_SYS_PTEM_H
/* define this if you need getcwd() */
#undef NEED_GETCWD
/* define this if you have hpux version 7 */
#undef HPUX7
/* define this if you have hpux version 8 */
#undef HPUX8
/* define this if you have an unknown hpux version (pre ver 7) */
#undef HPUXUNKNOWN
/* define this if an unsigned long is 32 bits */
#undef UNSIGNED_LONG32
/* define this if an unsigned int is 32 bits */
#undef UNSIGNED_INT32
/* define this if you are unsure what is is 32 bits */
#undef UNKNOWN_32INT
/* define this if you are on a svr4 derivative */
#undef SVR4
/* define this if you are on solaris 2.x */
#undef __solaris__
/* define this if you don't have struct linger */
#undef NO_STRUCT_LINGER
/* define this if you are on svr3/twg */
#undef WINS
/* define this if you need fchmod */
#undef NEED_FCHMOD
/* define this to the location of normal unix mail */
#undef UNIX_MAIL
/* define this if your header files declare sys_errlist */
#undef SYS_ERRLIST_DECLARED
/* define this if you have uname(2) */
#undef HAVE_UNAME
/* define this if you need strerror(3) */
#undef NEED_STRERROR
/* define this if you have stdarg.h */
#undef HAVE_STDARG_H
/* define this if you have getdtablesize */
#undef HAVE_GETDTABLESIZE
/* define this if you have getpass */
#undef HAVE_GETPASS
/* define this if you have gettimeofday */
#undef HAVE_GETTIMEOFDAY
/* define this if you have sysconf */
#undef HAVE_SYSCONF
/* define this if you have glob */
#undef HAVE_GLOB
/* define this if you dont have strtoul */
#undef NEED_STRTOUL
/* Define this if compiling with SOCKS (the firewall traversal library).
Also, you must define connect, getsockname, bind, accept, listen, and
select to their R-versions. */
#undef SOCKS
#undef connect
#undef getsockname
#undef bind
#undef accept
#undef listen
#undef select
ircii-EPIC-3.004+SrfRoG/bsdinstall 100700 0 144 2207 6144716532 15065 0 ustar root users #! /bin/sh
#
# @(#)install.sh 4.5 (Berkeley) 10/12/83
#
cmd=/bin/mv
strip=""
chmod="/bin/chmod 755"
chown=""
chgrp=""
while true ; do
case $1 in
-s ) strip="/bin/strip"
shift
;;
-c ) cmd="/bin/cp -p"
shift
;;
-m ) chmod="/bin/chmod $2"
shift
shift
;;
-o ) chown="/etc/chown -f $2"
shift
shift
;;
-g ) chgrp="/bin/chgrp -f $2"
shift
shift
;;
-d ) cmd="/bin/mkdir"
shift
;;
* ) break
;;
esac
done
if test ! ${2-""}; then
echo "install: no destination specified"
exit 1
fi
if test ${3-""}; then
echo "install: too many files specified -> $*"
exit 1
fi
if test $1 = $2 -o $2 = .; then
echo "install: can't move $1 onto itself"
exit 1
fi
case $cmd in
/bin/mkdir )
file=$2/$1
;;
* )
if test '!' -f $1; then
echo "install: can't open $1"
exit 1
fi
if test -d $2; then
file=$2/$1
else
file=$2
fi
/bin/rm -f $file
;;
esac
case $cmd in
/bin/mkdir )
if test ! -d "$file"; then
$cmd $file
fi
;;
* )
$cmd $1 $file
if test -n "$strip"; then
$strip $file
fi
;;
esac
if test -n "$chown"; then
$chown $file
fi
if test -n "$chgrp"; then
$chgrp $file
fi
$chmod $file
exit 0
ircii-EPIC-3.004+SrfRoG/configure 100700 0 144 310634 6215277552 14760 0 ustar root users #! /bin/sh
# From configure.in Revision: 1.48 # Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.10
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
# Defaults:
ac_help=
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
--with-socks[=PATH] Compile with SOCKS firewall traversal support."
# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
build=NONE
cache_file=./config.cache
exec_prefix=NONE
host=NONE
no_create=
nonopt=NONE
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datadir='${prefix}/share'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
# Initialize some other variables.
subdirs=
MFLAGS= MAKEFLAGS=
ac_prev=
for ac_option
do
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval "$ac_prev=\$ac_option"
ac_prev=
continue
fi
case "$ac_option" in
-*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) ac_optarg= ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
case "$ac_option" in
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
bindir="$ac_optarg" ;;
-build | --build | --buil | --bui | --bu)
ac_prev=build ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build="$ac_optarg" ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file="$ac_optarg" ;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
datadir="$ac_optarg" ;;
-disable-* | --disable-*)
ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
eval "enable_${ac_feature}=no" ;;
-enable-* | --enable-*)
ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
fi
ac_feature=`echo $ac_feature| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "enable_${ac_feature}='$ac_optarg'" ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix="$ac_optarg" ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
-help | --help | --hel | --he)
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat << EOF
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
--cache-file=FILE cache test results in FILE
--help print this message
--no-create do not create output files
--quiet, --silent do not print \`checking...' messages
--version print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[same as prefix]
--bindir=DIR user executables in DIR [EPREFIX/bin]
--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
--libexecdir=DIR program executables in DIR [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data in DIR
[PREFIX/share]
--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data in DIR
[PREFIX/com]
--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
--libdir=DIR object code libraries in DIR [EPREFIX/lib]
--includedir=DIR C header files in DIR [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
--infodir=DIR info documentation in DIR [PREFIX/info]
--mandir=DIR man documentation in DIR [PREFIX/man]
--srcdir=DIR find the sources in DIR [configure dir or ..]
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM
run sed PROGRAM on installed program names
EOF
cat << EOF
Host type:
--build=BUILD configure for building on BUILD [BUILD=HOST]
--host=HOST configure for HOST [guessed]
--target=TARGET configure for TARGET [TARGET=HOST]
Features and packages:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR
EOF
if test -n "$ac_help"; then
echo "--enable and --with options recognized:$ac_help"
fi
exit 0 ;;
-host | --host | --hos | --ho)
ac_prev=host ;;
-host=* | --host=* | --hos=* | --ho=*)
host="$ac_optarg" ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
includedir="$ac_optarg" ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
infodir="$ac_optarg" ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
libdir="$ac_optarg" ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
libexecdir="$ac_optarg" ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst \
| --locals | --local | --loca | --loc | --lo)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
localstatedir="$ac_optarg" ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
mandir="$ac_optarg" ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
with_fp=no ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c)
no_create=yes ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
no_recursion=yes ;;
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
| --oldin | --oldi | --old | --ol | --o)
ac_prev=oldincludedir ;;
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
oldincludedir="$ac_optarg" ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix="$ac_optarg" ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
program_prefix="$ac_optarg" ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
program_suffix="$ac_optarg" ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
| --program-transform-n | --program-transform- \
| --program-transform | --program-transfor \
| --program-transfo | --program-transf \
| --program-trans | --program-tran \
| --progr-tra | --program-tr | --program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | --program-transform-name=* \
| --program-transform-nam=* | --program-transform-na=* \
| --program-transform-n=* | --program-transform-=* \
| --program-transform=* | --program-transfor=* \
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
program_transform_name="$ac_optarg" ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
sbindir="$ac_optarg" ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
| --sharedst | --shareds | --shared | --share | --shar \
| --sha | --sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
sharedstatedir="$ac_optarg" ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
site="$ac_optarg" ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir="$ac_optarg" ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
sysconfdir="$ac_optarg" ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
ac_prev=target ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target="$ac_optarg" ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
-version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.10"
exit 0 ;;
-with-* | --with-*)
ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes ;;
esac
eval "with_${ac_package}='$ac_optarg'" ;;
-without-* | --without-*)
ac_package=`echo $ac_option|sed -e 's/-*without-//'`
# Reject names that are not valid shell variable names.
if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
{ echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
fi
ac_package=`echo $ac_package| sed 's/-/_/g'`
eval "with_${ac_package}=no" ;;
--x)
# Obsolete; use --with-x.
with_x=yes ;;
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes="$ac_optarg" ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries="$ac_optarg" ;;
-*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
;;
*)
if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
echo "configure: warning: $ac_option: invalid host type" 1>&2
fi
if test "x$nonopt" != xNONE; then
{ echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
fi
nonopt="$ac_option"
;;
esac
done
if test -n "$ac_prev"; then
{ echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
fi
trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
# File descriptor usage:
# 0 standard input
# 1 file creation
# 2 errors and warnings
# 3 some systems may open it to /dev/tty
# 4 used on the Kubota Titan
# 6 checking for... messages and results
# 5 compiler messages saved in config.log
if test "$silent" = yes; then
exec 6>/dev/null
else
exec 6>&1
fi
exec 5>./config.log
echo "\
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
" 1>&5
# Strip out --no-create and --no-recursion so they do not pile up.
# Also quote any args containing shell metacharacters.
ac_configure_args=
for ac_arg
do
case "$ac_arg" in
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c) ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
*" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
ac_configure_args="$ac_configure_args '$ac_arg'" ;;
*) ac_configure_args="$ac_configure_args $ac_arg" ;;
esac
done
# NLS nuisances.
# Only set LANG and LC_ALL to C if already set.
# These must not be set unconditionally because not all systems understand
# e.g. LANG=C (notably SCO).
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -rf conftest* confdefs.h
# AIX cpp loses on an empty file, so make sure it contains at least a newline.
echo > confdefs.h
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
ac_unique_file=source/irc.c
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then its parent.
ac_prog=$0
ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
if test ! -r $srcdir/$ac_unique_file; then
srcdir=..
fi
else
ac_srcdir_defaulted=no
fi
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
{ echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
else
{ echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
fi
fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
else
CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
echo "loading site script $ac_site_file"
. "$ac_site_file"
fi
done
if test -r "$cache_file"; then
echo "loading cache $cache_file"
. $cache_file
else
echo "creating cache $cache_file"
> $cache_file
fi
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
ac_n= ac_c='
' ac_t=' '
else
ac_n=-n ac_c= ac_t=
fi
else
ac_n= ac_c='\c' ac_t=
fi
VERSION=`sed -n -e 's/";$//' -e '/const char irc_version.. = "/s///p' -e '/const char irc_version/q' < source/irc.c`
echo this is ircii version $VERSION
echo
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
ac_cv_prog_CC="gcc"
break
fi
done
IFS="$ac_save_ifs"
fi
fi
CC="$ac_cv_prog_CC"
if test -n "$CC"; then
echo "$ac_t""$CC" 1>&6
else
echo "$ac_t""no" 1>&6
fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
ac_prog_rejected=no
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
break
fi
done
IFS="$ac_save_ifs"
if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
if test $# -gt 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
set dummy "$ac_dir/$ac_word" "$@"
shift