1. xemacs
  2. zenirc


jareth  committed 6d31214

Initial check-in

  • Participants
  • Branches default
  • Tags v1_0

Comments (0)

Files changed (68)


View file
+ZenIRC BUGS list -- Last updated 1996-04-25
+* The server parsing code does strange things when it gets lots of
+  action at the same time.
+  Noah Friedman's comments to this 'bug'; 
+  No, it's probably because the process filter isn't reentrant, and it
+  wasn't intended to be. (It uses a global vector to reduce memory
+  consumption). I've never observed that behavior, and I don't know
+  how it can happen---the only time the server parser can be called
+  recursively is if you are in the debugger or you send back a
+  response through a process that has a pty.  But that's only
+  significant it is gets run from a server hook, since only those get
+  called from within the process filter.
+  You could fix that at the expense of considerably greater consing.
+* ISON is limited to 512 characters, make sure ZenIRC groks that.
+* ZenIRC doesn't parse the following numerics at all, some of them aren't
+  used by either 2.8 nor 2.9. Some other ugly servers use other numerics
+  for other stuff as well.
+	416 ERR_TOOMANYMATCHES, "%s %s :Output too long (try locally)",
+	438 ERR_QUOTAEXCEEDED, "%s :Quota exceeded, try again later.",
+	476 ERR_BADCHANMASK, "%s :Bad Channel Mask",
+	484 ERR_RESTRICTED, ":Your connection is restricted!",
+	304 RPL_TEXT, (char *)NULL,
+	316 RPL_WHOISCHANOP, (char *)NULL,
+	361 RPL_KILLDONE, (char *)NULL,
+	362 RPL_CLOSING, "%s :Closed. Status = %d",
+	363 RPL_CLOSEEND, "%d: Connections Closed",
+	373 RPL_INFOSTART, ":Server INFO",
+	384 RPL_MYPORTIS, "%d :Port to local server is\r\n",
+	207 RPL_TRACESERVICE, "Service %d %s",
+	231 RPL_SERVICEINFO, (char *)NULL,
+	233 RPL_SERVICE, (char *)NULL,
+	234 RPL_SERVLIST, "%s %s %s %d %d :%s",
+	235 RPL_SERVLISTEND, "%s %d :End of service listing",
+	245 RPL_STATSSLINE, "%c %s * %s %d %d", 
+	246 RPL_STATSPING, "%s %d %d %d %d",


View file
+		       Version 2, June 1991
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+			    Preamble
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+  The precise terms and conditions for copying, distribution and
+modification follow.
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+	    How to Apply These Terms to Your New Programs
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    GNU General Public License for more details.
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+Also add information on how to contact you by electronic and paper mail.
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

File ChangeLog

View file
+1998-08-15  SL Baur  <steve@altair.xemacs.org>
+	* Initial integration with XEmacs 21.
+	* Makefile: New file.


View file
+1) Run `./configure' in the same directory as this file.
+2) Check Makefile in the same directory as this file to make sure it
+   says what you want.
+3) Run `make install' in the same directory as this file.
+4) If you don't install ZenIRC in the system directories you need to add
+   an entry to your "load-path", preferably in your ~/.emacs file;
+   (setq load-path (cons 
+                    (expand-file-name "/full/path/to/zenirc/directory") 
+                    load-path))
+5) Read src/zenirc-example.el for instructions on how to set up ZenIRC
+   for daily abuse.
+To try it out--run `emacs', M-x load-library zenirc, M-x zenirc, Waste Time.
+If this doesn't work, e-mail your problems to `zenirc-bug@splode.com'.
+Per Persson <pp@sno.pp.se> 1996-04-26.

File Makefile

View file
+# Makefile for zenirc lisp code
+# This file is part of XEmacs.
+# XEmacs is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+# XEmacs is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+# You should have received a copy of the GNU General Public License
+# along with XEmacs; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+VERSION = 1.02
+MAINTAINER = XEmacs Development Team <xemacs-beta@xemacs.org>
+PACKAGE = zenirc
+PKG_TYPE = regular
+REQUIRES = zenirc
+CATEGORY = comm
+ELCS = src/zenirc-18.elc src/zenirc-8ball.elc src/zenirc-away.elc \
+	src/zenirc-bork.elc src/zenirc-color.elc src/zenirc-command-queue.elc \
+	src/zenirc-complete.elc src/zenirc-ctcp-flood.elc src/zenirc-dcc.elc \
+	src/zenirc-doto.elc src/zenirc-eval.elc src/zenirc-example.elc \
+	src/zenirc-fill.elc src/zenirc-finnish.elc src/zenirc-format.elc \
+	src/zenirc-fortran.elc src/zenirc-french.elc src/zenirc-history.elc \
+	src/zenirc-ignore.elc src/zenirc-iwantop.elc src/zenirc-klingon.elc \
+	src/zenirc-latin.elc src/zenirc-make.elc src/zenirc-meditate.elc \
+	src/zenirc-netsplit.elc src/zenirc-notify.elc src/zenirc-oink.elc \
+	src/zenirc-ojnk.elc src/zenirc-pjg.elc src/zenirc-popup.elc \
+	src/zenirc-prime-p.elc src/zenirc-random-away.elc \
+	src/zenirc-random-nick.elc src/zenirc-signal.elc src/zenirc-stamp.elc \
+	src/zenirc-swedish.elc src/zenirc-trigger.elc \
+	src/zenirc-yow-filter.elc src/zenirc-yow.elc src/zenirc.elc 
+INFO_FILES = doc/$(PACKAGE).info*
+TEXI_FILES = doc/$(PACKAGE).texi
+DATA_FILES = $(wildcard doc/[6FRcistu]*)
+include ../../XEmacs.rules
+GENERATED = src/auto-autoloads.elc
+all:: src/auto-autoloads.el src/_pkg.el $(ELCS) src/auto-autoloads.elc \
+	doc/zenirc.info
+	rm -f $(ELCS) doc/*.info* src/auto-autoloads.el*
+src/auto-autoloads.elc: src/auto-autoloads.el
+src/_pkg.el: _pkg.el
+	-rm -f src/_pkg.el
+	$(RCOPY) _pkg.el src/_pkg.el
+src/auto-autoloads.el: src/_pkg.el
+	$(XEMACS) $(VANILLA) -batch \
+		-eval "(setq autoload-package-name \"$(PACKAGE)\")" \
+		-l autoload -f batch-update-directory src
+	@rm -f src/auto-autoloads.el~
+srckit: srckit-std
+binkit: binkit-sourcedatainfo

File Makefile.in

View file
+# Makefile.in for ZenIRC.    -*- makefile -*-
+# Copyright (C) 1994, 1995 Noah S. Friedman
+# Copyright (C) 1994, 1995, 1996 Per Persson
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#### Start of system configuration section. ####
+srcdir = @srcdir@
+VPATH = $(srcdir)
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+# The directory for object files and libraries of object code.  Do
+# not install executables here; they belong in `libexecdir' instead.
+libdir = $(exec_prefix)/lib
+# The directory for installing the Info files for this package.
+infodir = $(prefix)/info
+elispdir = $(libdir)/emacs/site-lisp
+AUTOCONF       = autoconf
+EMACS          = emacs
+ETAGS          = etags
+MAKEINFO       = makeinfo
+MAKEINFOFLAGS  = --no-split -I. -I$(srcdir)
+BATCHFLAGS     = -batch -q -no-site-file
+MV             = mv
+RM             = rm -f
+CP             = cp
+TAR            = tar
+TEXI2DVI       = texi2dvi
+TEXI2DVIFLAGS  = #-I. -I$(srcdir)
+#### End of system configuration section. ####
+SHELL = /bin/sh
+            Makefile.in configure configure.in install-sh mkinstalldirs
+DOCFILES = FAQ RFC1459 irc-operators tao-of-irc zenirc.ascii \
+           README-OLD ctcp.doc server-list tour.of.irc zenirc.info \
+	   zenirc.texi undernet 666.conspiracy
+SRCFILES = $(ELFILES) ChangeLog zenirc-make.el
+ELFILES = zenirc-18.el zenirc-away.el zenirc-bork.el zenirc-command-queue.el \
+	  zenirc-complete.el zenirc-ctcp-flood.el zenirc-dcc.el \
+	  zenirc-doto.el zenirc-example.el zenirc-fill.el zenirc-finnish.el \
+	  zenirc-format.el zenirc-fortran.el zenirc-french.el \
+	  zenirc-ignore.el zenirc-iwantop.el zenirc-klingon.el \
+	  zenirc-latin.el zenirc-meditate.el zenirc-netsplit.el \
+	  zenirc-notify.el zenirc-oink.el zenirc-ojnk.el zenirc-pjg.el \
+	  zenirc-popup.el zenirc-random-away.el zenirc-random-nick.el \
+	  zenirc-signal.el zenirc-stamp.el zenirc-swedish.el zenirc-yow.el \
+	  zenirc-history.el zenirc-color.el zenirc-8ball.el zenirc-trigger.el \
+	  zenirc-yow-filter.el zenirc.el zenirc-prime-p.el zenirc-eval.el
+         MV='$(MV)' RM='$(RM)' CP='$(CP)' TAR='$(TAR)' \
+         elispdir='$(elispdir)' exec_prefix='$(exec_prefix)' \
+         infodir='$(infodir)' libdir='$(libdir)' prefix='$(prefix)'
+.SUFFIXES: .texi .info
+.SUFFIXES: .texi .dvi
+all: all-zenirc
+all-info: info
+### targets required by GNU Coding standards ###
+Makefile: Makefile.in config.status
+	$(SHELL) ./config.status
+config.status: configure
+	$(SHELL) ./config.status --recheck
+configure: configure.in
+	cd $(srcdir) && $(AUTOCONF)
+	cd $(srcdir)/src && $(ETAGS) *.el
+.PHONY: clean mostlyclean distclean
+	$(RM) src/*.elc
+mostlyclean: clean
+distclean: clean
+	$(RM) Makefile config.status config.log config.cache src/TAGS src/*~ *~
+.PHONY: maintainer-clean maintclean-warning
+maintainer-clean: maintclean-warning distclean
+# Used by maintainer-clean to print a warning before any rm commands are run.
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+realclean: distclean
+	$(RM) src/TAGS
+.PHONY: dist
+	echo zenirc-`sed -e '/^(defconst zenirc-version/!d' \
+                         -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
+                         -e q src/zenirc.el` > .fname
+	$(RM) -r `cat .fname`
+	dst=`cat .fname`; umask 000 && mkdir $$dst $$dst/doc $$dst/src
+	dst=`cat .fname`; for f in $(DISTFILES); do \
+	   ln $$f $$dst/$$f \
+             || { echo copying $$f; cp -p $$f $$dst/$$f ; } \
+	done
+	dst=`cat .fname`/doc; for f in $(DOCFILES); do \
+	   ln doc/$$f $$dst/$$f \
+             || { echo copying doc/$$f; cp -p doc/$$f $$dst/$$f ; } \
+	done
+	dst=`cat .fname`/src; for f in $(SRCFILES); do \
+	   ln src/$$f $$dst/$$f \
+             || { echo copying src/$$f; cp -p src/$$f $$dst/$$f ; } \
+        done
+	$(TAR) --gzip -chvf `cat .fname`.tar.gz `cat .fname`
+	$(RM) -r `cat .fname` .fname
+# Tar up the development sources
+.PHONY: devtar
+	echo zenirc-dev-`sed -e '/^(defconst zenirc-version/!d' \
+                         -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \
+                         -e q src/zenirc.el` > .fname
+	$(RM) -r ../`cat .fname`
+	umask 000 && mkdir ../`cat .fname`
+	@echo Copying tree to ../`cat .fname`
+	$(TAR) -cf - . | (cd ../`cat .fname` && $(TAR) xpvf -)
+	@echo Making tar file `cat .fname`
+	dst=`cat .fname`; cd .. && $(TAR) --gzip -chvf $$dst.tar.gz $$dst
+	dst=`cat .fname`; cd .. && $(RM) -r $$dst
+	mv ../`cat .fname`.tar.gz .
+.PHONY: installdirs uninstall
+install: all installdirs
+	-cd ./src && $(CP) *.elc $(elispdir)
+	# -cd ./doc && $(CP) zenirc.info* $(infodir)
+installdirs: force
+	-$(SHELL) $(srcdir)/mkinstalldirs $(elispdir) #$(infodir)
+uninstall: force
+	-cd $(elispdir) && { $(RM) $(ELFILES);
+			     for f in $(ELFILES); do $(RM) $${f}c; done; }
+	-cd $(infodir) && $(RM) zenirc.info*
+.PHONY: check installcheck force
+	@echo 'Nothing to be done for "check"'
+	@echo 'Nothing to be done for "installcheck"'
+### program-specific building targets ###
+all-zenirc: elisp #info
+	-cd ./src && $(EMACS) $(BATCHFLAGS) -l zenirc-make.el \
+	-f batch-byte-compile $(ELFILES) 
+info: zenirc.info
+zenirc.info: zenirc.texi
+dvi: zenirc.dvi
+zenirc.dvi: zenirc.texi
+# Prevent GNU make v3 from overflowing arg limit on SysV.
+# Makefile.in ends here


View file
+User-visible changes in ZenIRC-2.112:
+* Removed new-lines from all the different language catalouge
+  entries. zenirc-messages adds this if appropriate.
+* zenirc-prime.el, new script. Calculates prime numbers.
+* zenirc-eval.el, new script. Evaluate special commands being sent to
+  you from other people on IRC. USE WITH CAUTION!
+* zenirc-history.el now binds M-p and M-n to previous- and next-line. 
+* zenirc-yow-filter.el, new script. Filter out all the annoying
+  automated yows.
+* zenirc-color.el, new script; colorize your ZenIRC. Should work with
+  Emacs-19, Emacs-20 and XEmacs.
+* zenirc-8ball.el, new script. Ask 8-ball easy yes/no questions.
+* zenirc-trigger.el, new script. Easy creation of triggers to incoming
+  messages.
+* zenirc-ignore.el is more vocal to the user, also added
+  zenirc-ignore-last-privmsg on C-c C-i to ignore the user@host of the
+  last seen PRIVMSG. 
+  It's also much brighter when it comes to regexp handling.
+* zenirc-notify.el, better handling of upper and lower case
+  nicknames. Much better command parser when adding and removing
+  victims in real time.
+* zenirc-random-nick.el, added code do automatically change nickname
+  every x number of seconds.
+* zenirc-fill.el, rerwritten to look more like the 2.100
+  version. Two new ways of filling are added:
+  zenirc-wrap-region-dynamic and -wrap-region-static. Added functions
+  to fill outgoing messages as well as incoming ones. The filling
+  functions now also uses the correct width of the *right* buffer.
+* zenirc-example.el, a lot of new examples.
+* All special modes can now be turned on and off with zenirc-*-mode.
+* zenirc-signal functions are smarter; doesn't beep when it shouldn't
+  anymore. 
+* zenirc-select uses zenirc-server-alist in a much smarter way.
+* zenirc-format-privmsg-or-notice now reckons PRIVMSG's to user@server
+  in a better way.
+* Better handling of nick!user@host table in zenirc-format.el.
+* zenirc-bug, new function.
+* zenirc-update-modeline, a function which updates the modeline
+  depending on which version of Emacs you are using. Relevant functions
+  in ZenIRC now uses this.
+* zenirc-channel-list, a list of currently joined channels. If you
+  leave your zenirc-current-victim it gets set to the previous channel.
+  C-c C-t toggles between all the channels with zenirc-toggle-channel.
+* Added a couple of ircII lookalikes:
+  zenirc-always-show-channelname, new variable. If set to nil, strip
+  out the channelnames from incoming PRIVMSGs and NOTICEs if the
+  channelname is the same as the current-victim. 
+  zenirc-delete-preceding-whitespaces, newvariable. If set to t, strip
+  off leading whitespaces on outgoing messages.
+  zenirc-whowas-on-401, new variable. If set to t, ZenIRC will issue a
+  WHOWAS command if no information is gained by a WHOIS command.
+* More additions to conform with ircd2.9 news.
+As of 1996-04-24, Per has taken over primary maintenance of ZenIRC.
+User-visible changes in ZenIRC 2.101:
+* New function, gnus-bug. Initialize mail to make it easier for user
+  to report a newly found bug.
+* Comments on how to do automatic things while initializing a server
+  connection in zenirc-example.el.
+* Takes care of more new irc2.9 NUMERICS.
+* Responds to CTCP ECHO queries.
+As of 1995-06-28, Per started adding patches to ZenIRC alpha versions.
+* All the notify code is stripped out of zenirc.el into a -notify.el
+  script. The notify code is able to check user@host info on
+  notificated persons. Most of the code is also totally rewritten, 
+  some of the features are much better sanity checking.
+* /server, a new command using zenirc-select, lets you connect to
+  servers in an easy way. /server irc-2.mit.edu 6667 ben
+  The command uses zenirc-server-alist, it also defaults to just about
+  every setting you can think of.
+* zenirc-ignore.el gives you ircII like /ignore and /unignore, an easier
+  way to maintain your zenirc-ignore-list in real time. If you use the
+  commands with regexps, it doesn't do it the ircII way.
+* /resize command in zenirc-fill.el lets you resize the fill values if
+  you change the size of your emacsen.
+  There also a new way of filling things, based on the first word of the
+  string. 
+* The variable zenirc-command-char lets you decide which char you want
+  to use as a command char. "/" is default and you can change it with
+  /commandchar.
+* zenirc-klingon.el and zenirc-bork.el are two new sets of language
+  catalogs.
+* /topic is now able to SHOW the topic as well as set it.
+* The Makefile is now able to make and install ZenIRC, it uses 
+  zenirc-make.el to do so. Needs some improvment though.
+* zenirc-iwantop.el has better documentation for new users.
+* ZenIRC is able to display confirmation messages in the echo area
+  instead of in the process buffer, at least better than it did before.
+* ZenIRC shows idletime in hours:minutes:seconds instead of plain
+  seconds.
+* zenirc-history.el gives you shell-like C-p and C-n on C-cC-p and
+  C-cC-n.
+* ZenIRC groks most of the 2.9 news, as well as some ugly additions to
+  2.8 by digital and comstud. FOLLOW THE RFC OR DIE.
+* There's code in zenirc.el to let you timestamp PRIVMSG/NOTICE, the
+  code makes it really easy to add timestamps for other thingies.
+* Some of the numeric replies parsing are changed to show relevant
+  information. 2.9 changes some of the replies so ZenIRC has to do
+  more sanity checking (this is not totally perfect yet).
+* New funny files in the doc directory.
+As of 1994-10-02, Noah has taken over primary maintenance of zenirc.
+User-visible changes in ZenIRC 2.100:
+* ZenIRC now configures and installs using an Autoconf-generated configure
+  script.  [Makefile is only 4/5 finished 1995-03-27]
+* The version number no longer directly corresponds with the RCS revision
+  number of zenirc.el.  A separate version number is used, which will only
+  change in each release.  As a result, releases won't have arbitrarily
+  incremented version numbers.
+* The new file zenirc-fill.el provides a minor mode which formats privmsgs,
+  notices, and whatever kinds of messages you specify, so that they don't
+  exceed the width of your window.  Selective control is provided since
+  some tables produced by the server will look terrible if anything
+  attempts to fold them.
+* It is now possible to load multiple language catalogs and switch between
+  them using "/language" or `M-x zenirc-lang-set-current-language'.
+* The DCC interface has been largely rewritten.
+  It uses the message catalogs and has more hooks.
+  Another notable change is the fact that subsequent DCC chat requests from
+  the same user are stored and previous requests are discarded.
+  This is in case the port number or IP address have changed in the new
+  request.
+* All the external message catalogs have been renamed by removing the
+  `-mode' in their name.  For example, zenirc-latin-mode.el is now
+  zenirc-latin.el.  They are updated to use the new catalog mechanism.
+* Almost all tables are now implemented as hash tables instead of
+  linear lists.  This should speed up searches.
+* Line input has been completely reimplemented.  It's now safe to send very
+  long lines in private messages and notices; if necessary they are broken
+  into multiple chunks and sent separately.
+  Also, it's easier to send text line-at-a-time by yanking text into the
+  buffer, moving point to the beginning of the new input, and hitting
+  return successively.  No excess newlines are inserted any more, and point
+  is automatically positioned on the next line of unsent input.
+  You can have confirmation of sending go in the echo area instead of
+  inserting lines in the buffer.
+* /kick, /kill, /notice, /privmsg, and /squit commands are now sent to the
+  server in the proper format.
+* zenirc-popup is now a minor mode that can be enabled or disabled with the
+  `zenirc-popup-mode' command.  It should also work in emacs 18 now.
+* The method of display for matching completions can be controlled by the
+  user via the variable `zenirc-complete-display-function'.  The default is
+  to display completions in the echo area if they will fit.  Otherwise, use
+  a portion of the zenirc window.
+  The variable `zenirc-complete-add-final-space-p' controls whether a
+  trailing space is added to unique completions.  The default is to do so
+  since this is consistent with completion in emacs and other GNU programs.
+* You can now use `;' and `:' to send a private message to the last person
+  you sent a private message to, or who sent you a private message.  These
+  keys only have this special meaning if they are the first character of
+  your input.
+  The other commands which do this used to be bound on `C-c s' and `C-c r'.
+  They are now on `C-c C-s' and `C-c C-r', since the former keys are
+  reserved for the user's private use.  These commands always insert the
+  recipient's name at the beginning of your input, rather than wherever
+  point happens to be.
+* The mechanism for specifying how to connect to servers is completely
+  revamped.  The variable `zenirc-server-alist' is used to specify a list
+  of servers (with optional port/password/nick info).  Each one is tried in
+  turn until a successful connection is made.  It is initialized from your
+  IRCSERVER environment variable, which can have the same format as parsed
+  by ircII.
+  You can set the variables `zenirc-server-default', `zenirc-nick-default',
+  `zenirc-port-default', etc.  Or if these are unset, the appropriate
+  environment variables are used.
+* By default, any message with more than 4 CTCP queries is ignored.
+  This is to avoid being disconnected for flooding.
+  To disable this check, remove the appropriate regexp from
+  zenirc-ignorance-list.
+* A new hook, zenirc-message-hook, is called each time a message is
+  inserted in the buffer.  The hook zenirc-send-line-hook is called each
+  time you send a line of text.
+* If a command hook is nil, the command is just sent directly to the server,
+  like /quote.  To keep a command from going to the server at all, put the
+  `ignore' function on the appropriate hook.
+* The new script zenirc-iwantop.el allows you to accept ctcp queries from
+  users and give them channel operator privileges automatically.
+* zenirc-fancy-away.el has been renamed to zenirc-away.el.
+  zenirc-fancy-format.el has been renamed to zenirc-format.el.
+  zenirc-fancy-signal.el has been renamed to zenirc-signal.el.
+* Too many bug fixes and other minor improvments to mention here.
+  See the ChangeLog for details.
+Changes to ZenIRC in version 2.16:
+* Added /oper command.
+Changes to ZenIRC in version 2.15:
+* New scripts: zenirc-popup.el, zenirc-fancy-away.el, and zenirc-yow.el
+  The first pops up a window when signals occur and there is presently no
+  window displaying that buffer.
+  The second insures that you see a user's away message only once, until
+  they change it again.
+  The last implements the command /yow, and also allows you to
+  autoreply to victims with zippy quotes.
+* zenirc-complete.el has been completely rewritten.
+  The new version is better at insidiously caching data, doesn't tamper
+  with the kill-ring, and has fewer bugs.
+* Made most files, including zenirc.el, "provide" themselves.
+  Also made any scripts which refer to symbols declared in zenirc.el
+  require it.
+  This means that in emacs 19, you can use M-x unload-feature to easily
+  undo most of the effects of loading a package, except for top-level
+  forms.
+* zenirc has a new hook, zenirc-mode-hook, that is called at the end of
+  zenirc-mode.
+* Many bugs fixes in process filters to keep point and window display from
+  being munged incorrectly, to keep signal hooks from running when not
+  appropriate (and also so that other hooks can permanently modify the
+  state of buffers if desired).
+* Made signal hooks run last, after buffer update has already occured.
+* Removed recursion from some basic regexp matching routines.
+* Fixed bug in DCC chat code that was occasionally dropping bits of
+  incoming lines.
+* New script, zenirc-random-nick.el, can be used to randomly choose
+  nicknames for IRC if you are feeling deconstructionist.


View file
+ZenIRC-2.1 - Wed Apr 24 20:41:48 MET DST 1996 - Per Persson <pp@sno.pp.se>
+See the BUGS file.
+For missing features, look in the TODO file.
+See the INSTALL file for help on how to compile and install ZenIRC.
+Look at zenirc-example.el for help on how to set up ZenIRC for daily
+usage. If you want more information about ZenIRC internals, read
+doc/README (beware, this file is out of date). In time ZenIRC will
+come with a texinfo manual.
+Found a new bug? Report it with "zenirc-bug" and we'll fix it!
+The most current versions of ZenIRC can always be found at;
+ ftp://ftp.splode.com:/pub/zenirc
+There are three email addresses for ZenIRC you might be interested in;
+ zenirc@splode.com     (List for annoucments and important mails.)
+	send mail to zenirc-request@splode.com to subscribe.
+ zenirc-dev@splode.com (List for ZenIRC developers.)
+	send mail to zenirc-dev-request@splode.com to subscribe.
+ zenirc-bug@splode.com (List for bug reports.)
+	this list is not interesting for you, unless you find a bug.


View file
+ZenIRC TODO list -- Last updated 1998-05-07
+* zenirc.el
+  Strip ^F, ^P, ^U, ^B and ^_ from receieved PRIVMSG, NOTICE and
+  TOPIC. Possibly add functions for this in zenirc.color.el at a later
+  stage.
+* zenirc-fill.el
+  Add optional function to strip off whitespaces at the end of messages.
+* Show Y-class when using /trace command.
+* Define current-time for emacs 18.
+  Define current-time-string in 18 so that it can format arbitrary time values.
+* /ping
+  Instead of trying to send to hack current-time-string, or represent big
+  integers and such, just send the printed representation of a call to
+  current-time.  Then when the reply comes back, read the result and
+  compare the conses.  The way to compute the difference of these times is
+        (defsubst time-difference (a b)
+          (+ (lsh (- (car b) (car a)) 16)
+             (- (car (cdr b)) (car (cdr a)))))
+  This returns the number of seconds elapsed.
+  I would like to remove the kiwi-derived routines anyway.
+* zenirc-notify.el
+  Make it not trigger if you see the person leave or join a channel.
+* zenirc-complete.el
+  Make it add nicks seen based on zenirc-complete-add-list, would be
+  nice to add things on /trace and /userhost.
+* Allow messages from specific users, or different types of messages, to go
+  into different buffers.
+  If a general mechanism is implemented for this, zenirc-dcc.el should use
+  it.
+  It is likely that zenirc-message will have take a new arg, indicating
+  into which buffer the message should go.
+  [1995-03-16 Noah is working on this as part of a general purpose library
+  for emacs.]
+  [1996-07-22 Jason (and Per) is working on another solution to this.]
+* Implement "filters", to distinguish semantics from hooks.
+  Some things, like the zenirc-format-nickuserhost-hook, don't really want
+  to run all the functions; it wants to terminate as soon as a desirable
+  formatting is completed.
+  There are other instances where two hooks do not necessarily want to be
+  run independently.  For instance, zenirc-away.el only wants to display an
+  away message if the current away message for a user is not in its cache
+  already.
+  But in general, hooks want to be run independently of each other since
+  they may perform some completely orthogonal action, so if some other hook
+  wants to abort running the rest of the hook list, the user is screwed.
+  I propose a "filter" mechanism which provides a way to specify ordering,
+  i.e. they should be able to say "I need to be run before foo but after
+  bar" (and this requirement also assumes that bar must necessarily be run
+  after foo).  Packages which use this new mechamism may have to know some
+  details about other packages for this to work, but that's a given.  These
+  filters would be of a different nature from the hooks now being used.
+  I do not have a specific interface in mind yet, but I suspect that
+  filters will generally be run via the hook mechanism, i.e. one will
+  generally do
+   (zenirc-add-hook 'zenirc-foo-hook
+                    (function
+                     (lambda (&rest args)
+                       (apply 'zenirc-run-filter 'zenirc-foo-filter args))))
+* Update non-english message catalogs with new strings added to the client
+  since it they were first created.
+* Write a texinfo manual.
+* Make 'undo' only apply to unsent text.
+* Make recieved text 'read-only'.
+Low priority:
+* /list with regexp's.
+* Finish zenirc-eval.el.
+  This should operate as a CTCP message that reads a sexp and evaluates it.
+  In addition to regular eval, there should be an eval-print or some other
+  macro that takes the result and sends it in the CTCP reply.  Since irc
+  messages are limited to 255 chars or so, the syntactic sugar would be
+  helpful.
+  For the sake of security weenies, it should have an access list, probably
+  a list of regexps of user@host addresses which are allowed to send
+  messages.
+  Perhaps there should also be a "novice" flag which displays the form to
+  be evaluated in the minibuffer (or a display buffer) and query for
+  confirmation before doing anything.
+* Write zenirc-alias.el
+  ircII like alias but not as smart.
+* Write zenirc-save.el
+  This should save some default values to a special zenirc.rc file 
+  which ZenIRC loads during startup.
+* Write zenirc-eliza.el
+  This should implement an eliza bot via doctor.el.
+* Write zenirc-swedish-chef.el
+  This should be a process filter that converts everything people say into
+  swedish-chef speak, and it should have an abbrev table that dynamically
+  converts user input as well.
+* Write zenirc-face.el
+  This should be code for Emacs 19 and XEmacs to support highlighting
+  for ^Vregions^V and the like.
+* Write zenirc-mcelwane.el
+  Upcase words RANDOMLY on INPUT!
+* zenirc supporting bold controls
+  From: Andrew J Cosgriff <ajc@bing.wattle.id.au>
+  any chance of zenirc supporting bold controls and stuff (^B et al.) ?

File configure

View file
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.1 
+# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+# Defaults:
+# Any additions from configure.in:
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+# Initialize some other variables.
+for ac_option
+  # 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
+  -build | --build | --buil | --bui | --bu | --b)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
+    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" ;;
+  -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]
+  --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=PREFIX    install architecture-dependent files in PREFIX
+                          [same as prefix]
+  --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
+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
+--enable and --with options recognized:$ac_help
+    exit 0 ;;
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$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 ;;
+  -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 ;;
+  -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" ;;
+  -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.1"
+    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
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+trap 'rm -fr conftest* confdefs* core $ac_clean_files; exit 1' 1 2 15
+# File descriptor usage:
+# 0 unused; standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 unused; some systems may open it to /dev/tty
+# 4 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 4>/dev/null
+  exec 4>&1
+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.
+for ac_arg
+  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
+# 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.
+# 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
+  ac_srcdir_defaulted=no
+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
+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
+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
+if test -r "$cache_file"; then
+  echo "loading cache $cache_file"
+  . $cache_file
+  echo "creating cache $cache_file"
+  > $cache_file
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} $CFLAGS $CPPFLAGS conftest.$ac_ext -c 1>&5 2>&5'
+ac_link='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext -o conftest $LIBS 1>&5 2>&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
+  ac_n= ac_c='\c' ac_t=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  fi
+if test -z "$ac_aux_dir"; then
+  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&4
+if test -z "$INSTALL"; then
+if eval "test \"`echo '${'ac_cv_path_install'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&4
+    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    case "$ac_dir" in
+    ''|.|/etc|/usr/sbin|/usr/etc|/sbin|/usr/afsws/bin|/usr/ucb) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      for ac_prog in ginstall installbsd scoinst install; do
+        if test -f $ac_dir/$ac_prog; then
+	  if test $ac_prog = install &&
+            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    # OSF/1 installbsd also uses dspmsg, but is usable.
+	    :
+	  else
+	    ac_cv_path_install="$ac_dir/$ac_prog -c"
+	    break 2
+	  fi
+	fi
+      done
+      ;;
+    esac
+  done
+  IFS="$ac_save_ifs"
+  # As a last resort, use the slow shell script.
+  test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"
+  INSTALL="$ac_cv_path_install"
+echo "$ac_t""$INSTALL" 1>&4
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+trap '' 1 2 15
+if test -w $cache_file; then
+echo "updating cache $cache_file"
+cat > $cache_file <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+# Ultrix sh set writes to stderr and can't be redirected directly.
+(set) 2>&1 |
+  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/: \${\1='\2'}/p" \
+  >> $cache_file
+echo "not updating unwritable cache $cache_file"
+trap 'rm -fr conftest* confdefs* core $ac_clean_files; exit 1' 1 2 15
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+cat > conftest.defs <<\EOF
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g
+s%[ 	`~#$^&*(){}\\|;'"<>?]%\\&%g
+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
+rm -f conftest.defs
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+echo creating $CONFIG_STATUS
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# $0 $ac_configure_args
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.1"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+trap 'rm -f Makefile; exit 1' 1 2 15
+# Protect against being on the right side of a sed subst in config.status. 
+sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
+ s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+  # Adjust relative srcdir, etc. for subdirectories.
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/$ac_dir"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+  case "$ac_given_INSTALL" in
+  [/$]*) INSTALL="$ac_given_INSTALL" ;;
+  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  esac
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+  sed -e "$ac_comsub
+" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
+fi; done
+rm -f conftest.subs
+exit 0
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS

File configure.in

View file
+dnl Process this file with autoconf 2.x to produce a configure script.
+dnl $Id$

File doc/666.conspiracy

View file
+------- Start of forwarded message -------
+From: Roger Espel Llima <espel@sky.net>
+Newsgroups: alt.humor.best-of-usenet
+Subject: Re: Irc 666 Conspiracy 
+From: nelson@cs.uwp.edu (Jeremy Nelson)
+Newsgroups: alt.conspiracy, alt.irc, alt.conspiracy.antichrist, 
+ alt.nostradamus, alt.prophecies
+<888@888.888> wrote:
+>Do you have noticed that all ports of Irc servers begin with 666??
+>The most familiar is 6667 but also 6666,6668,6669.
+>Maybe the internet is not so innocent as they want us to believe..
+[Fade to black.... Fade into a darkly lit, yet distinctly reddish
+place.  A reddish-orange, horned man sits at a desk when the phone rings.]
+Bob: "Hello, Internet Porty Authority, wholly owned subsidiary of Hell, Inc.,
+     this is Bob.  How may I help you?"
+Steve: "Hi Bob!  This is Steve down in research and development.  We've just
+       develoepd this KILLER setup where people will waste literally thousands
+       of hours of their life doing nothing more than sitting quietly in front
+       of a terminal while their brains shrivel slowly into raisins."
+Bob: "Hrm... Sounds devilishly clever.  What's the code name for it?"
+Steve: "Well, a beta-tester named Doug suggested "I Repeat Class".  We liked 
+        the way it formed an easy to grasp acronym, something that would 
+        slowly make the poor users rue the day they ever heard it.  But that 
+        name seemed far to obvious about the side effects.  We needed 
+        something with more panache.  After a joint meeting with the 
+        Marketing Department, we came up with "Internet Relay Chat"."
+Bob: "Oh, thats absolutely perfect.  What were the side effects that the
+      Punishment and Testing Department came up with?"
+Steve: "Initial Addiction rates were nearly 90%.  If only we could get that
+        kind of response out of Cocaine or Heroin, we'd be set!  Also listed
+        were a drastic reduction in eating habits, acute lack of sleep, loss
+        of intimacy with loved ones, and an *alarming* increase in the
+        purchase of keyboards. [1]  Also noted was an increase in the 
+        hostility level, with quite a few observances of users screaming
+        at their computer "ILL KILL THE GDMF THAT KICKED ME!"  The most 
+        frightening thing about it was that the testers told their friends
+        about the experience, and now their FRIENDS want to join the testing!
+        We cant shake people away with a stick!
+Bob: "Oh beautiful.  This should set back the course of civilization a good
+      ten years.  Do you have any idea how good its going to be for our 
+      membership drive if this thing spreads like a viral infection?  Within
+      ten years of when you deploy this, we'll have 250,000 people trying to
+      barge on all the time to get their fix!"
+Steve: "Oh, that reminds me of why i called.  We need to get a port number
+        for the service so we can try some live testing out on the internet.
+        Can you spare us any?"
+Bob: "Can I?  *cackle* Ive been saving a *very special* range of ports for
+      just something so evil as this.  Something that isnt so blatantly 
+      obvious, but just sublime enough that the really truly clued in will
+      be able to see the obvious conspiracy behind it.  I can give you the
+      entire range of 6660-6669."
+Steve: "Oh, bonus!  Ill get on it right away!  Thanks again Bob!"
+Bob: "Any time. " <Hangs up> "Oh.. i can see it now.. it will be GLORIOUS!"
+------- End of forwarded message -------

File doc/FAQ

View file
+mrg@mame.mu.oz.au & ben@gnu.ai.mit.edu
+This document answers the following frequently asked questions:
+1   what is irc ?
+2   why does irc suck ?
+3   why should i irc ?
+4   what is netsex ?
+5   should i have netsex ?
+6   how do i get on irc ?
+7   what is a channel operator ?
+8   what is an irc operator ?
+9   what is a major dweeb ?
+10  what is a major fascist ?
+11  what is a bot ?
+12  what is the piglet way ?
+13  what is a penis extension ?
+14  how do i become of the piglet way ?
+15  does linux suck ?
+16  what is irc like ?
+1   what is irc ?
+irc sucks.  irc is reputed to stand for 'internet relay chat',
+but it really means 'i repeat class'.  though some people say
+it means 'Irc Really suCks' [capitals only for emphasis].
+2   why does irc suck ?
+because piker and dl are irc operators.
+3   why should i irc ?
+to be rude to irc operators, particularly dl and piker.
+4   what is netsex ?
+netsex is a myth.  a long time ago an irc operator called
+wumpus (it rhymes with wimp, sorta) made up a story that
+it wandered on to channel -69 to find people engaging in
+what it called 'netsex', but this was never proven.  since
+then people have just been being rude to wumpus for being
+so silly about this 'netsex'
+5   should i have netsex ?
+d'oh!  only stupid people who read this question if they
+knew what netsex is (see number 4).
+6   how do i get on irc ?
+take my advice - don't.
+7   what is a channel operator ?
+a major fascist (see number 10).
+8   what is an irc operator ?
+a major dweeb (see number 9).
+9   what is a major dweeb ?
+an irc operator (see number 8).
+10  what is a major fascist ?
+an channel operator (see number 7).
+11  what is a bot ?
+a penis extension.  only this penis extension doesn't impresss
+the girlies (or the boys, if you/they are so inclinded [*]).
+[*] if you are sexually offended by this, then you lose.
+12  what is the piglet way ?
+13  what is a penis extension ?
+a bot (see number 11).
+14  how do i become of the piglet way ?
+15  does linux suck ?
+yes. [*]
+[*] if you are sexually offended by this, then you lose.
+16  what is irc like ?
+learn by example:
+Adam Pops My Cherry.
+A True Story of the IRC
+by Ben Mesander
+(irc - piglet2)
+So one night, Leftist, and I (piglet2) on IRC decide to see what it's
+like to be hot and willing IRC babes. Leftist becomes Julie, I become
+Samantha, and we cruise the #hotsex channel, looking for a little
+action. Julie plays smart, beautiful and passionate... I play dumb with
+big tits (this is more natural for me). An interesting phenomenon arose
+- while I  originally was the one that attracted our target, Adam, he
+soon liked Julie better than I. Brains over tits, I guess. In addition,
+there is a little dialogue with catfish, a friend of ours who borrowed
+my nick and wreaked havoc on several channels (she was through by the
+time this log was started). I wish I had the presence of mind to log
+the whole thing. Well I didn't. But to give the story so far, Adam has
+revealed that he has slept with seven women, all of them "nearly
+virgins." He's a college senior in Communications with a 2.0 gpa. Then
+I insisted that he tell me a bedtime story. 
+What follows is the logfile. Absolute stark naked reality on IRC. This 
+is Adam's story, the story of the average college student who's looking
+for a net.fuck on irc.
+<Adam> then up the top of your foot
+<Adam> to the inside of your left leg
+<Julie> OOH!
+<Adam> to the knee
+-> *catfish* it is so funny.
+<Adam> up to the thigh
+<Adam> still slowly and softly brushing inside
+=> =Julie= she does? why?
+=Julie= Dunno.
+<Adam> up above your glistening vagina
+<Adam> kissing across your abdomen
+=Julie= *Adam* just remember, julie that I don't lie about this stuff.
+<Adam> and coming back down the other thigh's inside
+<Adam> then down the inside....down the foot...
+<Adam> to the toesies
+<Adam> kissing each and every one of them
+<Adam> down from the big one to the little baby
+=Julie= Adam's got bad sentence structure.  Let's make his life miserable.
+<Adam> then up the outside of your right leg...
+=> =Julie= tell him you think kissing toes is gross.
+<Adam> over your knee
+*Catfish* piggie, you better be saving some of this :)
+<Adam> to the hip
+<Adam> up your chest
+<Adam> to your breast
+<Adam> over it ever so gently
+=Julie= No.  That's in character for you, not me.
+=> =Julie= or maybe that you have a club foot.
+*** Action: Adam pauses for a breather...
+<Samantha> whew!
+<Adam> up to the right side of your neck
+<Adam> then to your right earlobe
+<Adam> tugging at it with my teeth
+<Samantha> mmmm!
+<Adam> then across your neck to your left one (my fave)
+<Samantha> I like that!
+<Adam> then back around to the back of your neck
+<Adam> now, I place my hands firmly but gently on your shoulders
+<Adam> squeezing them a little
+<Adam> your arms are spread out above your head
+=Julie= This guy is probably a 45 second-er.
+<Adam> (like you're doing jumping jacks)
+<Samantha> mmmm.
+<Samantha> and what is julie doing during all this??
+<Julie> Masturbating, actually.
+<Adam> then I run my hands down the sides of your back GENTLY as I SLOWLY AND
++GENTLY go down your spine with my lips
+<Samantha> ooh. I can feel myself stretched out!
+=Julie= Hahaha, he likes me better.
+=> =Julie= you slut. i bet you 10 net.bucks youre wrong.
+<Adam> then I go to your left "cheek"
+<Adam> and go down the back of your leg, outside
+=Julie= *Adam* I have a DEEP voice.  Very sexy voice I'm told.  Women love
+<Samantha> Squeal!
+<Adam> down to the foot
+=Julie= He's offering to do it to me on the phone later.
+=> =Julie= you win. he's not msging me. but I'm loggin this for planet
+=Julie= Tee-hee.
+<Julie> I'm excited.  I'm gonna masturbate with my fingers now.
+<Adam> down the sole of your foot
+<Adam> to the little toesies
+<Adam> kissing every one of them
+=> =Julie= have you ever anally masturbated? tee hee! Lemme find joN's
++phone number, kay?
+=Julie= -> *adam* Yes.  The kbord is getting sticky.
+=Julie= No.  K.
+=> =Julie= (804)977-8802
+<Adam> then back up to the inside of your leg...back of your knee (which you
++would probably kick at this point)
+<Adam> up to your ass
+<Samantha> mmm.
+<Adam> cross over to the other side
+<Adam> then down the leg
+<Adam> to the back of the knee
+<Adam> to the sole of the foot
+<Adam> to the toesies
+*** Adam is adam@rac3.wam.umd.edu (Adam L. Greenberg)
+*** on channels: @#nights 
+*** on irc via server tjeeves.acc.Virginia.EDU (Jefferson Server, UVa)
+<Adam> kissing each one
+<Adam> then back up the outside of the leg...
+=Julie= What should I do with joN's number?
+<Adam> hmm now where?
+=> =Julie= this guy is a foot fetishist.
+<Adam> then back to the right ear
+=> =Julie= say it is your number.
+=Julie= Ok.
+<Adam> I lower myself onto you and pull a blanket over us to keep us warm
+<Adam> As I lie on top of you, nibbling your ear and massaging your shoulders,
++you feel me sticking into your lower back
+=> =Julie= I feel like doing a dieter. "Suddenly, you have become
+<Adam> Finally I cannot resist
+=Julie= HE cannot resist!
+<Adam> You slowly spread your legs and I enter you from behind, lying on top
++of you, spreading your arms out and holding you down to the bed.
+<Samantha> I like that!
+<Samantha> ooh. I'm so wet!
+<Adam> You feel me sliding inside of you and you begin to moan
+=Julie= 3.5 hrs till Calc.