Eggdrop core
This is an exhaustive list of all the Tcl commands added by eggdrop. All of the normal Tcl built-in commands are still there, of course. But you can also use these to manipulate features of the bot. Please see the module files for Tcl commands relating to each module.
NOTICE: This list is accurate for the v1.6 series of eggdrop!
Scripts which were written for earlier versions will probably not work without modification. Some, however can be made to work using the compat.tcl distributed with eggdrop.
Contents
Lines in bold are the lines that need to be included in the Eggdrop config file if you want to use the share module. Lines in bold italics are optional and only required if you wish to change the default behaviour for that particular feature.
The first line in an Eggdrop configuration file should contain a fully qualified path to your Eggdrop executable. It has to be implemented in the way the example shows to make the config file work as a shell script.
Example:
#! /path/to/eggdrop
You can change the basic eggdrop appearance and behaviour in this section.
- set username "lamest"
This setting defines the username the bot uses.
Note that this setting works only if no ident daemon is running on the machine your bot is on.
- set admin "Lamer <email: lamer@lamest.lame.org>"
This setting defines which contact person should be shown in .status, /msg help and other places. You really should include this info.
- set network "SomeIrcNetwork"
This setting is used only for info to share with others on your botnet.
- set timezone "EST"
This setting defines the timezone is your bot in. It's used for internal routines as well as for logfile timestamping or scripting purposes. The timezone string specifies the name of the timezone and must be three or more alphabetic characters.
ex. Central European Time(UTC+1) could be "CET"
- set offset "5"
offset specifies the time value to be added to the local time to get Coordinated Universal Time (UTC aka GH${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS=-lld -L/home2/f/foster/lib -ltcl7.5 -lm'\ 'TCLLIB=${TCLLIB}' 'RANLIB=ranlib' 'STRIP=-s'
8. Unsatisfied symbols 'shl_findsym' and 'shl_load' (HP-UX 9)
gcc -s -o eggdrop chan.o chanprog.o chanset.o cmds.o dcc.o
dccutil.o filedb.o fileq.o files.o gotdcc.o hash.o main.o match.o
mem.o misc.o mode.o msgcmds.o msgnotice.o net.o tandcmd.o tandem.o
tcl.o tclhash.o userrec.o users.o -L/home/hltran/tcl/lib -lt
cl7.5 -lm
/bin/ld: Unsatisfied symbols:
shl_findsym (code)
shl_load (code)
collect2: ld returned 1 exit status
*** Error code 1
Stop.
Upgrade to a later version of Tcl. The following should also work:
GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS= -L/usr/local/lib -ltcl7.5 -lm'\
'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='
Add in -lld into the XLIBS assignment, like this:
GMAKE = ${MAKE} 'CC=gcc' 'AWK=awk' 'OBJS=${OBJS}' 'TCLLIBFN=tcl7.5.a'\
'CFLAGS=${CFLAGS}' 'XREQ=${XREQ}' 'XLIBS=-ldl -L/usr/local/lib -ltcl7.5 -lm'\
'TCLLIB=${TCLLIB}' 'RANLIB=:' 'STRIP='
9. Bot doesn't compile on Ultrix
There are some known problems with make and Eggdrop on Ultrix systems. Try to use gmake instead of make. Additionally, sh5 should be used. A simple'gmake SHELL=/bin/sh5' should be enough.
10. Bot crashes at startup with the message "net.c/708", for example
On some non IA32 systems, the gcc options -O2 and -O3 can cause that. We don't know why this happens, but sometimes it helps to remove those flags from the Makefile. To disable them, use:
./configure --disable-cc-optimization
Ah well, drop us a note if you know why, so we can extend the info here.
Well, warnings are warnings, nothing really bad. As long as the compile runs through, there is nothing to worry about. Generally, we try to avoid warnings, but we do not have time to fix all of them in the code. This might change in the future, but at the moment you have to live with them. If you feel like fixing them, do so and send us a patch (as described in doc/patch.howto). Thanks.
1. Redeclaration in compat/unistd.h (Tcl 7.4/AIX 4)
cc -c -O -I. -I. -DHAVE_________=1 -DSTDC_HEADERS=1
-DNO_UNION_WAIT=1 -DNEED_MATHERR=1 -Dvfork=fork
-DTCL_LIBRARY=\"/usr/local/lib/tcl7.4\" regexp.c
"compat/unistd.h", line 42.12: 1506-343 (S) Redeclaration of execl
differs from previous declaration on line 121 of
"/usr/include/unistd.h".
"compat/unistd.h", line 42.12: 1506-378 (I) Prototype for function
execl cannot contain "..." when mixed with a nonprototype declaration.
"compat/unistd.h", line 43.12: 1506-343 (S) Redeclaration of execle
differs from previous declaration on line 123 of
"/usr/include/unistd.h".
"compat/unistd.h", line 43.12: 1506-378 (I) Prototype for function
execle cannot contain "..." when mixed with a nonprototype
declaration.
"compat/unistd.h", line 44.12: 1506-343 (S) Redeclaration of execlp
differs from previous declaration on line 125 of
"/usr/include/unistd.h".
"compat/unistd.h", line 44.12: 1506-378 (I) Prototype for function
execlp cannot contain "..." when mixed with a nonprototype
declaration.
make: The error code from the last command is 1.
It seems that configure had a brain fart. Would you believe this was the same system as in A.6 and A.7? Heh, it was. Apparently, it thought this system didn't have unistd.h, and was using it's compatible header. The solution is to edit Makefile and change this line:
AC_FLAGS = -DHAVE_________=1 -DSTDC_HEADERS=1 -DNO_UNION_WAIT=1 -DNEED_MATHERR=1 -Dvfork=fork
To the following:
AC_FLAGS = -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DNO_UNION_WAIT=1 -DNEED_MATHERR=1 -Dvfork=fork
2. Conflicting types for 'waitpid' (Tcl 7.5/SunOS 5.4)
cc -c -O -I./../generic -I. -DNO_STRERROR=1 -DNO_GETWD=1
-DNO_WAIT3=1 -DNO_UNAME=1 -DNO_DIRENT_H=1 -DHAVE_UNISTD_H=1
-DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TIMEZONE_VAR=1
-DUSE_DIRENT2_H=1 -DNO_UNION_WAIT=1 -DNEED_MATHERR=1 -Dvfork=fork -DN
O_GETTOD=1 -DGETTOD_NOT_DECLARED=1 -DTCL_SHLIB_EXT=\".so\"
./../compat/waitpid.c
./../compat/waitpid.c:69: conflicting types for `waitpid'
/usr/include/sys/wait.h:80: previous declaration of `waitpid'
make: *** [waitpid.o] Error 1
Configure apparently couldn't figure this one out, probably because the system it was configured on sucks badly. Change the following line in Makefile:
COMPAT_OBJS = getcwd.o opendir.o strstr.o strtol.o tmpnam.o
waitpid.o strstr.o strtoul.o strtod.o strncasecmp.o
To the following:
COMPAT_OBJS = getcwd.o opendir.o strstr.o strtol.o tmpnam.o
strstr.o strtoul.o strtod.o strncasecmp.o
We are deleting the waitpid.o object file. The problem is that configure didn't detect that waitpid() isn't necessary, so it caused a compatible waitpid() function to be compiled.
3. Undefined symbols in tclUnixChan.o -- and many others (Tcl 7.5/SunOS 5.4)
gcc tclAppInit.o -L/export/home/rewt/tcl7.5/unix -ltcl7.5 -ldl -lm -lc \
-o tclsh
Undefined First Referenced
Symbol In File
socket
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
getpeername
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
recv
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
gethostbyname
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
accept
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
send
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
bind
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
setsockopt
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
getwd
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(getcwd.o)
getservbyname
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclIOSock.o)
gethostbyaddr
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
getsockopt
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclIOSock.o)
inet_addr
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
inet_ntoa
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
getsockname
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
listen
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
connect
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(tclUnixChan.o)
ld: fatal: Symbol referencing errors. No output written to tclsh
make: *** [tclsh] Error 1
Configure couldn't find or detect that the nsl and socket libraries were required, so we have to force it to use them. The solution is to edit Makefile and change the following line:
LIBS = -ldl
To the following:
LIBS = -ldl -lnsl -lsocket
4. Undefined symbol 'getwd' in getcwd.o (Tcl 7.5/SunOS 5.4)
gcc tclAppInit.o -L/export/home/rewt/tcl7.5/unix -ltcl7.5 -ldl -lnsl -lsocket -lm -lc \
-o tclsh
Undefined First Referenced
Symbol In File
getwd
/export/home/rewt/tcl7.5/unix/libtcl7.5.a(getcwd.o)
ld: fatal: Symbol referencing errors. No output written to tclsh
make: *** [tclsh] Error 1
Configure apparently couldn't figure this one out, probably because the system it was configured on sucks badly. Change the following line in Makefile:
COMPAT_OBJS = getcwd.o opendir.o strstr.o strtol.o tmpnam.o
strstr.o strtoul.o strtod.o strncasecmp.o
To:
COMPAT_OBJS = opendir.o strstr.o strtol.o tmpnam.o strstr.o
strtoul.o strtod.o strncasecmp.o
We are deleting the getcwd.o object file. The problem was that configure didn't detect that getcwd() wasn't necessary, so it caused a compatible getcwd() function to be compiled.
5. There's no Tcl installed on your shell
If there's really no Tcl installed on your shell, you can install it temporarily in /tmp or your /home. Get the latest version of Tcl from ftp://ftp.scriptics.com/pub/tcl/ and follow the installation steps in it's README file. After you've installed Tcl, you have to make configure detect Tcl. To achieve this, you have to set either environmental variables:
- csh/tcsh:
setenv TCLLIB '/path/to/tcl/lib'
setenv TCLINC '/path/to/tcl/include'- bash/ksh:
export TCLLIB='/path/to/tcl/lib'
export TCLINC='/path/to/tcl/include'./configure --with-tcllib='/path/to/libtclx.x.so' --with-tclinc='/path/to/tcl.h'
Copyright © 1997 Robey Pointer
Copyright © 1999, 2000, 2001, 2002
Eggheads Development Team