+++ /dev/null
-install-sh
-mkinstalldirs
-missing
-Makefile.in
-Makefile
-aclocal.m4
-configure
-config.log
-config.status
-config.cache
-sample.dot.emacs
+++ /dev/null
--*- mode: text; left-margin: 2; fill-column: 70; -*-
-
- Liece is mainly written by Daiki Ueno <ueno@ueda.info.waseda.ac.jp>.
-
- This package based on Irchat (version 3.01) which has been
- distributed under GPL1 or later.
-
- Original author of Irchat is Tor Lillqvist <tml@hemuli.atk.vtt.fi>
+++ /dev/null
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, 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
-rights.
-
- 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.
-\f
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 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.)
-\f
-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.
-\f
- 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
-circumstances.
-
-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.
-\f
- 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
-Foundation.
-
- 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.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-\f
- Appendix: 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
- 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 this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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.
+++ /dev/null
--*- mode: text; left-margin: 2; fill-column: 70; -*-
-
- This program is in very early developing stage. Please use at your
- own risk.
-
-* Requirements
-
- Liece works under following environment at least.
-
- - Emacs 20.6
- - XEmacs 21.2 with MULE extension
-
- This package uses following external libraries.
-
- - APEL 10.2 or later (stands for - "A Portable Emacs Library")
- ftp://ftp.m17n.org/pub/mule/apel/
- - FLIM 1.12 or later
- ftp://ftp.m17n.org/pub/mule/flim/
-
- If you does not have installed copy of above, please try to specify
- `--enable-apel' option at configure time.
- (After configuration, Liece will use local copy of APEL.)
-
-* Quick installation
-
- (Install APEL, then)
- % ./configure
- % make
- % su
- Password: ultrasecret
- # make install
-
- If you are not able to become super-user, you may specify local
- directory to install.
-
- % ./configure --prefix=~/ --with-lispdir=~/elisp
-
-* Configuration and running
-
-** Setting up your ~/.emacs
-
- If you are using Emacs or Mule, please add directory of APEL and
- Liece to load-path. If you install by default setting you can write
- subdirs.el for example:
-
- ex:
- (normal-top-level-add-to-load-path '("apel" "liece"))
-
- If you are using Emacs 20.3 or XEmacs, prepare `subdirs.el' with
- following contents, Emacs will find and append each substantial
- directory to `load-path' automagically.
-
- ex:
- (normal-top-level-add-subdirs-to-load-path)
-
- If you are using Emacs 19 or earlier version of Emacsen,
- you have to write more complicated path-setting in your `~/.emacs'.
-
- ex:
- (setq load-path
- (append
- (list "/usr/local/lib/mule/site-lisp/apel"
- "/usr/local/lib/mule/site-lisp/liece")
- load-path))
-
- For more details, please read `README' file come along with APEL.
-
- If you have never been using liece and/or its variants,
- add an autoload setting into your `~/.emacs'.
-
- ex:
- (autoload 'liece "liece" nil t)
-
-** Setting up your ~/.liece
-
- If you have never run Liece, and quite unsure to configure startup
- files in Emacs Lisp, please copy `sample.dot.liece' file in `doc'
- directory to `~/.liece'.
-
- Please read ducuments under `doc' directory.
- (`README-styles' to configure window splitting)
-
-* Optional packages
-
- Following packages are optional. If install script of this package
- found them, it would use various functionality provided in them.
-
- custom
- http://www.dina.kvl.dk/~abraham/custom/
-
- X-Face utility
- ftp://ftp.jpl.org/pub/elisp/
-
- bitmap-mule
- ftp://ftp.jpl.org/pub/elisp/bitmap/ (for GNU Emacs only)
+++ /dev/null
-SUBDIRS = . dcc doc etc lisp
-EXTRA_DIST = sample.dot.emacs.in
-DISTCLEANFILES = sample.dot.emacs
-
-CVSROOT = :pserver:anonymous@cvs.m17n.org:/cvs/root
-if USE_TM
-ALL_LOCAL_TARGET = all-tm
-INSTALL_LOCAL_TARGET = install-tm
-CLEAN_LOCAL_TARGET = clean-tm
-else
-ALL_LOCAL_TARGET =
-INSTALL_LOCAL_TARGET =
-CLEAN_LOCAL_TARGET =
-endif
-
-if USE_PACKAGE
-ALL_TM_TARGET = package
-INSTALL_TM_TARGET = install-package
-else
-ALL_TM_TARGET =
-INSTALL_TM_TARGET = install
-endif
-
-CLEAN_TM_TARGET = clean
-
-if USE_CUSTOM_LISPDIR
-INSTALL_TM_MAKEFLAGS = LISPDIR=$(lispdir) VERSION_SPECIFIC_LISPDIR=$(lispdir)
-else
-INSTALL_TM_MAKEFLAGS =
-endif
-
-if USE_CUSTOM_PACKAGEDIR
-INSTALL_TM_MAKEFLAGS = PACKAGEDIR=$(packagedir)
-endif
-
-all-local: $(ALL_LOCAL_TARGET)
-
-sample.dot.emacs: sample.dot.emacs.in
- sed -e 's!@pkgdatadir@!$(pkgdatadir)!g' $< > $@
-
-install-data-local: $(INSTALL_LOCAL_TARGET)
-
-clean-local: $(CLEAN_LOCAL_TARGET)
-
-all-tm:
- @if grep ${CVSROOT} ${HOME}/.cvspass; then :; else \
- echo "${CVSROOT} A" >> ${HOME}/.cvspass; fi; \
- target=`echo $@ | sed s/-recursive//`; \
- if test -d apel; then :; else \
- cvs -d ${CVSROOT} -z3 checkout apel; fi; \
- if test -d flim; then :; else \
- cvs -d ${CVSROOT} -z3 checkout -r flim-1_13 flim; fi; \
- list='apel flim'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- ( cd $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) $(ALL_TM_TARGET) ) ; \
- done
-
-install-tm: all-tm
- @target=`echo $@ | sed s/-recursive//`; \
- list='apel flim'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- ( cd $$subdir && \
- $(MAKE) $(INSTALL_TM_MAKEFLAGS) $(INSTALL_TM_TARGET) ) ; \
- done
-
-clean-tm:
- @target=`echo $@ | sed s/-recursive//`; \
- list='apel flim'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- ( cd $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) $(CLEAN_TM_TARGET) ) ; \
- done
-
+++ /dev/null
--*- mode: text; left-margin: 2; fill-column: 70; -*-
-
-* Directory tree
-
- This package contains following directories:
-
- lisp/ - Emacs Lisp files.
-
- dcc/ - DCC external program source.
-
- doc/ - Documentation, info files, sample configuration, etc.
-
- etc/ - Miscellaneous files which decorate this program.
-
- Please read documentation under `doc' directory.
-
-* Bug reports
-
- If you write bug reports and/or suggestions for improvement,
- please send them to the Liece Mailing List.
- This mailing list is also for other general discussions (about
- future enhancements, customization, etc). To join the Liece ML,
- send an e-mail to:
-
- liece-ctl@unixuser.org
-
- with the message body,
-
- subscribe Your Name
-
-* CVS
-
- Development of Liece uses CVS, Concurrent Versions System.
- Latest developing version is available at CVS.
-
-(0) logging in to anonymous CVS server.
-
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
-
- CVS password: [CR] # NULL string
-
-(1) checkout modules
-
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout liece
-
- Specify revision tag in front of the module name.
-
-(2) bootstrapping
-
- % cd liece
- % ./bootstrap
+++ /dev/null
-AC_DEFUN(AM_PATH_LISPDIR,
- [dnl #
- dnl # Check Emacs
- dnl #
- AC_ARG_WITH(emacs,
- [ --with-emacs=EMACS compile with EMACS [EMACS=emacs, xemacs...]],
- [case "${withval}" in
- yes) EMACS= ;;
- no) AC_MSG_ERROR([emacs is not available]) ;;
- *) EMACS=${withval} ;;
- esac], EMACS=)
- if test "x$EMACS" = "xt" -o "x$EMACS" = x; then
- AC_PATH_PROGS(EMACS, emacs xemacs mule, no)
- else
- AC_MSG_CHECKING(for emacs)
- AC_MSG_RESULT($EMACS)
- fi
- dnl #
- dnl # Check Emacs directories
- dnl #
- AC_ARG_WITH(emacsdir,
- [ --with-emacsdir=EDIR Emacs program/data files in EDIR [guessed]],
- [case "${withval}" in
- yes) emacsdir=NONE ;;
- no) AC_MSG_ERROR(emacsdir is not available) ;;
- *) emacsdir=${withval} ;;
- esac], emacsdir=NONE)
- AC_MSG_CHECKING([where emacs files are in])
- AC_MSG_RESULT($emacsdir)
- AC_SUBST(emacsdir)
- dnl #
- dnl # Check Emacs site-lisp directories
- dnl #
- ac_cv_lispdir=no
- AC_ARG_WITH(lispdir,
- [ --with-lispdir=DIR emacs lisp files in DIR [EDIR/site-lisp]],
- [case "${withval}" in
- yes) lispdir=NONE ;;
- no) AC_MSG_ERROR(lispdir is not available) ;;
- *) lispdir=${withval} ; ac_cv_lispdir=yes ;;
- esac], lispdir=NONE)
- AC_MSG_CHECKING([where .elc files should go])
- AC_MSG_RESULT($lispdir)
- AC_SUBST(lispdir)
- AM_CONDITIONAL(USE_CUSTOM_LISPDIR, test x$ac_cv_lispdir = xyes)
- dnl #
- dnl # Check whether install as XEmacs package
- dnl #
- AC_ARG_ENABLE(package,
- [ --enable-package install as XEmacs package [default=no]],,
- enable_package=no)
- AC_MSG_CHECKING([whether install as XEmacs package])
- if test "x$enable_package" = "xyes"; then
- AC_MSG_RESULT(yes)
- EMACS=xemacs
- dnl #
- dnl # Check XEmacs package directories
- dnl #
- ac_cv_packagedir=no
- AC_ARG_WITH(packagedir,
- [ --with-packagedir=DIR XEmacs package files in DIR [EDIR/packages]],
- [case "${withval}" in
- yes) packagedir=NONE ;;
- no) AC_MSG_ERROR(packagedir is not available) ;;
- *) packagedir=${withval} ; ac_cv_packagedir=yes ;;
- esac], packagedir=NONE)
- AC_MSG_CHECKING([where package files should go])
- if test "x$packagedir" = "xNONE"; then
- eval `$EMACS -batch -q -no-site-file -l ./lisp/liece-make.el \
- -f config-liece-package-directory`
- packagedir=$PACKAGEDIR
- fi
- AC_MSG_RESULT($packagedir)
- AC_SUBST(packagedir)
- pkgdatadir=${packagedir}/etc/${PACKAGE}
- infodir=${packagedir}/info
- AM_CONDITIONAL(USE_CUSTOM_PACKAGEDIR, test x$ac_cv_packagedir = xyes)
- else
- AC_MSG_RESULT(no)
- fi
- AC_SUBST(icondir)
- AC_SUBST(catalogdir)
- AC_SUBST(styledir)
-
- AM_CONDITIONAL(USE_PACKAGE, test x$enable_package = xyes)])
+++ /dev/null
-#! /bin/sh
-
-aclocal
-automake --gnu --add-missing
-autoconf
-
-exit 0
+++ /dev/null
-AC_INIT(lisp/liece.el)
-AM_INIT_AUTOMAKE(liece, 1.4.4)
-
-AM_PATH_LISPDIR
-
-AC_PROG_CC
-AC_ISC_POSIX
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-AC_PROG_RANLIB
-
-AC_CHECK_HEADERS(sys/select.h libgen.h socks.h netinet6/in6.h)
-
-AC_CHECK_LIB(nsl, gethostbyname)
-AC_CHECK_LIB(socket, socket)
-
-AC_CHECK_FUNCS(strtoul memmove basename getaddrinfo)
-
-AC_CHECK_TYPE(fd_set, int)
-
-dnl checking if the system supports ipv6 address space or not
-AC_CACHE_CHECK([for struct in6_addr], ac_cv_struct_in6_addr,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet6/in6.h>], [struct in6_addr v6; v6.s6_addr32[3];],
-ac_cv_struct_in6_addr=yes, ac_cv_struct_in6_addr=no)])
-test "x$ac_cv_struct_in6_addr" = "xyes" && AC_DEFINE(HAVE_IN6_ADDR)
-
-dnl checking if the system supports tcp over ipv6 support or not
-AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_struct_sockaddr_in6,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet6/in6.h>], [struct sockaddr_in6 v6; v6.sin6_addr;],
-ac_cv_struct_sockaddr_in6=yes, ac_cv_struct_sockaddr_in6=no)])
-test "x$ac_cv_struct_sockaddr_in6" = "xyes" && AC_DEFINE(HAVE_SOCKADDR_IN6)
-
-# Check compile with IPv6 support
-AC_MSG_CHECKING(whether we compile with IPv6)
-AC_ARG_ENABLE(ipv6, \
- [ --enable-ipv6 compile with IPv6 [default=no]],, \
- enable_ipv6=no)
-test "x$enable_ipv6" = "xyes" && AC_DEFINE(INET6)
-AC_MSG_RESULT($enable_ipv6)
-
-# Check whether to retrieve APEL/FLIM distribution.
-AC_MSG_CHECKING(whether we retrieve APEL/FLIM distribution via CVS)
-AC_ARG_ENABLE(tm, \
- [ --enable-tm retrieve APEL/FLIM distribution via CVS [default=no]],, \
- enable_tm=no)
-if test "x$enable_tm" = "xyes"; then
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-AM_CONDITIONAL(USE_TM, test x$enable_tm = xyes)
-
-AC_OUTPUT(Makefile \
-lisp/Makefile \
-dcc/Makefile \
-doc/Makefile \
-etc/Makefile)
+++ /dev/null
-;;; plum-support.el --- pirc support for plum
-;; Copyright (C) 1999 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-;; See file irchat-copyright.el for original change log and copyright info.
-
-;; Author: Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-;; Created: 1999-05-06
-;; Revised: 1999-05-06
-;; Keywords: IRC, irchat, pirc
-
-;; This file is not part of any package.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'custom)
-
-(defcustom plum-recent-header "plum"
- "String added in front of each recent logged message"
- :type 'string
- :group 'irchat-support)
-
-(defconst plum-recent-time-header-regexp "[0-9][0-9]:[0-9][0-9]"
- "Regexp for timestamp preceding in message body")
-
-(defconst plum-recent-privmsg-header-regexp
- "[<>(=]\\([^ <>)=]*\\)[<>)=]"
- "Regexp for whole message line (privmsg)")
-
-(defconst plum-recent-join-header-regexp
- "\\+ [@+]?[^ ]* [^ ]* to \\([^ ]*\\)"
- "Regexp for whole message line (join)")
-
-(defconst plum-recent-part-header-regexp
- "- [^ ]* from \\([^ ]*\\)"
- "Regexp for whole message line (part)")
-
-(defconst plum-recent-kick-header-regexp
- "- [^ ]* by [^ ]* from \\([^ ]*\\) .*"
- "Regexp for whole message line (kick)")
-
-(defconst plum-recent-mode-header-regexp
- "Mode by [^:]*: \\([^ ]*\\) .*"
- "Regexp for whole message line (mode)")
-
-(defconst plum-recent-topic-header-regexp
- "Topic of channel \\([^ ]*\\) by [^:]*: .*"
- "Regexp for whole message line (nick)")
-
-(defconst plum-recent-message-header-regexp
- (concat "^\\(" plum-recent-time-header-regexp "\\)? *"
- plum-recent-privmsg-header-regexp))
-
-(defconst plum-recent-channel-header-regexp
- (concat "^\\(" plum-recent-time-header-regexp "\\)? *"
- (mapconcat (function identity)
- (list plum-recent-join-header-regexp
- plum-recent-part-header-regexp
- plum-recent-kick-header-regexp
- plum-recent-mode-header-regexp
- plum-recent-topic-header-regexp)
- "\\|")))
-
-(defconst plum-recent-generic-header-regexp
- (concat "^\\(" plum-recent-time-header-regexp "\\)? *"))
-
-(defvar plum-recent-log-buffer " *plum recent log")
-
-(defun plum-parse-recent-after ()
- "Parse text after point as recent log message, then returns components"
- (save-excursion
- (let (time lparen rparen chnl nick)
- (cond
- ((looking-at plum-recent-message-header-regexp)
- (setq time (match-string 1))
- (goto-char (match-beginning 2))
- (setq lparen (char-before))
- (goto-char (match-end 2))
- (setq rparen (char-after))
- (skip-chars-backward "^: ")
- (skip-chars-forward "=")
- (setq nick (buffer-substring (point) (match-end 2)))
- (backward-char)
- (setq chnl (buffer-substring (match-beginning 2) (point)))
- (goto-char (match-end 0))
- (forward-char)
- (list 'message time lparen rparen chnl nick
- (buffer-substring (point) (line-end-position))))
- ((looking-at plum-recent-channel-header-regexp)
- (setq time (match-string 1)
- chnl (match-string 2))
- (goto-char (match-end 1))
- (forward-char)
- (list 'channel time chnl
- (buffer-substring (point) (line-end-position))))
- ((looking-at plum-recent-generic-header-regexp)
- (setq time (match-string 1))
- (goto-char (match-end 0))
- (list 'generic time (buffer-substring (point) (line-end-position)))))
- )))
-
-(add-hook 'irchat-notice-hook 'plum-recent-add)
-(add-hook 'irchat-002-hook
- (function
- (lambda (header rest)
- (remove-hook 'irchat-notice-hook 'plum-recent-add) )))
-
-(defun plum-recent-add (header rest)
- "Add recent log line into `plum-recent-log-buffer'."
- (let (fun from to body component type)
- (if header
- nil
- (and rest (string-match "^[^ ]* +:\\(.*\\)" rest)
- (with-temp-buffer
- (insert (match-string 1 rest) ?\n)
- (goto-char (point-min))
- (setq component (plum-parse-recent-after)
- type (pop component))
- (cond
- ((eq type 'message)
- (setq from (nth 4 component)
- to (cond
- ((eq (nth 1 component) ?=)
- (irchat-current-nickname))
- ((eq (nth 1 component) ?<)
- (irchat-channel-real (nth 3 component))))
- body (concat "(" plum-recent-header " " (car component)
- ") " (nth 5 component))
- fun (llhandler-lookup "irchat-handle-privmsg-msg"))
- (funcall fun from (concat to " :" body))
- t)
- (t nil)))))))
-
-
-(provide 'plum-support)
-
-;;; plum-support.el ends here.
\ No newline at end of file
+++ /dev/null
-Makefile.in
-Makefile
-ldcc
-ltcp
-.deps
+++ /dev/null
-## Process this file with automake to produce Makefile.in
-
-DEFS = -I$(srcdir) -I$(top_srcdir) $(CFLAGS) @DEFS@
-LIBS = -L. -ldcc @LIBS@
-CLEANFILES = ldcc ltcp
-
-noinst_LIBRARIES = libdcc.a
-bin_PROGRAMS = ldcc ltcp
-
-libdcc_a_SOURCES = getopt1.c getopt.c getaddrinfo.c
-noinst_HEADERS = getopt.h getaddrinfo.h
-
-ltcp_SOURCES = tcp.c
-ldcc_SOURCES = dcc.c
-
-#MLHDRS = naddr.mli
-#MLSRCS = naddr.ml dcc.ml
-#MLOBJS = $(MLSRCS:.ml=.cmo)
-#MLINTF = $(MLHDRS:.mli=.cmi)
-#EXTRA_ldcc_SOURCES = $(MLHDRS) $(MLSRCS)
-#ldcc_SOURCES = $(MLSRCS)
-#ldcc_COMPILE = @OCAMLC@
-#ldcc_LINK = $(OCAMLC) -custom unix.cma nums.cma str.cma
-#ldcc_LDFLAGS = -cclib -lunix -cclib -lnums -cclib -lstr -o ldcc
-
-#SUFFIXES = .ml .mli .cmo .cmi
-
-#$(MLOBJS): $(MLINTF)
-
-#.mli.cmi:
-# $(OCAMLC) -c $<
-
-#.ml.cmo:
-# $(OCAMLC) -c $<
+++ /dev/null
-/* This file is part of Liece.
- Copyright (C) 1998 Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-
- Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
- Created: 1998-09-28
- Revised: 1999-01-28
- Keywords: IRC, liece, DCC
-
- This file is part of Liece.
-
- 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
- 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 GNU Emacs; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-*/
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <netinet/in.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-#ifndef MAXHOSTNAMELEN
-# define MAXHOSTNAMELEN 31
-#endif
-
-#ifdef HAVE_SYS_SELECT_H
-# include <sys/select.h>
-#endif
-
-#ifdef HAVE_MEMMOVE
-# ifdef HAVE_LIBGEN_H
-# include <libgen.h>
-# ifdef basename
-# undef basename
-# endif
-# endif
-# include <string.h>
-#else
-# define memmove(x,y,z) bcopy((y), (x), (z))
-#endif
-
-#ifndef HAVE_BASENAME
-# define basename(path) (rindex((path), '/') + 1)
-#endif
-
-static void usage();
-static int prepare_listen_port();
-static int prepare_connect_port();
-
-static int receive_file();
-static int send_file();
-static int select_loop();
-static int chat_listen();
-static int chat_connect();
-
-static u_long primary_address_of();
-static u_long extract_addr_of_string();
-static u_long get_address_externally();
-
-static char *progname;
-
-void version () {
- printf("%s (Liece) 1.4.0\n"
- "Copyright (C) 1998, 1999 Daiki Ueno\n"
- "This is free software; see the source for copying conditions. There is NO\n"
- "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
- progname);
-}
-
-void usage() {
- printf("Usage: %s [global-options] command [command-options-and-arguments]\n"
- "where global-options are -v, -h, etc.\n"
- "where command is one of send, receive, chat, resolve.\n"
- "where command-options-and-arguments depend on the specific command.\n\n"
- "send <host> <port> <filename>\n"
- "receive <host> <port> <size> <filename>\n"
- "chat listen <port>\n"
- "chat connect <host> <port>\n"
- "resolve [hosts ...]\n",
- progname);
-}
-
-int prepare_listen_port (int ip_port) {
- int sock, tries;
- int opt = 1;
- static struct sockaddr_in server;
-
-
- if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- perror("opening stream socket");
- exit(1);
- }
-
-#ifdef SO_REUSEADDR
- if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
- (char *)&opt, sizeof (opt)) < 0) {
- perror ("setsockopt SO_REUSEADDR");
- }
-#endif
-
- /* Bind a port to listen for new connections */
-
- server.sin_family = AF_INET;
- server.sin_addr.s_addr = INADDR_ANY;
- server.sin_port = htons (ip_port);
- for (tries = 0; tries < 10; tries++) {
- if (bind (sock, (struct sockaddr *) &server, sizeof (server))) {
- if (tries >= 9) {
- perror ("binding stream socket");
- exit (1);
- }
- perror ("binding stream socket. retry in 20 seconds");
- sleep (20); /* wait 20 seconds and try again */
- } else
- break;
- }
- listen (sock, 64);
- return (sock);
-}
-
-u_long get_address_externally(char *ircserver) {
- int i, len, dummy;
- u_long addr;
- struct hostent *hp;
- struct sockaddr_in server, client;
-
- addr = 0xc6290004; /* dummy addr --- rootA */
- if (ircserver && (hp = gethostbyname(ircserver)) != NULL) {
- addr = ntohl(((struct in_addr *)hp->h_addr_list[0])->s_addr);
- }
- if ((dummy = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- perror("opening stream socket");
- return -1;
- }
- server.sin_family = AF_INET;
- server.sin_addr.s_addr = htonl(addr);
- server.sin_port = htons(7); /* dummy port --- echo */
- for (i = 0; i < 8; i++) {
- server.sin_zero[i] = 0;
- }
- if (connect(dummy, (struct sockaddr *)&server, sizeof(server)) < 0) {
- perror ("connecting remote socket");
- return -1;
- }
- len = sizeof(client);
- if (getsockname(dummy, (struct sockaddr *)&client, &len) < 0)
- return -1;
- close(dummy);
- return ntohl(client.sin_addr.s_addr);
-}
-
-\f
-/*
- * send_file(int port, char *ifile)
- * listens to connections to port, and when connection established
- * sends ifile to that socket
- */
-int send_file (int port, char *ifile) {
- int sock, ifd, ofd, len;
- u_long addr, bytessent = 0;
- char buf[ BUFSIZ * 8 ];
- fd_set readfds, writefds, fdset;
- struct stat statbuf;
- char namebuf[ MAXHOSTNAMELEN ];
- struct hostent *hp;
- struct sockaddr_in sin;
-
- if ((ifd = open (ifile, O_RDONLY)) < 0) {
- /* error in opening file to send */
- close(ofd);
- return 1;
- }
-
- gethostname(namebuf, sizeof (namebuf));
- fstat (ifd, &statbuf);
-
- sock = prepare_listen_port(port);
- len = sizeof (struct sockaddr_in);
- if (getsockname(sock, (struct sockaddr *)&sin, &len) == 0)
- port = ntohs(sin.sin_port);
-
- if ((addr = get_address_externally (NULL)) < 0) {
- gethostname(namebuf, sizeof (namebuf));
- if (hp = gethostbyname(namebuf))
- addr = ((struct in_addr *) (hp->h_addr_list)[0])->s_addr;
- else
- return 2;
- }
-
- printf ("DCC send %s %d %u %d\n", ifile, port, addr, statbuf.st_size);
-
- ofd = accept(sock, (struct sockaddr *) 0, (int *) 0);
-
- while ((len = read (ifd, buf, sizeof (buf))) > 0) {
- write (ofd, buf, len);
- bytessent += len;
- while ((len = read (ofd, buf, sizeof (u_long))) &&
- ntohl (*(u_long *) buf) != bytessent);
- }
- close (ofd);
- close (ifd);
- printf ("*** DCC file %s sent\n", ifile);
-
- return 0;
-}
-
-/*
- * receive_file(u_long host, int port, char *ifile)
- * connects to (host,port) and reads everything send from there
- * for every packet received gives back how much actually got
- * puts everything in ifile
- */
-int receive_file (u_long host, int port, int size, char *ifile) {
- int sock, ifd, ofd, len, bytesreceived = 0, toread, prev = 0;
- char buf[ BUFSIZ * 8 ];
- fd_set readfds, writefds, fdset;
- u_long netsize;
-
- if ((ofd = open(ifile, O_WRONLY|O_CREAT|O_TRUNC, 0600)) < 0) {
- fprintf(stderr, "open: opening file: %s\n", ifile);
- return 1;
- }
- ifd = prepare_connect_port (host, port);
- if ((toread = sizeof (buf)) > size)
- toread = size;
- while (bytesreceived < size && (len = read (ifd, buf, toread)) > 0) {
- write (ofd, buf, len);
- bytesreceived += len;
- netsize = htonl (bytesreceived);
- lseek (ifd, 0, 2);
- write (ifd, &netsize, 4);
- lseek (ifd, 0, 2);
- if (toread > size - bytesreceived)
- toread = size - bytesreceived;
- if (bytesreceived - prev > size / 5) {
- printf ("DCC %s %d%% (%d/%d bytes) received\n", ifile,
- 100 * bytesreceived / size, bytesreceived, size);
- prev = bytesreceived;
- }
- }
- printf ("*** DCC file %s received\n", ifile);
- close (ifd);
- close (ofd);
-
- return 0;
-}
-
-/*
- * select_loop(int sfd)
- * listens fd given, reads stdin and sends it to socket
- * anything read from socket is send to stdout
- */
-int select_loop (int sfd) {
- int ofd, len, bytesreceived = 0;
- char buf[ BUFSIZ * 8 ];
- fd_set readfds, writefds, fdset;
-
- for (;;) {
- FD_ZERO (&readfds);
- FD_SET (sfd, &readfds);
- FD_SET (0, &readfds);
- if (select (32, &readfds, 0, 0, 0) < 0) {
- perror ("select");
- close (sfd);
- return 1;
- }
-
- if (FD_ISSET (sfd, &readfds)) {
- if ((len = read(sfd, buf, sizeof (buf))) == 0) {
- close (sfd);
- return 0;
- }
- write (1, buf, len);
- FD_CLR (sfd, &readfds);
- }
- if (FD_ISSET (0, &readfds)) {
- if ((len = read (0, buf, sizeof (buf))) == 0) {
- close (sfd);
- return 0;
- }
- write(sfd, buf, len);
- FD_CLR (ofd, &readfds);
- }
- }
-}
-
-int prepare_connect_port (u_long host, int port) {
- int sock;
- static struct hostent *hp;
- static struct sockaddr_in server;
-
- sock = socket (AF_INET, SOCK_STREAM, 0);
- if (sock < 0) {
- perror ("opening stream socket");
- exit (1);
- }
- server.sin_family = AF_INET;
-
- server.sin_addr.s_addr = ntohl (host);
- server.sin_port = htons (port);
-
- if (connect(sock, (struct sockaddr *) &server, sizeof (server)) < 0) {
- perror ("connecting remote socket");
- return 0;
- }
-
- return sock;
-}
-
-u_long extract_addr_of_string (char *str) {
- u_long result = 0;
-
-#ifndef HAVE_STRTOUL
- while (*str++)
- result = result * 10 + *str - '0';
-#else /* !HAVE_STRTOUL */
- result = strtoul(str, NULL, 10);
-#endif /* HAVE_STRTOUL */
- return result;
-}
-
-u_long primary_address_of (char *host) {
- struct hostent *hp;
- u_long addr;
-
- if ((hp = gethostbyname(host)) == NULL)
- addr = inet_addr(host);
- else
- memmove(&addr, hp->h_addr_list[ 0 ], 4);
-
- return ntohl(addr);
-}
-
-int chat_listen(int port) {
- struct sockaddr_in sin;
- struct hostent *hp;
- u_long addr;
- int sock, len;
- char namebuf[ MAXHOSTNAMELEN ];
-
- sock = prepare_listen_port (port);
-
- len = sizeof (struct sockaddr_in);
- if (getsockname(sock, (struct sockaddr *)&sin, &len) == 0)
- port = ntohs(sin.sin_port);
-
- if ((addr = get_address_externally (NULL)) < 0) {
- gethostname(namebuf, sizeof (namebuf));
- if (hp = gethostbyname(namebuf))
- addr = ((struct in_addr *) (hp->h_addr_list)[0])->s_addr;
- else
- return 2;
- }
-
- printf("DCC chat %u %d\n", addr, port);
-
- if ((sock = accept(sock, (struct sockaddr *) 0, (int *) 0)) > -1) {
- printf("DCC chat established\n");
- return select_loop(sock);
- }
-
- return 1;
-}
-
-int chat_connect(u_long host, int port) {
- int sock;
-
- if ((sock = prepare_connect_port(host, port)) > -1) {
- printf("DCC chat established\n");
- return select_loop(sock);
- }
-
- return 1;
-}
-
-\f
-int main (int argc, char **argv) {
- char *host = "localhost";
- char *action;
- int c, status = 0;
-
- progname = (char *)basename(argv[ 0 ]);
-
- while (1) {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] = {
- {"version", 0, 0, 'v'},
- {"help", 0, 0, 'h'},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "vh", long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'v':
- version();
- exit(1);
- break;
- case 'h':
- usage();
- exit(1);
- break;
- default:
- break;
- }
- }
-
- if (argc > 1) {
- action = argv[ 1 ];
- } else {
- usage();
- exit(1);
- }
-
- if (!strcmp(action, "resolve")) {
- if (argc < 3) {
- usage();
- exit(1);
- } else {
- u_long i, addr;
- for (i = 2; i < argc; i++) {
- addr = primary_address_of(argv[i]);
- if (addr != -1)
- printf("%u\n", addr);
- else
- printf("0\n");
- }
- status = 0;
- }
- }
-
- if (!strcmp(action, "send")) {
- if (argc != 4) {
- usage();
- exit(1);
- }
- status = send_file (atoi(argv[ 2 ]), argv[ 3 ]);
- } else if (!strcmp(action, "receive")) {
- if (argc != 6) {
- usage();
- exit(1);
- }
- status =
- receive_file (extract_addr_of_string(argv[ 2 ]),
- atoi(argv[ 3 ]), atoi(argv[ 4 ]), argv[ 5 ]);
- } else if (!strcmp(action, "chat")) {
- if (argc > 3) {
- if (!strcmp(argv[ 2 ], "listen")) {
- if (argc != 4) {
- usage();
- exit(1);
- }
- status = chat_listen(atoi(argv[ 3 ]));
- } else if (!strcmp(argv[ 2 ], "connect")) {
- if (argc != 5) {
- usage();
- exit(1);
- }
- status = chat_connect(extract_addr_of_string(argv[ 3 ]),
- atoi(argv[ 4 ]));
- } else {
- usage();
- exit(1);
- }
- }
- } else {
- usage();
- exit(1);
- }
-
- return status;
-}
-
-/*
- * Local variables:
- * compile-command: "gcc -DHAVE_STRTOUL -Wall -O6 -o dcc dcc.c"
- * c-indent-level: 2
- * c-basic-offset: 2
- * tab-width: 2
- * End:
- */
+++ /dev/null
-(* DCC module.
-
-This file is part of Liece.
-
-Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-Created: 1998-09-28
-Revised: 1999-01-28
-Keywords: IRC, liece, DCC
-
-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
-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 GNU Emacs; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. *)
-
-open Unix
-
-let usage prefix progname =
- String.concat "\n"
- (List.map (fun x -> (Printf.sprintf "%s: %s %s" prefix progname x))
- [ "send <port> <filename>";
- "receive <host> <port> <size> <filename>";
- "chat listen <port>";
- "chat connect <host> <port>" ])
-
-let buff = String.create 1024
-
-let print_exc exc =
- match exc with
- Unix_error (err, fun_name, arg) ->
- prerr_string "\"";
- prerr_string fun_name;
- prerr_string "\" failed";
- if String.length arg > 0 then
- begin
- prerr_string " on \""; prerr_string arg; prerr_string "\""; ()
- end;
- prerr_string ": ";
- prerr_endline (error_message err);
- flush Pervasives.stderr; ()
- | _ ->
- try Printexc.print raise exc with
- _ -> ()
-
-let accept_connection f s =
- let (t, addr) = accept s in
- f t; close t; ()
-
-let write_file filename size t =
- let fd =
- try openfile filename [ O_RDONLY ] 0 with
- _ -> Printf.eprintf "Open failed.\n"; flush Pervasives.stderr; exit 1
- in
- let (len, rlen) = ref 0, ref 0 in
- while len := read fd buff 0 (String.length buff); !len <> 0
- do
- let rec loop i =
- let j = i + write t buff i (!len - i) in
- if j == !len then () else loop j
- in
- loop 0;
- flush (out_channel_of_descr t);
- rlen := !rlen + !len;
- Printf.printf "DCC %s %d%% (%d/%d bytes) sent.\n"
- filename (100 * !rlen / size) !rlen size;
- flush Pervasives.stdout
- done;
- close fd; close t; ()
-
-let send_file port filename =
- try
- let host = gethostbyname (gethostname ()) in
- let haddr = string_of_inet_addr host.h_addr_list.(0) in
- let s = socket PF_INET SOCK_STREAM 0 in
- setsockopt s SO_REUSEADDR true;
- bind s (ADDR_INET (inet_addr_any, port));
- let port =
- match (getsockname s) with
- ADDR_INET (addr, port) -> port
- | _ -> port
- in
- listen s 1;
- let fd =
- try openfile filename [ O_RDONLY ] 0 with
- _ -> Printf.eprintf "Open failed.\n"; flush Pervasives.stderr; exit 1
- in
- let size = (fstat fd).st_size in
- close fd;
- Printf.printf "DCC send %s %d %s %d\n"
- (Filename.basename filename) port (Naddr.encode haddr) size;
- flush Pervasives.stdout;
- accept_connection (fun t -> write_file filename size t) s;
- with
- exc -> print_exc exc
-
-let read_file filename size t =
- let fd =
- try openfile filename [ O_WRONLY; O_CREAT ] 0o600 with
- _ -> Printf.eprintf "Open failed.\n"; flush Pervasives.stderr; exit 1
- in
- let (len, rlen) = ref 0, ref 0 in
- while len := read t buff 0 (String.length buff); !len <> 0
- do
- let _ = write fd buff 0 !len in
- flush (out_channel_of_descr fd);
- rlen := !rlen + !len;
- Printf.printf "DCC %s %d%% (%d/%d bytes) received.\n"
- filename (100 * !rlen / size) !rlen size;
- flush Pervasives.stdout
- done;
- close fd; close t
-
-let receive_file host port size filename =
- let s = socket PF_INET SOCK_STREAM 0 in
- connect s (ADDR_INET (inet_addr_of_string (Naddr.decode host), port));
- read_file filename size s; ()
-
-let chat_loop s =
- let sel = ref [s; stdin] in
- while !sel <> [] do
- let (l, _, _) =
- try
- select !sel [] [] (-1.0)
- with
- _ -> exit 0
- in
- List.iter
- (fun x ->
- let (rfd, wfd) =
- if x == s then
- (s, stdout)
- else if x == stdin then
- (stdin, s)
- else
- (stdin, stdout)
- in
- let len = ref 0
- in
- len := read rfd buff 0 (String.length buff);
- if !len == 0 then
- begin try shutdown wfd SHUTDOWN_SEND; () with
- _ -> exit 0
- end
- else
- begin
- let rec loop i =
- let j = i + write wfd buff i (!len - i) in
- if j == !len then () else loop j
- in
- loop 0;
- flush (out_channel_of_descr wfd)
- end;
- ())
- l
- done
-
-let chat_listen port =
- let host = gethostbyname (gethostname ()) in
- let haddr = string_of_inet_addr host.h_addr_list.(0) in
- let s = socket PF_INET SOCK_STREAM 0 in
- setsockopt s SO_REUSEADDR true;
- bind s (ADDR_INET (inet_addr_any, port));
- let port =
- match (getsockname s) with
- ADDR_INET (addr, port) -> port
- | _ -> port
- in
- listen s 1;
- Printf.printf "DCC chat %s %d\n" (Naddr.encode haddr) port;
- flush Pervasives.stdout;
- accept_connection
- (fun t ->
- Printf.printf "DCC chat established\n";
- flush Pervasives.stdout;
- chat_loop t) s; ()
-
-let chat_connect host port =
- let s = socket PF_INET SOCK_STREAM 0 in
- connect s (ADDR_INET (inet_addr_of_string (Naddr.decode host), port));
- Printf.printf "DCC chat established\n";
- flush Pervasives.stdout;
- chat_loop s; ()
-
-let getaddr_ext server =
- let addr =
- try (gethostbyname server).h_addr_list.(0) with
- _ -> inet_addr_of_string "198.41.0.4"
- and port = 7 in
- let s = socket PF_INET SOCK_DGRAM 0 in
- connect s (ADDR_INET (addr, port));
- match (getsockname s) with
- ADDR_INET (addr, port) -> addr
- | _ -> raise Not_found
-
-let main () =
- let a = ref [] in
- let usage = usage "Usage" (Filename.basename Sys.argv.(0)) in
- let speclist = [] in
- Arg.parse speclist (fun x -> a := !a @ [x]) usage;
- begin match !a with
- "send" :: [ port; filename ] ->
- let port =
- try int_of_string port with
- _ -> Arg.usage speclist usage; exit 1
- in
- send_file port filename;
- exit 0; ()
- | "receive" :: [ host; port; size; filename ] ->
- let (port, size) =
- try
- int_of_string port,
- int_of_string size
- with
- _ -> Arg.usage speclist usage; exit 1
- in
- receive_file host port size filename;
- exit 0; ()
- | "chat" :: [ "listen"; port ] ->
- let port =
- try
- int_of_string port
- with
- _ -> Arg.usage speclist usage; exit 1
- in
- chat_listen port;
- exit 0; ()
- | "chat" :: [ "connect"; host; port ] ->
- let port =
- try
- int_of_string port
- with
- _ -> Arg.usage speclist usage; exit 1
- in
- chat_connect host port;
- exit 0; ()
- | _ -> Arg.usage speclist usage; exit 1
- end
-
-let _ = Printexc.catch main ()
+++ /dev/null
-/*
- * getaddrinfo(2) emulation.
- * Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
-
- * Author: Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
-This file is not part of any package.
-
-GNU Emacs 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.
-
-GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
- */
-
-#ifndef HAVE_GETADDRINFO
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
-
-#ifdef HAVE_NETINET6_IN6_H
-# include <netinet6/in6.h>
-#endif /* HAVE_NETINET6_IN6_H */
-
-#include "getaddrinfo.h"
-
-int getaddrinfo (hostname, servname, hints, res)
- const char *hostname;
- const char *servname;
- const struct addrinfo *hints;
- struct addrinfo **res;
-{
- struct hostent *host = NULL;
- struct servent *serv = NULL;
- struct protoent *proto;
- int port = 0;
-
-#if (defined (HAVE_SOCKADDR_IN6) && defined (INET6))
- struct sockaddr_in6 *sin =
- (struct sockaddr_in6 *) calloc (1, sizeof (struct sockaddr_in6));
-#else /* (defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
- struct sockaddr_in *sin =
- (struct sockaddr_in *) calloc (1, sizeof (struct sockaddr_in));
-#endif /* !(defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
-
- struct addrinfo *ai = *res =
- (struct addrinfo *) calloc (1, sizeof (struct addrinfo));
-
- if ((~ hints->ai_flags & AI_PASSIVE) && hostname &&
- (host = gethostbyname (hostname)) == NULL) {
- perror ("gethostbyname");
- return EAI_NONAME;
- }
-
- if (hints->ai_protocol &&
- (proto = getprotobynumber (hints->ai_protocol)) == NULL) {
- perror ("getprotobynumber");
- return EAI_NONAME;
- }
-
- if (servname)
- if (isdigit (servname[0]))
- port = atoi (servname);
- else {
- if ((serv = getservbyname (servname, proto->p_name)) == NULL) {
- perror ("getservbyname");
- return EAI_NONAME;
- }
- port = serv->s_port;
- }
-
-#if (defined (HAVE_SOCKADDR_IN6) && defined (INET6))
- if (host)
- memcpy (&sin->sin6_addr, host->h_addr, host->h_length);
- sin->sin6_port = htons (port);
-#else /* (defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
- if (host)
- memcpy (&sin->sin_addr, host->h_addr, host->h_length);
- sin->sin_port = htons (port);
-#endif /* !(defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
-
- if (hints->ai_family == AF_UNSPEC)
- ai->ai_family = host->h_addrtype;
- else
- ai->ai_family = hints->ai_family;
-#if (defined (HAVE_SOCKADDR_IN6) && defined (INET6))
- sin->sin6_family = ai->ai_family;
-#else /* (defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
- sin->sin_family = ai->ai_family;
-#endif /* !(defined (HAVE_SOCKADDR_IN6) && defined (INET6)) */
-
- ai->ai_protocol = hints->ai_protocol;
- ai->ai_socktype = hints->ai_socktype;
- ai->ai_addrlen = sizeof (*sin);
- ai->ai_addr = (struct sockaddr *)sin;
-
- return 0;
-}
-
-void freeaddrinfo (ai)
- struct addrinfo *ai;
-{
- struct addrinfo *p;
-
- while (ai != NULL) {
- p = ai;
- ai = ai->ai_next;
- free (p);
- }
-}
-
-#endif /* HAVE_GETADDRINFO */
+++ /dev/null
-/*
- * getaddrinfo(2) emulation.
- * Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
-
- * Author: Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
-This file is not part of any package.
-
-GNU Emacs 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.
-
-GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
- */
-
-struct addrinfo {
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- size_t ai_addrlen;
- char *ai_canonname;
- struct sockaddr *ai_addr;
- struct addrinfo *ai_next;
-};
-
-/* Possible values for `ai_flags' field in `addrinfo' structure. */
-# define AI_PASSIVE 1 /* Socket address is intended for `bind'. */
-# define AI_CANONNAME 2 /* Request for canonical name. */
-# define AI_NUMERICHOST 3 /* Don't use name resolution. */
-
-/* Error values for `getaddrinfo' function. */
-#define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
-#define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
-#define EAI_AGAIN -3 /* Temporary failure in name resolution. */
-#define EAI_FAIL -4 /* Non-recoverable failure in name res. */
-#define EAI_NODATA -5 /* No address associated with NAME. */
-#define EAI_FAMILY -6 /* `ai_family' not supported. */
-#define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
-#define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
-#define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
-#define EAI_MEMORY -10 /* Memory allocation failure. */
-#define EAI_SYSTEM -11 /* System error returned in `errno'. */
-
-#define NI_MAXHOST 1025
-#define NI_MAXSERV 32
-
-#define NI_NUMERICHOST 1 /* Don't try to look up hostname. */
-#define NI_NUMERICSERV 2 /* Don't convert port number to name. */
-#define NI_NOFQDN 4 /* Only return nodename portion. */
-#define NI_NAMEREQD 8 /* Don't return numeric addresses. */
-#define NI_DGRAM 16 /* Look up UDP service rather than TCP. */
-
-extern int getaddrinfo (const char *, const char *, const struct addrinfo *,
- struct addrinfo **);
-
-extern void freeaddrinfo (struct addrinfo *ai);
-
-
-
+++ /dev/null
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
- before changing it!
-
- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94
- Free Software Foundation, Inc.
-
- 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
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details. */
-\f
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-#define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-#if defined (emacs) || defined (CONFIG_BROKETS)
-/* We use <config.h> instead of "config.h" so that a compilation
- using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
- (which it would do because it found this file in $srcdir). */
-#include <config.h>
-#else
-#include "config.h"
-#endif
-#endif
-
-#ifndef __STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-#include <stdlib.h>
-#endif /* GNU C library. */
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
- but it behaves differently for the user, since it allows the user
- to intersperse the options with the other arguments.
-
- As `getopt' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Setting the environment variable POSIXLY_CORRECT disables permutation.
- Then the behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg = NULL;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns EOF, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* XXX 1003.2 says this must be 1 before any call. */
-int optind = 0;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
-
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return EOF with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-\f
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-#include <string.h>
-#define my_index strchr
-#else
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-char *getenv ();
-
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-#ifndef __STDC__
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-#endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-\f
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-static void
-exchange (argv)
- char **argv;
-{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-static const char *
-_getopt_initialize (optstring)
- const char *optstring;
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- first_nonopt = last_nonopt = optind = 1;
-
- nextchar = NULL;
-
- posixly_correct = getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
-
- return optstring;
-}
-\f
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns `EOF'.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- The elements of ARGV aren't really const, because we permute them.
- But we pretend they're const in the prototype to be compatible
- with other systems.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options. */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
-{
- optarg = NULL;
-
- if (optind == 0)
- optstring = _getopt_initialize (optstring);
-
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc
- && (argv[optind][0] != '-' || argv[optind][1] == '\0'))
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp (argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return EOF;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if ((argv[optind][0] != '-' || argv[optind][1] == '\0'))
- {
- if (ordering == REQUIRE_ORDER)
- return EOF;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if (nameend - nextchar == (int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, "%s: option `%s' is ambiguous\n",
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- {
- if (argv[optind - 1][1] == '-')
- /* --option */
- fprintf (stderr,
- "%s: option `--%s' doesn't allow an argument\n",
- argv[0], pfound->name);
- else
- /* +option or -option */
- fprintf (stderr,
- "%s: option `%c%s' doesn't allow an argument\n",
- argv[0], argv[optind - 1][0], pfound->name);
- }
- nextchar += strlen (nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr, "%s: option `%s' requires an argument\n",
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
- {
- if (opterr)
- {
- if (argv[optind][1] == '-')
- /* --option */
- fprintf (stderr, "%s: unrecognized option `--%s'\n",
- argv[0], nextchar);
- else
- /* +option or -option */
- fprintf (stderr, "%s: unrecognized option `%c%s'\n",
- argv[0], argv[optind][0], nextchar);
- }
- nextchar = (char *) "";
- optind++;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (opterr)
- {
- if (posixly_correct)
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c);
- else
- fprintf (stderr, "%s: invalid option -- %c\n", argv[0], c);
- }
- optopt = c;
- return '?';
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, "%s: option requires an argument -- %c\n",
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal (argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
-}
-
-#endif /* _LIBC or not __GNU_LIBRARY__. */
-\f
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == EOF)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
+++ /dev/null
-/* Declarations for getopt.
- Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
-
- 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
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details. */
-
-#ifndef _GETOPT_H
-#define _GETOPT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns EOF, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
- for unrecognized options. */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized. */
-
-extern int optopt;
-
-/* Describe the long-named options requested by the application.
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
- of `struct option' terminated by an element containing a name which is
- zero.
-
- The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
-
- If the field `flag' is not NULL, it points to a variable that is set
- to the value given in the field `val' when the option is found, but
- left unchanged if the option is not found.
-
- To have a long-named option do something other than set an `int' to
- a compiled-in constant, such as set a value from `optarg', set the
- option's `flag' field to zero and its `val' field to a nonzero
- value (the equivalent single-letter option character, if there is
- one). For long options that have a zero `flag' field, `getopt'
- returns the contents of the `val' field. */
-
-struct option
-{
-#if __STDC__
- const char *name;
-#else
- char *name;
-#endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'. */
-
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-
-#if __STDC__
-#if defined(__GNU_LIBRARY__)
-/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-#endif /* not __GNU_LIBRARY__ */
-extern int getopt_long (int argc, char *const *argv, const char *shortopts,
- const struct option *longopts, int *longind);
-extern int getopt_long_only (int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind);
-
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind,
- int long_only);
-#else /* not __STDC__ */
-extern int getopt ();
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-#endif /* not __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _GETOPT_H */
+++ /dev/null
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987, 88, 89, 90, 91, 92, 1993
- Free Software Foundation, Inc.
-
- 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
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details. */
-\f
-#ifdef HAVE_CONFIG_H
-#if defined (emacs) || defined (CONFIG_BROKETS)
-/* We use <config.h> instead of "config.h" so that a compilation
- using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
- (which it would do because it found this file in $srcdir). */
-#include <config.h>
-#else
-#include "config.h"
-#endif
-#endif
-
-#include "getopt.h"
-
-#ifndef __STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#else
-char *getenv ();
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* _LIBC or not __GNU_LIBRARY__. */
-\f
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == EOF)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
+++ /dev/null
-(* Network address handling module.
-
-This file is part of Liece.
-
-Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-Created: 1998-09-28
-Revised: 1999-01-28
-Keywords: IRC, liece, DCC
-
-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
-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 GNU Emacs; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. *)
-
-open Num
-open Big_int
-open Str
-
-let encode str =
- let _ = string_match
- (regexp "\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)") str 0 in
- let (a1, a2, a3, a4) =
- try
- int_of_string (matched_group 1 str),
- int_of_string (matched_group 2 str),
- int_of_string (matched_group 3 str),
- int_of_string (matched_group 4 str)
- with
- _ ->
- Printf.eprintf "Invalid address\n"; flush Pervasives.stdout; exit 1;
- in
- let (s1, s2, s3, s4) =
- Int (1 lsl 24),
- Int (1 lsl 16),
- Int (1 lsl 8),
- Int 1
- in
- let ul =
- ((Int a1) */ s1) +/ ((Int a2) */ s2) +/ ((Int a3) */ s3) +/ (Int a4)
- in
- string_of_num ul
-
-let decode str =
- let ul =
- try
- num_of_string str
- with
- _ ->
- Printf.eprintf "Invalid address\n"; flush Pervasives.stdout; exit 1;
- in
- let (s1, s2, s3, s4) =
- Int (1 lsl 24),
- Int (1 lsl 16),
- Int (1 lsl 8),
- Int 1
- in
- let (a1, a2, a3, a4) =
- floor_num (ul // s1),
- floor_num ((mod_num ul s1) // s2),
- floor_num ((mod_num (mod_num ul s1) s2) // s3),
- (mod_num (mod_num (mod_num ul s1) s2) s3)
- in
- Printf.sprintf "%s.%s.%s.%s"
- (string_of_num a1)
- (string_of_num a2)
- (string_of_num a3)
- (string_of_num a4)
+++ /dev/null
-(* Network address handling module.
-
-This file is part of Liece.
-
-Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-Created: 1998-09-28
-Revised: 1999-01-28
-Keywords: IRC, liece, DCC
-
-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
-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 GNU Emacs; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. *)
-
-val encode : string -> string;;
- (* [Naddr.encode s] encodes the XXX.XXX.XXX.XXX address [s] into
- another string packed by network byte order. *)
-
-val decode : string -> string;;
- (* [Naddr.decode s] does the inverse job than [Naddr.encode],
- restoring initial expression of address. *)
+++ /dev/null
-/*
- * TCP/IP stream emulation for GNU Emacs.
- * Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
-
- * Author: Masanobu Umeda <umerin@mse.kyutech.ac.jp>
- * Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
-This file is part of GNU Emacs.
-
-GNU Emacs 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.
-
-GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
- */
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <netinet/in.h>
-#define _GNU_SOURCE
-#include <getopt.h>
-
-#ifdef HAVE_SOCKS_H
-#include <socks.h>
-#endif
-
-#ifndef HAVE_GETADDRINFO
-#include "getaddrinfo.h"
-#endif /* !HAVE_GETADDRINFO */
-
-#ifdef HAVE_BASENAME
-# ifdef HAVE_LIBGEN_H
-# include <libgen.h>
-# ifdef basename
-# undef basename
-# endif
-# endif
-# include <string.h>
-#else
-# define basename(path) (rindex((path), '/') + 1)
-#endif
-
-#ifndef NI_MAXHOST
-# define NI_MAXHOST 1025
-#endif
-
-static char *progname;
-
-void version () {
- printf("%s (Liece) 1.4.0\n"
- "Copyright (C) 1998, 1999 Daiki Ueno\n"
- "This is free software; see the source for copying conditions. There is NO\n"
- "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
- progname);
-}
-
-void usage() {
- printf("Usage: %s [options] host [service]\n", progname);
-}
-
-\f
-main (argc, argv)
- int argc;
- char *argv[];
-{
- struct protoent *proto;
-
- struct addrinfo *in, hints;
-
- char *hostname = NULL, *service = "ircd";
- int family, port;
- fd_set *readfds, *writefds;
- int server, emacsIn = fileno (stdin), emacsOut = fileno (stdout);
- char buffer[1024], *retry;
- int nbuffer, wret, false = 0;
- int c;
-
- progname = (char *) basename (argv[0]);
-
- while (1) {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] = {
- {"version", 0, 0, 'v'},
- {"help", 0, 0, 'h'},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "vh", long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'v':
- version();
- exit(1);
- break;
- case 'h':
- usage();
- exit(1);
- break;
- default:
- break;
- }
- }
-
- if (argc < 2)
- {
- usage();
- exit (1);
- }
- if (argc >= 2)
- hostname = argv[1];
- if (argc >= 3)
- service = argv[2];
-
- if ((proto = getprotobyname ("tcp")) == NULL) {
- perror ("getprotobyname");
- exit (1);
- }
-
- memset (&hints, 0, sizeof (hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_protocol = proto->p_proto;
- if (getaddrinfo (hostname, service, &hints, &in) < 0) {
- perror ("getaddrinfo");
- exit (1);
- }
-
- if ((server = socket (in->ai_family, in->ai_socktype, 0)) < 0) {
- perror ("socket");
- exit (1);
- }
-
- if (setsockopt (server, SOL_SOCKET, SO_REUSEADDR,
- (const char *) &false, sizeof (false))) {
- perror ("setsockopt");
- exit (1);
- }
-
- if (connect (server, in->ai_addr, in->ai_addrlen) < 0) {
- perror ("connect");
- close (server);
- exit (1);
- }
-
-#ifdef O_NDELAY
- fcntl (server, F_SETFL, O_NDELAY);
-#endif /* O_NDELAY */
-
- /* Connection established. */
-
- readfds = (fd_set *) calloc(server + 1, sizeof (fd_mask));
- writefds = (fd_set *) calloc(server + 1, sizeof (fd_mask));
-
- while (1)
- {
- FD_SET (server, readfds);
- FD_SET (emacsIn, readfds);
- if (select (server+1, readfds, NULL, NULL, NULL) == -1)
- {
- perror ("select");
- exit (1);
- }
- if (FD_ISSET (emacsIn, readfds))
- {
- /* From Emacs */
- nbuffer = read (emacsIn, buffer, sizeof buffer -1);
-
- if (nbuffer == 0)
- goto finish;
- for (retry = buffer; nbuffer > 0; nbuffer -= wret, retry += wret)
- {
- FD_SET (server, writefds);
- if (select (server+1, NULL, writefds, NULL, NULL) == -1)
- {
- perror ("select");
- exit (1);
- }
- wret = write (server, retry, nbuffer);
- if (wret < 0) goto finish;
- }
- }
- if (FD_ISSET (server, readfds))
- {
- /* From NNTP server */
- nbuffer = read (server, buffer, sizeof buffer -1);
- if (nbuffer == 0)
- goto finish;
- for (retry = buffer; nbuffer > 0; nbuffer -= wret, retry += wret)
- {
- FD_SET (emacsOut, writefds);
- if (select (emacsOut+1, NULL, writefds, NULL, NULL) == -1)
- {
- perror ("select");
- exit (1);
- }
- wret = write (emacsOut, retry, nbuffer);
- if (wret < 0) goto finish;
- }
- }
- }
-
- /* End of communication. */
- finish:
- close (server);
- close (emacsIn);
- close (emacsOut);
- exit (0);
-}
+++ /dev/null
-Makefile.in
-Makefile
-liece.info
-xslt
-texi_xml
+++ /dev/null
-TEXI_XML = ./texi_xml
-EXTRA_DIST = README liece.xml liece.info
-DISTCLEANFILES = liece.info
-CLEANFILES = *~
-
-SUFFIXES = .xml .txml .texi .info
-
-DOCBOOK2TEXIXSLT_DIR = xslt/texi
-SAXON = java -classpath $(CLASSPATH):$(DOCBOOK2TEXIXSLT_DIR) com.icl.saxon.StyleSheet
-
-all: liece.info
-
-%.txml: %.xml
- $(SAXON) -o $@ $*.xml $(DOCBOOK2TEXIXSLT_DIR)/docbook.xsl
-
-%.texi: %.txml
- $(TEXI_XML) $*.txml
- -recode -df utf8..texi < $@ > tmp
- mv tmp $@
+++ /dev/null
-This is the Liece documentation in DocBook XML format README.
-===========================================================
-
-We are rewriting the Liece documentation in DocBook XML format.
-For texinfo output, you have to install docbook2X[1] and SAXON[2] (the
-XSLT processor) and follow the instructions below:
-
-(0) Install a Java VM.
-(1) Add `saxon.jar' to CLASSPATH.
-(2) Copy docbook2X/texi_xml and docbook2X/xslt in this directory.
-(3) Run `make' in the top directory.
-
-Footnotes:
-[1] http://docbook2x.sourceforge.net/
-
-[2] http://users.iclway.co.uk/mhkay/saxon/
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://docbook.org/xml/4.1.2/docbookx.dtd" [
-<!ENTITY cvsroot-pserver ":pserver:anonymousl@cvs.m17n.org:/cvs/root">
-<!ENTITY liece-version "1.4.4">
-<!ENTITY liece-command-prefix
-"<keycombo><keycap>C</keycap><keycap>c</keycap></keycombo>">
-]>
-
-<article id="index">
- <articleinfo>
- <title>Liece</title>
- <abstract>
- <para>Emacs IRC client.</para>
- </abstract>
- <author>
- <firstname>Daiki</firstname>
- <surname>Ueno</surname>
- <affiliation>
- <address format="linespecific">
- <email>ueno@unixuser.org</email>
- </address>
- </affiliation>
- </author>
- <date>2000/09/12</date>
- <releaseinfo>Version 1.4.4</releaseinfo>
- </articleinfo>
-
- <para>
- This manual documents <firstterm>Liece</firstterm> &liece-version;,
- the Emacs IRC client. You may find the latest information from
- <ulink url="http://www.unixuser.org/~ueno/liece/">
- <firstterm>Liece</firstterm> official home page.
- </ulink>
- </para>
-
- <sect1 id="overview">
- <sect1info>
- <abstract>
- <para>Summary of <firstterm>Liece</firstterm> features</para>
- </abstract>
- </sect1info>
- <title>Overview</title>
-
- <para>
- <firstterm>Liece</firstterm>, the Emacs IRC client,
- provides a user-friendly interface to access IRC servers.
- <footnote>
- Internet Relay Chat: RFC 1459, RFC 2810, RFC 2811, RFC 2812, RFC 2813.
- </footnote>
- </para>
- <para>Currently <firstterm>Liece</firstterm> has following features:</para>
- <itemizedlist>
- <listitem>
- <para>
- Clear user interface inspired by
- <ulink url="http://www.chocoa.org/">CHOCOA</ulink>
- </para>
- </listitem>
- <listitem><para>Lightweight operation</para></listitem>
- <listitem><para>Dynamic window configuration</para></listitem>
- <listitem><para>Collect URLs automatically</para></listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 id="install">
- <sect1info>
- <abstract>
- <para>How to install <firstterm>Liece</firstterm></para>
- </abstract>
- </sect1info>
- <title>Installation</title>
-
- <para>
-
- </para>
-
- <para>
- The installation procedure depends on the Emacs flavor you are
- running. Anyway <firstterm>Liece</firstterm> &liece-version;
- should work on:
- </para>
-
- <simplelist type="vert">
- <member>Emacs 20.7 and up.</member>
- <member>XEmacs 21.1.12 and up.</member>
- </simplelist>
-
- <sect2>
- <sect2info>
- <abstract>
- <para>Complicated stuff you may have to do.</para>
- </abstract>
- </sect2info>
- <title>Prerequisites</title>
- <para>
- <firstterm>Liece</firstterm> &liece-version; uses APEL and FLIM,
- you have to install them in this order.
- Generally <command moreinfo="none">make install</command> will do the job.
- </para>
- <segmentedlist>
- <segtitle>Package</segtitle>
- <segtitle>Author's version</segtitle>
- <seglistitem>
- <seg>
- <ulink url="ftp://ftp.m17n.org/pub/mule/apel/">APEL (A Portable Emacs Library)</ulink></seg>
- <seg>10.2 or later</seg>
- </seglistitem>
- <seglistitem>
- <seg>
- <ulink url="ftp://ftp.m17n.org/pub/mule/flim/">FLIM</ulink>
- </seg>
- <seg>1.12 or later</seg>
- </seglistitem>
- </segmentedlist>
- </sect2>
- <sect2>
- <title>Compilation</title>
- <para>
- In the top level directory of the <firstterm>Liece</firstterm> distribution,
- run the script <filename moreinfo="none">configure</filename> as follows:
- </para>
- <informalexample>
- <screen format="linespecific">
-<prompt moreinfo="none">$</prompt> ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
- </screen>
- </informalexample>
- <para>
- If you are using XEmacs and want to install to XEmacs package directory,
- specify <option>--enable-package</option>.
- If you wish to build with a specific version of Emacs,
- use <option>--with-emacs</option>.
- </para>
- <para>
- When it is done, <filename moreinfo="none">configure</filename>
- just creates the files:
- </para>
- <simplelist type="vert">
- <member>Makefile</member>
- <member>lisp/Makefile</member>
- <member>dcc/Makefile</member>
- <member>doc/Makefile</member>
- <member>etc/Makefile</member>
- </simplelist>
- <para>
- Then run <command moreinfo="none">make</command> to finish building
- <firstterm>Liece</firstterm> in the standard way.
- You can install the package with
- <command moreinfo="none">make install</command>.
- </para>
- </sect2>
- </sect1>
-
- <sect1 id="usage">
- <sect1info>
- <abstract>
- <para>The various usage possibilities</para>
- </abstract>
- </sect1info>
- <title>Usage</title>
- <sect2>
- <sect2info>
- <abstract>
- <para>Finding an IRC server and connecting to it</para>
- </abstract>
- </sect2info>
- <title>Servers</title>
- <para>
- <firstterm>Liece</firstterm> comes with a list of servers
- held in the variable <varname>liece-server-alist</varname>.
- </para>
- </sect2>
- <sect2>
- <sect2info>
- <abstract>
- <para>Starting <firstterm>Liece</firstterm></para>
- </abstract>
- </sect2info>
- <title>Start <firstterm>Liece</firstterm></title>
- <para>
- If installation and configuration worked well,
- you can invoke <firstterm>Liece</firstterm> typing
- <command moreinfo="none">
- <keycombo moreinfo="none">
- <keycap moreinfo="none">M</keycap>
- <keycap moreinfo="none">x</keycap>
- </keycombo>
- liece
- </command>
- in Emacs.
- </para>
- </sect2>
- <sect2>
- <title>Basic Key Bindings</title>
- <para>
- Once join a channel, if you type normal text then you will see it come up
- in the channel with your nick before it.
- If anyone else was in the channel they would also see that.
- </para>
- <para>
- If you are familiar with IRC, you can issue commands with leading
- <command moreinfo="none">
- &liece-command-prefix;<keycap moreinfo="none">/</keycap>
- </command>, while there are many shortcut:
- </para>
- <variablelist>
- <varlistentry>
- <term>&liece-command-prefix;<keycap moreinfo="none">j</keycap></term>
- <listitem>
- <para>
- Join one or more comma separated channels with given optional keys.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>&liece-command-prefix;<keycap moreinfo="none">n</keycap></term>
- <listitem>
- <para>Change your nickname.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>&liece-command-prefix;<keycap moreinfo="none">q</keycap></term>
- <listitem>
- <para>
- Quit <firstterm>Liece</firstterm>.
- You can specify the comment by a prefix argument.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>&liece-command-prefix;<keycap moreinfo="none">p</keycap></term>
- <listitem>
- <para>
- Part one or more channels.
- You can specify the comment by a prefix argument.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
- </sect1>
-
- <sect1 id="copying">
- <sect1info>
- <abstract>
- <para>Copyright and warranty</para>
- </abstract>
- </sect1info>
- <title>Copying</title>
- <para>
- 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.
- </para>
- <para>
- This program 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.
- </para>
- <para>
- 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- </para>
- </sect1>
-</article>
+++ /dev/null
-Makefile.in
-Makefile
+++ /dev/null
-ICONS = \
- icons/back.xpm \
- icons/ball.blank.xpm \
- icons/ball.gray.xpm \
- icons/ball.red.xpm \
- icons/naruto.blank.xpm \
- icons/naruto.gray.xpm \
- icons/naruto.red.xpm \
- icons/crypt.xpm \
- icons/encrypt.xpm \
- icons/forward.xpm \
- icons/home.xpm \
- icons/icons.gif \
- icons/icons.xpm \
- icons/liece-pointer.xbm \
- icons/liece-pointer.xpm \
- icons/key.xpm \
- icons/location.xpm \
- icons/pindown.xpm \
- icons/print.xpm \
- icons/reload.xpm \
- icons/search.xpm \
- icons/stop.xpm \
- icons/balloon.xpm
-CATALOGS = po/ja.po
-STYLES = \
- styles/bottom \
- styles/middle \
- styles/top
-TARGETS = $(ICONS) $(CATALOGS) $(STYLES)
-
-if USE_PACKAGE
-icondir = $(packagedir)/etc/$(PACKAGE)/icons
-catalogdir = $(packagedir)/etc/$(PACKAGE)/po
-styledir = $(packagedir)/etc/$(PACKAGE)/styles
-else
-icondir = $(pkgdatadir)/icons
-catalogdir = $(pkgdatadir)/po
-styledir = $(pkgdatadir)/styles
-endif
-
-disticondir = $(distdir)/icons
-distcatalogdir = $(distdir)/po
-diststyledir = $(distdir)/styles
-
-install-data-local: $(TARGETS)
- for d in $(pkgdatadir) $(icondir) $(catalogdir) $(styledir); do \
- $(top_srcdir)/mkinstalldirs $$d; \
- done
- @list="$(ICONS)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(icondir)/"; \
- $(INSTALL_DATA) $$p $(icondir)/; \
- else :; fi; \
- done
- @list="$(CATALOGS)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(catalogdir)/"; \
- $(INSTALL_DATA) $$p $(catalogdir)/; \
- else :; fi; \
- done
- @list="$(STYLES)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(styledir)/"; \
- $(INSTALL_DATA) $$p $(styledir)/; \
- else :; fi; \
- done
-
-dist-hook:
- for d in $(distpkgdatadir) $(disticondir) $(distcatalogdir) \
- $(diststyledir); do \
- $(top_srcdir)/mkinstalldirs $$d; \
- done
- @list="$(ICONS)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(disticondir)/"; \
- $(INSTALL_DATA) $$p $(disticondir)/; \
- else :; fi; \
- done
- @list="$(CATALOGS)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(distcatalogdir)/"; \
- $(INSTALL_DATA) $$p $(distcatalogdir)/; \
- else :; fi; \
- done
- @list="$(STYLES)"; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(diststyledir)/"; \
- $(INSTALL_DATA) $$p $(diststyledir)/; \
- else :; fi; \
- done
+++ /dev/null
-/* XPM */
-static char *back[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooelooooooooooooo",
-"ooooooooooooeudooooooooooooo",
-"oooooooooooeuocloooooooooooo",
-"ooooooooooeuoecboooooooooooo",
-"oooooooooeuoeocblooooooooooo",
-"ooooooooeuoeoecfdooooooooooo",
-"oooooooeuoeoeocffloooooooooo",
-"ooooooeuoeoeoeoeoboooooooooo",
-"oooooeuoeoeoeoeoedbooooooooo",
-"oooohuoeoeoeoeoeoffooooooooo",
-"oooohueoeoeoeoeoeffooooooooo",
-"ooooocdddddddddddfbooooooooo",
-"oooooochcdcdcccccfbooooooooo",
-"ooooooochchccccccbdooooooooo",
-"oooooooochchcccccblooooooooo",
-"ooooooooochcccffffoooooooooo",
-"ooooooolllchccbbbdlllloooooo",
-"oooooooolllbhcbblllllllooooo",
-"oooooooooollbhbblllllloooooo",
-"ooooooooooollbbllllooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char * ball_blank_xpm[] = {
-"12 12 1 1",
-" c None",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
+++ /dev/null
-/* XPM */
-static char * ball_gray_xpm[] = {
-"12 12 10 1",
-" c None",
-". c #000000",
-"+ c #999999",
-"@ c #666666",
-"# c #FFFFFF",
-"$ c #CCCCCC",
-"% c #888888",
-"& c #555555",
-"* c #BBBBBB",
-"= c #333333",
-" .... ",
-" .+++@. ",
-" .+#$%@&. ",
-" .+*#*%@&=. ",
-" .++++@&==. ",
-" .+++@@&=.. ",
-" .@@@@&==.. ",
-" .@@&&==... ",
-" .====.=. ",
-" .=.... ",
-" .... ",
-" "};
+++ /dev/null
-/* XPM */
-static char * ball_red_xpm[] = {
-"12 12 6 1",
-" c None",
-". c #000000",
-"+ c #FF9999",
-"@ c #FF3333",
-"# c #FFFFFF",
-"$ c #660000",
-" ",
-" .... ",
-" .+++@. ",
-" .+#+@@$. ",
-" .++#++@@$. ",
-" .@+@+@$$$. ",
-" .+@+@@@$.. ",
-" .@@@@$$$.. ",
-" .@@$@$$... ",
-" .$$$$.$. ",
-" .$.... ",
-" .... "};
+++ /dev/null
-/* XPM */
-static char * balloon_xpm[] = {
-"12 12 4 1",
-" c None",
-". c #000000",
-"+ c #FFFFFF",
-"@ c #808080",
-" ...... ",
-" ..++++.. ",
-" .++++++++. ",
-".++@@@@@@++.",
-".++++++++++.",
-".++@@@@@@++.",
-".++++++++++.",
-".++@@@@@@++.",
-" .++++++++. ",
-" .++++++. ",
-" .+++... ",
-" ..... "};
+++ /dev/null
-/* XPM */
-static char *crypt[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooijiiinooooooo",
-"ooooooooooooooiouokkiioooooo",
-"oooooooooooooikkjiiksioooooo",
-"oooooooooooooik.oooik.oooooo",
-"oooooooooooooikjooornjoooooo",
-"oooooooooooooik#ooon..oooooo",
-"oooooiiniiiiijkijooooooooooo",
-"ooooi#n.kkkkin.ji#oooooooooo",
-"ooooiaooouuookki#.oooooooooo",
-"ooooikokkkkkkkii#.oooooooooo",
-"ooooimommmmmmmmi#.oooooooooo",
-"ooooikokkkkkkkki#.oooooooooo",
-"ooooimommmmmmmji#.lllllooooo",
-"ooooikokkkkkkkki#.iiillooooo",
-"ooooimommmmmmjjj#.lilooooooo",
-"ooooikkkkkkkkkki#.lloooooooo",
-"oooooiijjjjj.....ooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *encrypt[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 19 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #003438",
-"b c #008000",
-"c c #008080",
-"d c #00fc00",
-"e c #202020",
-"f c #303060",
-"g c #4098a0",
-"h c #6064c8",
-"i c #808000",
-"j c #808080",
-"k c #9898f8",
-"l c #c0c0c0 s backgroundToolBarColor",
-"m c #e8e8e8",
-"n c #f86430",
-"s c #f864c8",
-"p c #f8fc00",
-"q c #f8fcf8",
-/* pixels */
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllppppppllllllllllll",
-"llllllllpphhhhhpplllllllllll",
-"lllllllpphqqllkhfpllllllllll",
-"lllllllphql###lkhfplllllllll",
-"lllllllphqepll#lheplllllllll",
-"lllllllphlepll#kheplllllllll",
-"llllllpphleppp#kheppllllllll",
-"lllllppehkhjhffkhefpllllllll",
-"lllllphkhffkkkkefhh.plllllll",
-"lllllphklqqqllllkhf.plllllll",
-"lllllphkqhhhhhhhhef.plllllll",
-"lllllphkqlllllllkhf.plllllll",
-"lllllphkqhhhhhhhhff.plllllll",
-"lllllphkqlllllllkhf.plllllll",
-"lllllphkqhhhhhhhhef.jjjjjlll",
-"lllllphkqlllllllkhf.phhjllll",
-"lllllphkhhhhhhhhhf#.jpllllll",
-"lllllpph#fffffefe..pppllllll",
-"llllllppppppppppppplllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll",
-"llllllllllllllllllllllllllll"
-};
+++ /dev/null
-/* XPM */
-static char *forward[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooedhooooooooooooooooo",
-"ooooooooeechoooooooooooooooo",
-"oooooooohuochooooooooooooooo",
-"oooooooohoeochoooooooooooooo",
-"oooooooohuoeochooooooooooooo",
-"oooooooohoeoeochoooooooooooo",
-"ooooeeeeeuoeoeoccooooooooooo",
-"oooohououoeoeoeodcoooooooooo",
-"oooohueeoeoeoeoeodcooooooooo",
-"oooohoeoeoeoeoeoeodcoooooooo",
-"oooohueeoeoeoeoeoecdoooooooo",
-"oooohodddddddddddbbdoooooooo",
-"oooohuchchccccccbbdooooooooo",
-"ooooeohchccccccbbdoooooooooo",
-"ooooeechchccccbbdooooooooooo",
-"oooocbbbbhcccbbdlllllllooooo",
-"oooooooochccbgdllllllloooooo",
-"ooooolllchcbgdlllllooooooooo",
-"oooooollccbgdllloooooooooooo",
-"ooooooollbgdoooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *home[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooooooooooungioooooooo",
-"ooooooooooonnnnnungioooooooo",
-"oooooooooooiiiiiongioooooooo",
-"ooooooooooiuiiiiongioooooooo",
-"oooooooooifguiiiongioooooooo",
-"ooooooooifinguiiinggoooooooo",
-"oooooooifinoniuiiigigooooooo",
-"ooooooifinononioiiigiioooooo",
-"oooooiginonononioiiiigiooooo",
-"ooooiginonononongoiiiiiioooo",
-"oooigfnononononongnffgggoooo",
-"oooooiononiigsononibbgiooooo",
-"oooooononoiiilnonoifggoooooo",
-"ooooooononiiilononiggioooooo",
-"oooooononoiiisnonoigiioooooo",
-"ooooooononiigsononiinioooooo",
-"oooooononoigglnonoiniioooooo",
-"oooohhononggglononinlhoooooo",
-"oollchnhnonkkrkkilhllhlooooo",
-"oollchclllkkrkllhhhchhhhhooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *icons[] = {
-/* width height num_colors chars_per_pixel */
-" 454 29 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #c0c0c0",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"poooooooooooooooooooooooooelooooooooooooooooooooooooooooooooooooooooooedhooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooiiiiiiiiiiilooooooooooooooooooo",
-"pooooooooooooooooooooooooeudooogggggooooooooooooooooooooooooooooooooooeechoooooogggggooooooooooooooooooooooooooooooooooiiiiiiiigoooooooooooooooooooooooooooooooooooooooooooooooooooungiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooniiigoooooogggggooooooooooooooooooooooooooooooooooooouuuuuuuuuloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonllnlnlnlnligooooooooooooooooooo",
-"poooooooooooooooooooooooeuoclooogggooooooooooooooooooooooooooooooooooohuochoooooogggooooooooooooooooooooooooooooooooooiuininiif#ggoooooooooooooooooooooooooooooooooooooooooooonnnnnungiooooooooooooooooooooooooooooooooooooooooooouououoooooooooooooooooooooooooooooooooooooonuoigooooooogggoooooooooooooooooooooooooooooooooooooouuuouououloooooooooooooooooooooooooooooooooooooooooooooooijiiinooooooooooooooooooooooooooooooooooogninnlg.glolol...goooooooooooooooo",
-"pooooooooooooooooooooooeuoecboooogoooooooooooooooooooooooooooooooooooohoeochoooooogooooooooooooooooooooooooooooooooooiunnnnnifff#ggoooooooooooooooooooooooooooooooooooooooooooiiiiiongioooooooooooooooooooooooooooooooooooooooooouououououooooooooooooooooooooooooooooooooooonogigoooooooogooooooooooooooooooooooooooooooooooooooouuuuououulooooooooooooooooooooooooooooooooooooooooooooooiouokkiioooooooooooooooooooooooooooooooooogoioljjjj.lnogli.goooooooooooooooo",
-"poooooooooooooooooooooeuoeocbloooooooooooooooooooooooooooooooooooooooohuoeochooooooooooooooooooooooooooooooooooooiuoooononononnniffgoooooooooooooooooooooooooooooooooooooooooiuiiiiongiooooooooooooooooooooooooooooooooooooooooououuuuuuuouooooooooooooooooooooooooooooooooonoggi.oooooooooooooooooooooooooooooooooooooooooooooooouuuuuuuuuloooooooooooooooooooooooooooooooooooooooooooooikkjiiksiooooooooooooooooooooooooooooooooooogiojjqjjg.loli.j.oooooooooooooooo",
-"pooooooooooooooooooooeuoeoecfdoooooooooooooooooooooooooooooooooooooooohoeoeochooooooooooooooooooooooooooooooooooooiuoonononononfffggooooooooooooooooooooooooooooooooooooooooifguiiiongioooooooooooooooooooooooooooooooooooooooououuuuuuuottoooooooooooooooooooooooooooooooonogggi.oooooooooooooooooooooooooooooooooooooooooooooooouuuuuuuuulggingooooooooooooooooooooooooooooooooooooooooik.oooik.ooooooooooooooooooooooooooooooooooogiooqqqjg.noiojjooooooooooooooooo",
-"poooooooooooooooooooeuoeoeocffloooooooooooooooooooooooooooooooooooeeeeeuoeoeoccooooooooooooooooooooooooooooooooooooiuoononononfg##ggoooooooooooooooooooooooooooooooooooooooifinguiiinggooooooooooooooooooooooooooooooooooooooooouuuutuuuttouoooooooooooooooooooooooooooooonogiggi.oooooooooooooooooooooooooooooooooooooooooooooooouoooooooolgingoooooooooooooooooooooooooooooooooooooooooikjooornjooooooooooooooooooooooooooooooooooooioooqqjg.lolgjjooooooooooooooooo",
-"pooooooooooooooooooeuoeoeoeoeobooooooooooooooooooooooooooooooooooohououoeoeoeodcooooooooooooooooooooooooooooooooooooiuooooooifg###ggooooooooooooooooooooooooooooooooooooooifinoniuiiigigooooooooooooooooooooooooooooooooooooooouooootttutouoooooooooooooooooooooooooooooonoiigggi.ooooooooooooooooooooooooooooooooooooooooooooooooououououlgingooooooooooooooooooooooooooooooooooooooooooik#ooon..ooooooooooooooooooooooooooooooooooooionoqjf.fnoigojooooooooooooooooo",
-"poooooooooooooooooeuoeoeoeoeoedboooooooooooooooooooooooooooooooooohueeoeoeoeoeodcooooooooooooooooooooooooooooooooooooiuooooifg####ggoooooooooooooooooooooooooooooooooooooifinononioiiigiiooooooooooooooooooooooooooooooooooooooniiiintttuuouoooooooooooooooooooooooooooonunigig.igggiiiiiiiooooooooooooooooooooooooooooooooooooonououououoliggoooooooooooooooooooooooooooooooooooiiniiiiijkijoooooooooooooooooooooooooooooooooooooooglionnffffilogggggoooooooooooooooo",
-"poooooooooooooooohuoeoeoeoeoeoffoooooooooooooooooooooooooooooooooohoeoeoeoeoeoeodcooooooooooooooooooooooooooooooooooooiuooifgi####ggooooooooooooooooooooooooooooooooooooiginonononioiiiigioooooooooooooooooooooooooooooooooooooinoiifntuuuuooooooooooooooooooooooooooooonuniigg.noooooooooogooooooooooooooooooooooooooooooooooiinnniiiiiiiiiiggiooooooooooooooooooooooooooooooooi#n.kkkkin.ji#oooooooooooooooooooooooooooooooooooooognion....ignoili.goooooooooooooooo",
-"poooooooooooooooohueoeoeoeoeoeffoooooooooooooooooooooooooooooooooohueeoeoeoeoeoecdoooooooooooooooooooooooooooooooooooooiuifgoi####ggoooooooooooooooooooooooooooooooooooiginonononongoiiiiiioooooooooooooooooooooooooooooooooooinoniigfotutouoooooooooooooooooooooooooooonunigi.iinnnnnnnnnnogooooooooooooooooooooooooooooooooiuuoouonniiinniggiiooooooooooooooooooooooooooooooooiaooouuookki#.ooooooooooooooooooooooooooooooooooooooogiolggiiggloli.ggoooooooooooooooo",
-"pooooooooooooooooocdddddddddddfboooooooooooooooooooooooooooooooooohodddddddddddbbdoooooooooooooooooooooooooooooooooooooogggooi###fggooooooooooooooooooooooooooooooooooigfnononononongnffgggooooooooooooooooooooooooooooooooggofiiiggigoutuuooooooooooooooooooooooooooooonuiii.niinnnnnnnnnnngooooooooooooooooooooooooooooooooiooooouuuuoniiggigiooooooooooooooooooooooooooooooooikokkkkkkkii#.ooooooooooooooooooooooooooooooooooooooooio.llggggnoioggooooooooooooooooo",
-"poooooooooooooooooochcdcdcccccfboooooooooooooooooooooooooooooooooohuchchccccccbbdooooooooooooooooooooooooooooooooooooooooooooi###fggolooooooooooooooooooooooooooooooooooiononiigsononibbgioooooooooooooooooooooooooooooooofoiiooggggigottouoooooooooooooooooooooooooooooigg..ioiinnnnnnnnnnngooooooooooooooooooooooooooooooooionooooooooooogggiiglooooooooooooooooooooooooooooooimommmmmmmmi#.ooooooooooooooooooooooooooooooooooooooooio.llggfllolgggooooooooooooooooo",
-"pooooooooooooooooooochchccccccbdooooooooooooooooooooooooooooooooooeohchccccccbbdooooooooooooooooooooooooooooooooooooooooooooonn#ffggolloooooooooooooooooooooooooooooooooononoiiilnonoifggoooooooooooooooooooooooooooooooooiinoongfgfgiouououoooooooooooooooooooooooooooooooooioiinnnnnnnnnngoooooooooooooooooooooooooooooooooionnnnnnnnnnnngggigfggoooooooooooooooooooooooooooooikokkkkkkkki#.oooooooooooooooooooooooooooooooooooooognionlggggnlolggg.oooooooooooooooo",
-"poooooooooooooooooooochchcccccblooooooooooooooooooooooooooooooooooeechchccccbbdoooooooooooooooooooooooooooooooooooooonnnnnnnnnif#fgglllooooooooooooooooooooooooooooooooooononiiilononiggiooooooooooooooooooooooooooooooooinooniigffgiluououooooooooooooooooooooooooooooooooooioigggggggggggooooooooooooooooooooooooooooooooooionnononononnnggiggfgloooooooooooooooooooooooooooooimommmmmmmji#.lllllooooooooooooooooooooooooooooooooogniol....flnogli.goooooooooooooooo",
-"pooooooooooooooooooooochcccffffooooooooooooooooooooooooooooooooooocbbbbhcccbbdllllllloooooooooooooooooooooooooooooooonnnnnnnnnifffggiiooooooooooooooooooooooooooooooooooononoiiisnonoigiiooooooooooooooooooooooooooooooiiooniiigfillloonlnlnoooooooooooooooooooooooooooooooooioig.oooooooooooooooooooooooooooooooooooooooooooiinononononecnggggfglooooooooooooooooooooooooooooooikokkkkkkkki#.iiillooooooooooooooooooooooooooooooooolgio.ffff.gloii.ggoooooooooooooooo",
-"pooooooooooooooooooolllchccbbbdllllooooooooooooooooooooooooooooooooooochccbgdlllllllooooooooooooooooooooooooooooooooonininininiifgigiloooooooooooooooooooooooooooooooooooononiigsononiinioooooooooooooooooooooooooooooinoniiigfiooooonillllloooooooooooooooooooooooooooooooooioiggligigiiiillooooooooooooooooooooooooooooooooolliiiiiiiiinngggfgloooooooooooooooooooooooooooooooimommmmmmjjj#.liloooooooooooooooooooooooooooooooooooogio.gggfg.noilggooooooooooooooooo",
-"poooooooooooooooooooolllbhcbblllllllooooooooooooooooooooooooooooooolllchcbgdlllllooooooooooooooooooooooooooooooooooooniiiiiiiiiiiigillooooooooooooooooooooooooooooooooooononoigglnonoiniioooooooooooooooooooooooooooooggiiigfiooooniiiiiillnoooooooooooooooooooooooooooooooooioiggigigigilllooooooooooooooooooooooooooooooooooooooolliigggggffglooooooooooooooooooooooooooooooooikkkkkkkkkki#.llooooooooooooooooooooooooooooooooooooooiooggfgf.loigggllloooooooooooooo",
-"poooooooooooooooooooooollbhbbllllllooooooooooooooooooooooooooooooooollccbgdlllooooooooooooooooooooooooooooooooooooooooniiggggg#gggilloooooooooooooooooooooooooooooooooohhononggglononinlhoooooooooooooooooooooooooooooiggigillonliiillnooooooooooooooooooooooooooooooooooooooioiggliloooooooooooooooooooooooooooooooooooooooooooooooooooolgfgooooooooooooooooooooooooooooooooooooiijjjjj.....oooooooooooooooooooooooooooooooooooooooooinnnfffglnlifllllooooooooooooooo",
-"pooooooooooooooooooooooollbbllllooooooooooooooooooooooooooooooooooooollbgdooooooooooooooooooooooooooooooooooooooooooooooolllllllllllooooooooooooooooooooooooooooooooollchnhnonkkrkkilhllhloooooooooooooooooooooooooooonfgflllllllnoooooooooooooooooooooooooooooooooooooooooooioigllooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogggiiiiigi.llloooooooooooooooo",
-"poooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooollchclllkkrkllhhhchhhhhoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *icons[] = {
-/* width height num_colors chars_per_pixel */
-" 454 29 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #c0c0c0",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"poooooooooooooooooooooooooelooooooooooooooooooooooooooooooooooooooooooedhooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooiiiiiiiiiiilooooooooooooooooooo",
-"pooooooooooooooooooooooooeudooogggggooooooooooooooooooooooooooooooooooeechoooooogggggooooooooooooooooooooooooooooooooooiiiiiiiigoooooooooooooooooooooooooooooooooooooooooooooooooooungiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooniiigoooooogggggooooooooooooooooooooooooooooooooooooouuuuuuuuuloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooonllnlnlnlnligooooooooooooooooooo",
-"poooooooooooooooooooooooeuoclooogggooooooooooooooooooooooooooooooooooohuochoooooogggooooooooooooooooooooooooooooooooooiuininiif#ggoooooooooooooooooooooooooooooooooooooooooooonnnnnungiooooooooooooooooooooooooooooooooooooooooooouououoooooooooooooooooooooooooooooooooooooonuoigooooooogggoooooooooooooooooooooooooooooooooooooouuuouououloooooooooooooooooooooooooooooooooooooooooooooooijiiinooooooooooooooooooooooooooooooooooogninnlg.glolol...goooooooooooooooo",
-"pooooooooooooooooooooooeuoecboooogoooooooooooooooooooooooooooooooooooohoeochoooooogooooooooooooooooooooooooooooooooooiunnnnnifff#ggoooooooooooooooooooooooooooooooooooooooooooiiiiiongioooooooooooooooooooooooooooooooooooooooooouououououooooooooooooooooooooooooooooooooooonogigoooooooogooooooooooooooooooooooooooooooooooooooouuuuououulooooooooooooooooooooooooooooooooooooooooooooooiouokkiioooooooooooooooooooooooooooooooooogoioljjjj.lnogli.goooooooooooooooo",
-"poooooooooooooooooooooeuoeocbloooooooooooooooooooooooooooooooooooooooohuoeochooooooooooooooooooooooooooooooooooooiuoooononononnniffgoooooooooooooooooooooooooooooooooooooooooiuiiiiongiooooooooooooooooooooooooooooooooooooooooououuuuuuuouooooooooooooooooooooooooooooooooonoggi.oooooooooooooooooooooooooooooooooooooooooooooooouuuuuuuuuloooooooooooooooooooooooooooooooooooooooooooooikkjiiksiooooooooooooooooooooooooooooooooooogiojjqjjg.loli.j.oooooooooooooooo",
-"pooooooooooooooooooooeuoeoecfdoooooooooooooooooooooooooooooooooooooooohoeoeochooooooooooooooooooooooooooooooooooooiuoonononononfffggooooooooooooooooooooooooooooooooooooooooifguiiiongioooooooooooooooooooooooooooooooooooooooououuuuuuuottoooooooooooooooooooooooooooooooonogggi.oooooooooooooooooooooooooooooooooooooooooooooooouuuuuuuuulggingooooooooooooooooooooooooooooooooooooooooik.oooik.ooooooooooooooooooooooooooooooooooogiooqqqjg.noiojjooooooooooooooooo",
-"poooooooooooooooooooeuoeoeocffloooooooooooooooooooooooooooooooooooeeeeeuoeoeoccooooooooooooooooooooooooooooooooooooiuoononononfg##ggoooooooooooooooooooooooooooooooooooooooifinguiiinggooooooooooooooooooooooooooooooooooooooooouuuutuuuttouoooooooooooooooooooooooooooooonogiggi.oooooooooooooooooooooooooooooooooooooooooooooooouoooooooolgingoooooooooooooooooooooooooooooooooooooooooikjooornjooooooooooooooooooooooooooooooooooooioooqqjg.lolgjjooooooooooooooooo",
-"pooooooooooooooooooeuoeoeoeoeobooooooooooooooooooooooooooooooooooohououoeoeoeodcooooooooooooooooooooooooooooooooooooiuooooooifg###ggooooooooooooooooooooooooooooooooooooooifinoniuiiigigooooooooooooooooooooooooooooooooooooooouooootttutouoooooooooooooooooooooooooooooonoiigggi.ooooooooooooooooooooooooooooooooooooooooooooooooououououlgingooooooooooooooooooooooooooooooooooooooooooik#ooon..ooooooooooooooooooooooooooooooooooooionoqjf.fnoigojooooooooooooooooo",
-"poooooooooooooooooeuoeoeoeoeoedboooooooooooooooooooooooooooooooooohueeoeoeoeoeodcooooooooooooooooooooooooooooooooooooiuooooifg####ggoooooooooooooooooooooooooooooooooooooifinononioiiigiiooooooooooooooooooooooooooooooooooooooniiiintttuuouoooooooooooooooooooooooooooonunigig.igggiiiiiiiooooooooooooooooooooooooooooooooooooonououououoliggoooooooooooooooooooooooooooooooooooiiniiiiijkijoooooooooooooooooooooooooooooooooooooooglionnffffilogggggoooooooooooooooo",
-"poooooooooooooooohuoeoeoeoeoeoffoooooooooooooooooooooooooooooooooohoeoeoeoeoeoeodcooooooooooooooooooooooooooooooooooooiuooifgi####ggooooooooooooooooooooooooooooooooooooiginonononioiiiigioooooooooooooooooooooooooooooooooooooinoiifntuuuuooooooooooooooooooooooooooooonuniigg.noooooooooogooooooooooooooooooooooooooooooooooiinnniiiiiiiiiiggiooooooooooooooooooooooooooooooooi#n.kkkkin.ji#oooooooooooooooooooooooooooooooooooooognion....ignoili.goooooooooooooooo",
-"poooooooooooooooohueoeoeoeoeoeffoooooooooooooooooooooooooooooooooohueeoeoeoeoeoecdoooooooooooooooooooooooooooooooooooooiuifgoi####ggoooooooooooooooooooooooooooooooooooiginonononongoiiiiiioooooooooooooooooooooooooooooooooooinoniigfotutouoooooooooooooooooooooooooooonunigi.iinnnnnnnnnnogooooooooooooooooooooooooooooooooiuuoouonniiinniggiiooooooooooooooooooooooooooooooooiaooouuookki#.ooooooooooooooooooooooooooooooooooooooogiolggiiggloli.ggoooooooooooooooo",
-"pooooooooooooooooocdddddddddddfboooooooooooooooooooooooooooooooooohodddddddddddbbdoooooooooooooooooooooooooooooooooooooogggooi###fggooooooooooooooooooooooooooooooooooigfnononononongnffgggooooooooooooooooooooooooooooooooggofiiiggigoutuuooooooooooooooooooooooooooooonuiii.niinnnnnnnnnnngooooooooooooooooooooooooooooooooiooooouuuuoniiggigiooooooooooooooooooooooooooooooooikokkkkkkkii#.ooooooooooooooooooooooooooooooooooooooooio.llggggnoioggooooooooooooooooo",
-"poooooooooooooooooochcdcdcccccfboooooooooooooooooooooooooooooooooohuchchccccccbbdooooooooooooooooooooooooooooooooooooooooooooi###fggolooooooooooooooooooooooooooooooooooiononiigsononibbgioooooooooooooooooooooooooooooooofoiiooggggigottouoooooooooooooooooooooooooooooigg..ioiinnnnnnnnnnngooooooooooooooooooooooooooooooooionooooooooooogggiiglooooooooooooooooooooooooooooooimommmmmmmmi#.ooooooooooooooooooooooooooooooooooooooooio.llggfllolgggooooooooooooooooo",
-"pooooooooooooooooooochchccccccbdooooooooooooooooooooooooooooooooooeohchccccccbbdooooooooooooooooooooooooooooooooooooooooooooonn#ffggolloooooooooooooooooooooooooooooooooononoiiilnonoifggoooooooooooooooooooooooooooooooooiinoongfgfgiouououoooooooooooooooooooooooooooooooooioiinnnnnnnnnngoooooooooooooooooooooooooooooooooionnnnnnnnnnnngggigfggoooooooooooooooooooooooooooooikokkkkkkkki#.oooooooooooooooooooooooooooooooooooooognionlggggnlolggg.oooooooooooooooo",
-"poooooooooooooooooooochchcccccblooooooooooooooooooooooooooooooooooeechchccccbbdoooooooooooooooooooooooooooooooooooooonnnnnnnnnif#fgglllooooooooooooooooooooooooooooooooooononiiilononiggiooooooooooooooooooooooooooooooooinooniigffgiluououooooooooooooooooooooooooooooooooooioigggggggggggooooooooooooooooooooooooooooooooooionnononononnnggiggfgloooooooooooooooooooooooooooooimommmmmmmji#.lllllooooooooooooooooooooooooooooooooogniol....flnogli.goooooooooooooooo",
-"pooooooooooooooooooooochcccffffooooooooooooooooooooooooooooooooooocbbbbhcccbbdllllllloooooooooooooooooooooooooooooooonnnnnnnnnifffggiiooooooooooooooooooooooooooooooooooononoiiisnonoigiiooooooooooooooooooooooooooooooiiooniiigfillloonlnlnoooooooooooooooooooooooooooooooooioig.oooooooooooooooooooooooooooooooooooooooooooiinononononecnggggfglooooooooooooooooooooooooooooooikokkkkkkkki#.iiillooooooooooooooooooooooooooooooooolgio.ffff.gloii.ggoooooooooooooooo",
-"pooooooooooooooooooolllchccbbbdllllooooooooooooooooooooooooooooooooooochccbgdlllllllooooooooooooooooooooooooooooooooonininininiifgigiloooooooooooooooooooooooooooooooooooononiigsononiinioooooooooooooooooooooooooooooinoniiigfiooooonillllloooooooooooooooooooooooooooooooooioiggligigiiiillooooooooooooooooooooooooooooooooolliiiiiiiiinngggfgloooooooooooooooooooooooooooooooimommmmmmjjj#.liloooooooooooooooooooooooooooooooooooogio.gggfg.noilggooooooooooooooooo",
-"poooooooooooooooooooolllbhcbblllllllooooooooooooooooooooooooooooooolllchcbgdlllllooooooooooooooooooooooooooooooooooooniiiiiiiiiiiigillooooooooooooooooooooooooooooooooooononoigglnonoiniioooooooooooooooooooooooooooooggiiigfiooooniiiiiillnoooooooooooooooooooooooooooooooooioiggigigigilllooooooooooooooooooooooooooooooooooooooolliigggggffglooooooooooooooooooooooooooooooooikkkkkkkkkki#.llooooooooooooooooooooooooooooooooooooooiooggfgf.loigggllloooooooooooooo",
-"poooooooooooooooooooooollbhbbllllllooooooooooooooooooooooooooooooooollccbgdlllooooooooooooooooooooooooooooooooooooooooniiggggg#gggilloooooooooooooooooooooooooooooooooohhononggglononinlhoooooooooooooooooooooooooooooiggigillonliiillnooooooooooooooooooooooooooooooooooooooioiggliloooooooooooooooooooooooooooooooooooooooooooooooooooolgfgooooooooooooooooooooooooooooooooooooiijjjjj.....oooooooooooooooooooooooooooooooooooooooooinnnfffglnlifllllooooooooooooooo",
-"pooooooooooooooooooooooollbbllllooooooooooooooooooooooooooooooooooooollbgdooooooooooooooooooooooooooooooooooooooooooooooolllllllllllooooooooooooooooooooooooooooooooollchnhnonkkrkkilhllhloooooooooooooooooooooooooooonfgflllllllnoooooooooooooooooooooooooooooooooooooooooooioigllooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogggiiiiigi.llloooooooooooooooo",
-"poooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooollchclllkkrkllhhhchhhhhoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
-"pooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char * mini_lock_xpm[] = {
-"22 22 4 1",
-" c None s backgroundToolBarColor",
-". c #82077DF77DF7",
-"X c #000000000000",
-"o c #FFFFFFFFFFFF",
-" ",
-" ",
-" ",
-" ",
-" .XXX. ",
-" .ooo.X ",
-" ..oXXXo.. ",
-" XoX...XoX ",
-" XoX. XoX. ",
-" XoX. XoX. ",
-" XXXXXXXXXXX ",
-" X X. ",
-" X ....... X. ",
-" X ooooooo X. ",
-" X ....... X. ",
-" X X. ",
-" XXXXXXXXXXX. ",
-" ........... ",
-" ",
-" ",
-" ",
-" "};
+++ /dev/null
-#define irchat-pointer_width 18
-#define irchat-pointer_height 13
-static unsigned char irchat-pointer_bits[] = {
- 0x00, 0x00, 0xfc, 0x00, 0x70, 0xfc, 0x00, 0x70, 0xfc, 0x00, 0xbc, 0xfc,
- 0x00, 0x3f, 0xfc, 0x00, 0x06, 0xfc, 0x40, 0x03, 0xfc, 0x88, 0x00, 0xfc,
- 0xfc, 0x00, 0xfd, 0xf2, 0x83, 0xfd, 0x94, 0xff, 0xfc, 0x00, 0x3e, 0xfc,
- 0x00, 0x00, 0xfc};
+++ /dev/null
-/* XPM */
-static char * irchat_pointer_xpm[] = {
-"18 13 58 1",
-" c None",
-". c #943D51",
-"+ c #8F243B",
-"@ c #943E51",
-"# c #84132C",
-"$ c #6A031A",
-"% c #99364C",
-"& c #9B3D52",
-"* c #8E1731",
-"= c #72031C",
-"- c #670319",
-"; c #993E52",
-"> c #AC324D",
-", c #981632",
-"' c #81041F",
-") c #77031D",
-"! c #82162E",
-"~ c #9A3D51",
-"{ c #951834",
-"] c #9E3C52",
-"^ c #A73750",
-"/ c #973D51",
-"( c #A73E55",
-"_ c #AB2B47",
-": c #9A1130",
-"< c #8B0422",
-"[ c #8F0F2A",
-"} c #9F2B44",
-"| c #89384A",
-"1 c #943F51",
-"2 c #A74056",
-"3 c #A2364E",
-"4 c #88112A",
-"5 c #76031D",
-"6 c #750820",
-"7 c #993248",
-"8 c #923D50",
-"9 c #933F52",
-"0 c #954154",
-"a c #9F4156",
-"b c #A04156",
-"c c #9F4256",
-"d c #9D3C51",
-"e c #7E172E",
-"f c #5F0317",
-"g c #590316",
-"h c #70192C",
-"i c #8C3146",
-"j c #92394D",
-"k c #8F394C",
-"l c #7F3041",
-"m c #923E51",
-"n c #983E51",
-"o c #8E3045",
-"p c #701D30",
-"q c #66192A",
-"r c #772839",
-"s c #8F3A4D",
-" ",
-" .+@ ",
-" #$% ",
-" &*=-; ",
-" >,')!~ ",
-" {] ",
-" ^/ ",
-" ( ",
-" _:<[}| 1 ",
-" 2 345678 90 ",
-" abc defghijklm ",
-" nopqrs ",
-" "};
+++ /dev/null
-/* XPM */
-static char *location[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooniiigoooooooooooooooo",
-"ooooooonuoigoooooooooooooooo",
-"ooooooonogigoooooooooooooooo",
-"oooooonoggi.oooooooooooooooo",
-"ooooonogggi.oooooooooooooooo",
-"oooonogiggi.oooooooooooooooo",
-"ooonoiigggi.oooooooooooooooo",
-"oonunigig.igggiiiiiiiooooooo",
-"oonuniigg.noooooooooogoooooo",
-"oonunigi.iinnnnnnnnnnogooooo",
-"oonuiii.niinnnnnnnnnnngooooo",
-"ooigg..ioiinnnnnnnnnnngooooo",
-"oooooooioiinnnnnnnnnngoooooo",
-"oooooooioigggggggggggooooooo",
-"oooooooioig.oooooooooooooooo",
-"oooooooioiggligigiiiillooooo",
-"oooooooioiggigigigillloooooo",
-"oooooooioigglilooooooooooooo",
-"oooooooioigllooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *naruto_blank_xpm[] = {
-/* width height num_colors chars_per_pixel */
-" 16 16 2 1",
-/* colors */
-". c #000000",
-"# c None",
-/* pixels */
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################",
-"################"
-};
+++ /dev/null
-/* XPM */
-static char *naruto_gray_xpm[] = {
-/* width height num_colors chars_per_pixel */
-" 16 16 4 1",
-/* colors */
-". c None",
-"# c #fffab5",
-"a c #8e8e8e",
-"b c #000000",
-/* pixels */
-".......#####....",
-".......#####....",
-"......#aaaab##..",
-"......#aaaab##..",
-"...####aaaab###.",
-"...####aaaab###.",
-"###aaaaaaaaaaaa#",
-"###aaaaaaaaaaaa#",
-"...####aaaab###.",
-"...####aaaab###.",
-"......#aaaab##..",
-"......#aaaab##..",
-"......#aaaab##..",
-"......#aaaab##..",
-"......#aaaab##..",
-"......#aaaab##.."
-};
+++ /dev/null
-/* XPM */
-static char * naruto_red_xpm[] = {
-"16 16 97 2",
-" c None",
-". c #0F0F0F",
-"+ c #363636",
-"@ c #434343",
-"# c #232323",
-"$ c #000000",
-"% c #333333",
-"& c #EAEAEA",
-"* c #4A4A4A",
-"= c #555555",
-"- c #212121",
-"; c #393939",
-"> c #F6F6F6",
-", c #FFFFFF",
-"' c #E7E7E7",
-") c #F3F3F3",
-"! c #FFFAFA",
-"~ c #F0EAEA",
-"{ c #D1D1D1",
-"] c #444444",
-"^ c #7A7A7A",
-"/ c #FFFCFC",
-"( c #FFC2C2",
-"_ c #FFA3A3",
-": c #FFAAAA",
-"< c #FFC6C6",
-"[ c #E4E4E4",
-"} c #030303",
-"| c #565656",
-"1 c #E4E2E2",
-"2 c #FFD4D4",
-"3 c #B9B9B9",
-"4 c #0D0D0D",
-"5 c #AEAEAE",
-"6 c #FFC8C8",
-"7 c #FFCDCD",
-"8 c #5E5E5E",
-"9 c #929292",
-"0 c #FDF9F9",
-"a c #FFA1A1",
-"b c #FFFEFE",
-"c c #FFD7D7",
-"d c #FFCCCC",
-"e c #FFF8F8",
-"f c #B5B5B5",
-"g c #141414",
-"h c #7E6161",
-"i c #FFD1D1",
-"j c #FFB9B9",
-"k c #FFD3D3",
-"l c #FFA2A2",
-"m c #DFDFDF",
-"n c #818181",
-"o c #101010",
-"p c #E2C7C7",
-"q c #FFBFBF",
-"r c #FFEAEA",
-"s c #FFF9F9",
-"t c #FFCECE",
-"u c #525252",
-"v c #ACACAC",
-"w c #FFFDFD",
-"x c #FFA0A0",
-"y c #9E9E9E",
-"z c #606060",
-"A c #FFE0E0",
-"B c #FFA7A7",
-"C c #FFF3F3",
-"D c #FFDADA",
-"E c #FEFEFE",
-"F c #323232",
-"G c #020202",
-"H c #282828",
-"I c #656565",
-"J c #FFE9E9",
-"K c #FFC3C3",
-"L c #FFF7F7",
-"M c #ABABAB",
-"N c #1F1F1F",
-"O c #898989",
-"P c #383838",
-"Q c #999999",
-"R c #B3B3B3",
-"S c #040404",
-"T c #2B2B2B",
-"U c #FBFBFB",
-"V c #7B7B7B",
-"W c #070707",
-"X c #CDCDCD",
-"Y c #DDDDDD",
-"Z c #0C0C0C",
-"` c #191919",
-" . c #C7C7C7",
-".. c #2D2D2D",
-"+. c #1B1B1B",
-"@. c #DEDEDE",
-"#. c #131313",
-" . ",
-" + @ # $ % & * # = - ",
-" ; > , ' ) ! ~ { , , ] ",
-" ^ / ( _ : : < , [ } ",
-" | 1 : 2 , , , , , 3 } ",
-"4 5 , 6 7 , , , , , , , ' 8 ",
-" 9 0 a b , b c d e , , , , f g ",
-" h ( , , i j k l ! , , m n . ",
-" o p q , , r s , t i , u ",
-" v w x ! , , , , t i , y ",
-"z , , A B C , w D _ ! , E F ",
-"G H I , J B _ _ K L , , , M ",
-" N , , , > , , , O P Q R S ",
-" T , U V W X , Y Z ",
-" ` ... +.@.; ",
-" S #. "};
+++ /dev/null
-/* XPM */
-static char *pindown[] = {
-/* width height num_colors chars_per_pixel */
-" 16 16 4 1",
-/* colors */
-". c #000000",
-"# c #c0c0c0",
-"a c #ffffff s backgroundToolBarColor",
-"b c #808080",
-/* pixels */
-"aaaaaaaaaaaaaaaa",
-"aaaaaaaaaaaaaaaa",
-"aaaaaaaa....aaaa",
-"aaaaaa..#a#a.aaa",
-"aaaa...#a#a#b.aa",
-"aaaa.a.a#a#ab.aa",
-"aaa.a#.#a#ab..aa",
-"aaa.#a.b#abb..aa",
-"aaa.b#b......aaa",
-"aaa.bbbbb....aaa",
-"aaaa.bbb....baaa",
-"aaaa.......baaaa",
-"aaa.bb...bbaaaaa",
-"aaaaaaaaaaaaaaaa",
-"aaaaaaaaaaaaaaaa",
-"aaaaaaaaaaaaaaaa"
-};
+++ /dev/null
-/* XPM */
-static char *print[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooouuuuuuuuulooooooooo",
-"ooooooooouuuouououlooooooooo",
-"ooooooooouuuuououulooooooooo",
-"ooooooooouuuuuuuuulooooooooo",
-"ooooooooouuuuuuuuulggingoooo",
-"ooooooooouoooooooolgingooooo",
-"oooooooooououououlgingoooooo",
-"ooooooonououououoliggooooooo",
-"oooooiinnniiiiiiiiiiggiooooo",
-"ooooiuuoouonniiinniggiiooooo",
-"ooooiooooouuuuoniiggigiooooo",
-"ooooionooooooooooogggiiglooo",
-"ooooionnnnnnnnnnnngggigfggoo",
-"ooooionnononononnnggiggfgloo",
-"ooooiinononononecnggggfglooo",
-"ooooolliiiiiiiiinngggfgloooo",
-"oooooooooolliigggggffglooooo",
-"oooooooooooooooolgfgoooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *reload[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooiiiiiiiigooooooooooo",
-"oooooooiuininiif#ggooooooooo",
-"ooooooiunnnnnifff#ggoooooooo",
-"ooiuoooononononnniffgooooooo",
-"oooiuoonononononfffggooooooo",
-"ooooiuoononononfg##ggooooooo",
-"oooooiuooooooifg###ggooooooo",
-"ooooooiuooooifg####ggooooooo",
-"oooooooiuooifgi####ggooooooo",
-"ooooooooiuifgoi####ggooooooo",
-"ooooooooogggooi###fggooooooo",
-"ooooooooooooooi###fggolooooo",
-"oooooooooooooonn#ffggolloooo",
-"oooooonnnnnnnnnif#fggllloooo",
-"oooooonnnnnnnnnifffggiiooooo",
-"oooooonininininiifgigilooooo",
-"ooooooniiiiiiiiiiiigillooooo",
-"oooooooniiggggg#gggilloooooo",
-"oooooooooolllllllllllooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *search[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooooooooouououoooooooo",
-"oooooooooooooouououououooooo",
-"ooooooooooooououuuuuuuouoooo",
-"oooooooooooououuuuuuuottoooo",
-"ooooooooooooouuuutuuuttouooo",
-"oooooooooooouooootttutouoooo",
-"ooooooooooooniiiintttuuouooo",
-"ooooooooooooinoiifntuuuuoooo",
-"oooooooooooinoniigfotutouooo",
-"ooooooooggofiiiggigoutuuoooo",
-"ooooooofoiiooggggigottouoooo",
-"oooooooiinoongfgfgiouououooo",
-"ooooooinooniigffgiluououoooo",
-"ooooiiooniiigfillloonlnlnooo",
-"oooinoniiigfiooooonilllllooo",
-"oooggiiigfiooooniiiiiillnooo",
-"oooiggigillonliiillnoooooooo",
-"ooonfgflllllllnooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-/* XPM */
-static char *stop[] = {
-/* width height num_colors chars_per_pixel */
-" 28 28 23 1",
-/* colors */
-". c #000000",
-"# c #000080",
-"a c #0000f8",
-"b c #003438",
-"c c #008000",
-"d c #008080",
-"e c #00fc00",
-"f c #202020",
-"g c #303060",
-"h c #4098a0",
-"i c #6064c8",
-"j c #800000",
-"k c #808000",
-"l c #808080",
-"m c #980060",
-"n c #9898f8",
-"o c #b2b2b2 s backgroundToolBarColor",
-"p c #e8e8e8",
-"q c #f80000",
-"r c #f86430",
-"s c #f864c8",
-"t c #f8fc00",
-"u c #f8fcf8",
-/* pixels */
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"ooooooooiiiiiiiiiiiloooooooo",
-"ooooooonllnlnlnlnligoooooooo",
-"ooooogninnlg.glolol...gooooo",
-"ooooogoioljjjj.lnogli.gooooo",
-"oooooogiojjqjjg.loli.j.ooooo",
-"oooooogiooqqqjg.noiojjoooooo",
-"oooooooioooqqjg.lolgjjoooooo",
-"oooooooionoqjf.fnoigojoooooo",
-"oooooglionnffffilogggggooooo",
-"ooooognion....ignoili.gooooo",
-"oooooogiolggiiggloli.ggooooo",
-"oooooooio.llggggnoioggoooooo",
-"oooooooio.llggfllolgggoooooo",
-"ooooognionlggggnlolggg.ooooo",
-"ooooogniol....flnogli.gooooo",
-"ooooolgio.ffff.gloii.ggooooo",
-"oooooogio.gggfg.noilggoooooo",
-"oooooooiooggfgf.loiggglllooo",
-"oooooooinnnfffglnliflllloooo",
-"ooooooooogggiiiiigi.lllooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo",
-"oooooooooooooooooooooooooooo"
-};
+++ /dev/null
-# Copyright (C) 1998 Free Software Foundation, Inc.
-# Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>, 1998.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Liece 1.2.8\n"
-"PO-Revision-Date: 1998-12-30 18:09 +0900\n"
-"Last-Translator: Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>\n"
-"Language-Team: Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-japan\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "IRC error: %s"
-msgstr "IRC ¥¨¥é¡¼: %s"
-
-msgid "%s is now known as %s\n"
-msgstr "%s ¤Ï %s ¤Ë¥Ë¥Ã¥¯¤òÊѹ¹¤·¤Þ¤·¤¿\n"
-
-msgid "IRCHAT: A private message has arrived from %s"
-msgstr "IRCHAT: %s ¤«¤é¥×¥é¥¤¥Ù¡¼¥È¥á¥Ã¥»¡¼¥¸¤¬ÅþÃ夷¤Þ¤·¤¿"
-
-msgid " (has|have) left IRC%s"
-msgstr " ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s"
-
-msgid "%s has left IRC%s\n"
-msgstr "%s ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s\n"
-
-msgid ", %s have left IRC%s"
-msgstr "¡¢%s ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s"
-
-msgid "New topic on channel %s set by %s: %s\n"
-msgstr "¥Á¥ã¥ó¥Í¥ë %s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥È¥Ô¥Ã¥¯¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: %s\n"
-
-msgid "^%s%sNew mode for %s set by %s: "
-msgstr "^%s%s %s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: "
-
-msgid "New mode for %s set by %s: %s\n"
-msgstr "%s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: %s\n"
-
-msgid "You were kicked off channel %s by %s (%s).\n"
-msgstr "¤¢¤Ê¤¿¤Ï¥Á¥ã¥ó¥Í¥ë %s ¤«¤é %s ¤Ë¤è¤ê½³¤ê½Ð¤µ¤ì¤Þ¤·¤¿: (%s)\n"
-
-msgid "%s has come back as (%s)\n"
-msgstr "%s ¤Ï (%s) ¤È¤·¤Æµ¢¤Ã¤ÆÍè¤Þ¤·¤¿\n"
-
-msgid " (has|have) joined channel %s"
-msgstr " ¤¬ ¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿"
-
-msgid "%s (%s) has joined channel %s\n"
-msgstr "%s (%s) ¤¬¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿\n"
-
-msgid ", %s (%s) have joined channel %s"
-msgstr "¡¢%s (%s) ¤¬¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿"
-
-msgid " (has|have) left channel %s"
-msgstr " ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿"
-
-msgid "%s has left channel %s\n"
-msgstr "%s ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿\n"
-
-msgid ", %s have left channel %s"
-msgstr "¡¢%s ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿"
-
-msgid "%s is now known as %s\n"
-msgstr "%s ¤Ï %s ¤Ë¥Ë¥Ã¥¯¤òÊѹ¹¤·¤Þ¤·¤¿\n"
-
-msgid " \\(has\\|have\\) left IRC%s"
-msgstr " ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s"
-
-msgid "%s has left IRC%s\n"
-msgstr "%s ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s\n"
-
-msgid "%s%s has left IRC%s\n"
-msgstr "%s%s ¤Ï IRC ¤«¤éÎ¥¤ì¤Þ¤·¤¿ %s\n"
-
-msgid "New topic on channel %s set by %s: %s\n"
-msgstr "¥Á¥ã¥ó¥Í¥ë %s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥È¥Ô¥Ã¥¯¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: %s\n"
-
-msgid "New mode for %s set by %s: %s\n"
-msgstr "¥Á¥ã¥ó¥Í¥ë %s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: %s\n"
-
-msgid "%sNew mode for %s set by %s: %s\n"
-msgstr "%s¥Á¥ã¥ó¥Í¥ë %s ¤Ë %s ¤Ë¤è¤ê¿·¤·¤¤¥â¡¼¥É¤¬ÀßÄꤵ¤ì¤Þ¤·¤¿: %s\n"
-
-msgid "You were kicked off channel %s by %s (%s).\n"
-msgstr "¤¢¤Ê¤¿¤Ï¥Á¥ã¥ó¥Í¥ë %s ¤«¤é %s ¤Ë¤è¤ê½³¤ê½Ð¤µ¤ì¤Þ¤·¤¿: (%s)\n"
-
-msgid "%s has come back as (%s)\n"
-msgstr "%s ¤Ï (%s) ¤È¤·¤Æµ¢¤Ã¤ÆÍè¤Þ¤·¤¿\n"
-
-msgid " \\(has\\|have\\) joined channel %s"
-msgstr " ¤¬ ¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿"
-
-msgid "%s (%s) has joined channel %s\n"
-msgstr "%s (%s) ¤¬¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿\n"
-
-msgid "%s%s (%s) has joined channel %s\n"
-msgstr "%s%s (%s) ¤¬¥Á¥ã¥ó¥Í¥ë %s ¤Ë»²²Ã¤·¤Þ¤·¤¿\n"
-
-msgid " \\(has\\|have\\) left channel %s"
-msgstr " ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿"
-
-msgid "%s has left channel %s\n"
-msgstr "%s ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿\n"
-
-msgid "%s%s has left channel %s\n"
-msgstr "%s%s ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤«¤éÎ¥¤ì¤Þ¤·¤¿\n"
-
-msgid "Quit IRCHAT? "
-msgstr "Liece ¤ò½ªÎ»¤·¤Þ¤¹¤«¡©"
-
-msgid "Start private conversation with: "
-msgstr "²ñÏäò»Ï¤á¤ëÁê¼ê: "
-
-msgid "Join channel: "
-msgstr "»²²Ã¤¹¤ë¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "Key for channel %s: "
-msgstr "¥Á¥ã¥ó¥Í¥ë %s ¤Î¥¡¼: "
-
-msgid "End private conversation with: "
-msgstr "²ñÏäò½ªÎ»¤¹¤ëÁê¼ê: "
-
-msgid "Part channel: "
-msgstr "Î¥¤ì¤ë¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "Part Message: "
-msgstr "Υæ¥á¥Ã¥»¡¼¥¸: "
-
-msgid "Ignore nickname or regexp: "
-msgstr "̵»ë¤¹¤ë¥Ë¥Ã¥¯¥Í¡¼¥à¤â¤·¤¯¤ÏÀµµ¬É½¸½: "
-
-msgid "Currently ignoring:"
-msgstr "¸½ºß¤Î̵»ë¥ê¥¹¥È:"
-
-msgid " (%d min)"
-msgstr " (%d ÉÃ)"
-
-msgid " expired"
-msgstr "´ü¸ÂÀÚ¤ì"
-
-msgid "No longer ignoring: %s.\n"
-msgstr "%s ¤ò¤â¤Ï¤ä̵»ë¤·¤Þ¤»¤ó\n"
-
-msgid "Ignoring %s"
-msgstr "%s ¤ò̵»ë¤·¤Æ¤¤¤Þ¤¹"
-
-msgid "To whom: "
-msgstr "ï¤Ë: "
-
-msgid "Send file"
-msgstr "¥Õ¥¡¥¤¥ë¤òÁ÷¿®"
-
-msgid "Receive file"
-msgstr "¥Õ¥¡¥¤¥ë¤ò¼õ¿®"
-
-msgid "Send chat request"
-msgstr "DCC CHATÍ×µá"
-
-msgid "Accept chat request"
-msgstr "DCC CHAT³«»Ï"
-
-msgid "List DCC request"
-msgstr "DCCÍ×µá°ìÍ÷"
-
-msgid "Dispatch stacked DCC requests"
-msgstr "DCCÍ×µá¤ò¾å¤«¤é½ç¤Ë½èÍý"
-
-msgid "Toggle crypt mode"
-msgstr "°Å¹æ²½ on/off"
-
-msgid "Set default key for this channel"
-msgstr "ÈëÌ©¸°¤ÎÀßÄê"
-
-msgid "Add new key to keyring"
-msgstr "ÈëÌ©¸°¤ÎÄɲÃ"
-
-msgid "Remove key from keyring"
-msgstr "ÈëÌ©¸°¤Îºï½ü"
-
-msgid "Toggle private conversation"
-msgstr "1ÂÐ1ÂÐÏÃ"
-
-msgid "Start IsON timer"
-msgstr "IsON¥¿¥¤¥Þ³«»Ï"
-
-msgid "Cancel IsON timer"
-msgstr "IsON¥¿¥¤¥Þºï½ü"
-
-msgid "Display userhost"
-msgstr "¥Û¥¹¥È̾¤Îɽ¼¨"
-
-msgid "Ignore nicks / regexp"
-msgstr "¥Ë¥Ã¥¯/Àµµ¬É½¸½¤ò̵»ë"
-
-msgid "Compose mail"
-msgstr "¥á¥¤¥ë¤ÎºîÀ®"
-
-msgid "Join channel"
-msgstr "»²²Ã"
-
-msgid "Part channel"
-msgstr "Υæ"
-
-msgid "Go to next channel"
-msgstr "¼¡¤Î¥Á¥ã¥ó¥Í¥ë"
-
-msgid "Go to previous channel"
-msgstr "Á°¤Î¥Á¥ã¥ó¥Í¥ë"
-
-msgid "Rotate left channels"
-msgstr "¥Á¥ã¥ó¥Í¥ë¥ê¥¹¥È¤òº¸²ó¤ê¤Ë²óž"
-
-msgid "Rotate right channels"
-msgstr "¥Á¥ã¥ó¥Í¥ë¥ê¥¹¥È¤ò±¦²ó¤ê¤Ë²óž"
-
-msgid "Invite to this channel"
-msgstr "¤³¤Î¥Á¥ã¥ó¥Í¥ë¤Ë¾·ÂÔ"
-
-msgid "Kick out from this channel"
-msgstr "¤³¤Î¥Á¥ã¥ó¥Í¥ë¤«¤é½³¤ê½Ð¤¹"
-
-msgid "Set mode of this channel"
-msgstr "¥â¡¼¥É¤ÎÀßÄê"
-
-msgid "Set topic of this channel"
-msgstr "¥È¥Ô¥Ã¥¯¤ÎÀßÄê"
-
-msgid "List channel"
-msgstr "¥Á¥ã¥ó¥Í¥ë°ìÍ÷"
-
-msgid "Display names of channel"
-msgstr "¥á¥ó¥Ð¤Îɽ¼¨(¥Ë¥Ã¥¯¤Î¤ß)"
-
-msgid "Display who are on the channel"
-msgstr "¥á¥ó¥Ð¤Îɽ¼¨"
-
-msgid "Toggle crypt mode"
-msgstr "°Å¹æ²½ on/off"
-
-msgid "Set default key of this channel"
-msgstr "ÈëÌ©¸°¤ÎÀßÄê"
-
-msgid "Request X-Face"
-msgstr "X-Face¤òÍ×µá"
-
-msgid "Set my X-Face"
-msgstr "¼«Ê¬¤ÎX-Face¤òÀßÄê"
-
-msgid "Strange %s reply"
-msgstr "´ñ̯¤Ê %s ±þÅú¤Ç¤¹"
-
-msgid "Welcome to the Internet Relay Chat world. Your nick is %s.\n"
-msgstr "¤è¤¦¤³¤½ Internet Relay Chat ¤ÎÀ¤³¦¤Ø¡£¤¢¤Ê¤¿¤Î¥Ë¥Ã¥¯¤Ï %s ¤Ç¤¹\n"
-
-msgid "Your server is %s (version %s).\n"
-msgstr "¥µ¡¼¥Ð¤Ï %s (¥Ð¡¼¥¸¥ç¥ó %s) ¤Ç¤¹\n"
-
-msgid "Your client version is %s.\n"
-msgstr "¥¯¥é¥¤¥¢¥ó¥È¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï %s ¤Ç¤¹\n"
-
-msgid "Your server was created %s\n"
-msgstr "¥µ¡¼¥Ð¤Ï %s ¤ËºîÀ®¤µ¤ì¤Þ¤·¤¿\n"
-
-msgid "%s Trying to connect to %s (class %s)\n"
-msgstr "%s %s (¥¯¥é¥¹ %s) ¤ËÀܳ¤ò»î¤ß¤Æ¤¤¤Þ¤¹\n"
-
-msgid "%s Handshaking with %s (class: %s)\n"
-msgstr "%s %s (¥¯¥é¥¹ %s) ¤È°®¼ê¤ò¤·¤Æ¤¤¤Þ¤¹\n"
-
-msgid "Mode for you is %s\n"
-msgstr "¤¢¤Ê¤¿¤Î¥â¡¼¥É¤Ï %s ¤Ç¤¹\n"
-
-msgid "Channels: %s\n"
-msgstr "¥Á¥ã¥ó¥Í¥ë: %s\n"
-
-msgid "Channel"
-msgstr "¥Á¥ã¥ó¥Í¥ë"
-
-msgid "Users"
-msgstr "¥æ¡¼¥¶¿ô"
-
-msgid "Topic"
-msgstr "¥È¥Ô¥Ã¥¯"
-
-msgid "Mode for %s is %s\n"
-msgstr "%s ¤Î¥â¡¼¥É¤Ï %s ¤Ç¤¹\n"
-
-msgid "No topic is set\n"
-msgstr "¥È¥Ô¥Ã¥¯¤ÏÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó\n"
-
-msgid "Topic: %s\n"
-msgstr "¥È¥Ô¥Ã¥¯: %s\n"
-
-msgid "Topic for %s: %s\n"
-msgstr "%s ¤Î¥È¥Ô¥Ã¥¯¤Ï: %s\n"
-
-msgid "Inviting user %s\n"
-msgstr "¥æ¡¼¥¶ %s ¤ò¾·ÂÔ¤·¤Æ¤¤¤Þ¤¹\n"
-
-msgid "Inviting user %s to channel %s\n"
-msgstr "¥æ¡¼¥¶ %s ¤ò¥Á¥ã¥ó¥Í¥ë %s ¤Ë¾·ÂÔ¤·¤Æ¤¤¤Þ¤¹\n"
-
-msgid "Machine %s is running IRC version %s (%s)\n"
-msgstr "¥Û¥¹¥È %s ¤Ç¤Ï¥Ð¡¼¥¸¥ç¥ó %s (%s) ¤ÎIRC¥µ¡¼¥Ð¤¬Æ°¤¤¤Æ¤¤¤Þ¤¹\n"
-
-msgid "You just KILLED %s. %s\n"
-msgstr "¤¢¤Ê¤¿¤Ï¤¿¤Ã¤¿º£ %s ¤òKILL¤·¤Þ¤·¤¿ (%s)\n"
-
-msgid "%s has been banned on %s\n"
-msgstr "%s ¤Ï ¥Á¥ã¥ó¥Í¥ë %s ¤Ç ban ¤µ¤ì¤Æ¤¤¤Þ¤¹\n"
-
-msgid "Server time: %s\n"
-msgstr "¥µ¡¼¥Ð¤Î»þ´Ö: %s\n"
-
-msgid "No such user %s"
-msgstr "¥æ¡¼¥¶ %s ¤Ï¸ºß¤·¤Þ¤»¤ó"
-
-msgid "No text to send"
-msgstr "Á÷¤ë¤Ù¤Ê¸¾Ï¤¬¤¢¤ê¤Þ¤»¤ó"
-
-msgid "Erroneous nickname %s. Choose a new one with %s."
-msgstr "%s ¤ÏÉÔÀµ¤Ê¥Ë¥Ã¥¯¤Ç¤¹¡£%s ¤È¥¿¥¤¥×¤·¤Æ ¿·¤·¤¤¥Ë¥Ã¥¯¤òÁª¤ó¤Ç²¼¤µ¤¤"
-
-msgid "Nickname %s already in use. Choose a new one with %."
-msgstr "¥Ë¥Ã¥¯ %s ¤Ï´û¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£%s ¤È¥¿¥¤¥×¤·¤Æ ¿·¤·¤¤¥Ë¥Ã¥¯¤òÁª¤ó¤Ç²¼¤µ¤¤"
-
-msgid "Password incorrect from %s. Try again with password."
-msgstr "%s ¤Î¥Ñ¥¹¥ï¡¼¥É¤¬ÉÔÀµ¤Ç¤¹¡£¥Ñ¥¹¥ï¡¼¥É¤òºÆÅÙÆþÎϤ·¤Æ²¼¤µ¤¤"
-
-msgid "You are not a channel operator"
-msgstr "¤¢¤Ê¤¿¤Ï¥Á¥ã¥ó¥Í¥ë¥ª¥Ú¥ì¡¼¥¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
-
-msgid "Style file load failed."
-msgstr "¥¹¥¿¥¤¥ë¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
-
-msgid "Encrypt message with key [RET for none]: "
-msgstr "¥á¥Ã¥»¡¼¥¸¤ò°Å¹æ²½¤¹¤ë¸°¤òÆþÎϤ·¤Æ²¼¤µ¤¤ [RET for none]: "
-
-msgid "Kick out nickname: "
-msgstr "½³¤ê½Ð¤¹¥Ë¥Ã¥¯: "
-
-msgid "Kick Message: "
-msgstr "Íýͳ: "
-
-msgid "LIST channel: "
-msgstr "LIST ¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "Channel: "
-msgstr "¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "Mode for channel %s [%s]: "
-msgstr "¥Á¥ã¥ó¥Í¥ë %s ¤Î¥â¡¼¥É [%s]: "
-
-msgid "Set Operator for"
-msgstr "¤Ê¤ë¤È¤òÉÕ¤±¤ëÁê¼ê"
-
-msgid "Unset Operator for"
-msgstr "¤Ê¤ë¤È¤ò³°¤¹Áê¼ê"
-
-msgid "Set Voice for"
-msgstr "½½»ú²Í¤òÉÕ¤±¤ëÁê¼ê"
-
-msgid "Unset Voice for"
-msgstr "½½»ú²Í¤ò³°¤¹Áê¼ê"
-
-msgid "Private message to: "
-msgstr "¥×¥é¥¤¥Ù¡¼¥È¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ëÁê¼ê: "
-
-msgid "Private message to %s: "
-msgstr "%s ¤Ø¤Î¥á¥Ã¥»¡¼¥¸: "
-
-msgid "To whom: "
-msgstr "ï¤Ë: "
-
-msgid "Names on channel: "
-msgstr "NAMES¤ò¼è¤ë¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "WHO expression: "
-msgstr "WHOɽ¸½: "
-
-msgid "Wait for: "
-msgstr "ÂÔ¤ÄÁê¼ê: "
-
-msgid "Message to send %s upon entering: "
-msgstr "%s ¤ËÁ÷¤ë¥á¥Ã¥»¡¼¥¸: "
-
-msgid "Finger whom: "
-msgstr "¿È¸µ¤òÄ´¤Ù¤ëÁê¼ê: "
-
-msgid "Invite channel: "
-msgstr "¾·ÂÔ¤¹¤ë¥Á¥ã¥ó¥Í¥ë: "
-
-msgid "Invite whom: "
-msgstr "¾·ÂÔ¤¹¤ëÁê¼ê: "
-
-msgid "Signoff message: "
-msgstr "½ªÎ»¥á¥Ã¥»¡¼¥¸: "
-
-msgid "Whose client: "
-msgstr "ï¤Î¥¯¥é¥¤¥¢¥ó¥È: "
-
-msgid "What info: "
-msgstr "Á÷¤ëCTCP: "
-
-msgid "New userinfo: "
-msgstr "¿·µ¬¥æ¡¼¥¶¾ðÊó: "
-
-msgid "New X-Face: "
-msgstr "¿·µ¬ X-Face: "
-
-msgid "Really SEND from Yank Buffer?"
-msgstr "ËÜÅö¤Ë¥Ð¥Ã¥Õ¥¡¤ÎÆâÍƤòÁ÷¤ê¤Þ¤¹¤«¡©"
-
-msgid "No unread channel or chat partner."
-msgstr "̤ÆɤΥÁ¥ã¥ó¥Í¥ë¤Þ¤¿¤Ï¥Á¥ã¥Ã¥È¤ÎÁê¼ê¤Ï¤¢¤ê¤Þ¤»¤ó"
-
+++ /dev/null
-;; -*- emacs-lisp -*-
-;;; bottom --- Window configuration style spec for `bottom'.
-;; Copyright (C) 1998 Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; See file liece-copyright.el for original change log and copyright info.
-
-;; Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; Created: 1999-01-08
-;; Revised: 1999-01-08
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . t)
- (channel-list-buffer-mode . t)
- (configuration
- (vertical
- 1.0
- (horizontal
- 1.0
- (others 1.0)
- (channel-list
- liece-channel-list-window-width-percent))
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0)
- (nick liece-nick-window-width-percent))
- (command 4 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . t)
- (configuration
- (vertical
- 1.0
- (horizontal
- 1.0
- (others 1.0)
- (channel-list
- liece-channel-list-window-width-percent))
- (channel liece-channel-window-height-percent)
- (command 4 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . t)
- (channel-list-buffer-mode . nil)
- (configuration
- (vertical
- 1.0
- (others 1.0)
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0)
- (nick liece-nick-window-width-percent))
- (command 4 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . nil)
- (configuration
- (vertical
- 1.0
- (others 1.0)
- (channel liece-channel-window-height-percent)
- (command 4 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . nil)
- (nick-buffer-mode . any)
- (channel-list-buffer-mode . any)
- (configuration
- (vertical
- 1.0
- (dialogue 1.0)
- (command 4 point))))
+++ /dev/null
-;; -*- emacs-lisp -*-
-;;; middle --- Window configuration style spec for `middle'.
-;; Copyright (C) 1998 Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; See file liece-copyright.el for original change log and copyright info.
-
-;; Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; Created: 1999-01-08
-;; Revised: 1999-01-08
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . t)
- (channel-list-buffer-mode . t)
- (configuration
- (horizontal
- 1.0
- (vertical
- 1.0
- (channel liece-channel-window-height-percent)
- (command 3 point)
- (others 1.0))
- (vertical
- liece-nick-window-width-percent
- (nick 0.5)
- (channel-list 1.0)))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . t)
- (configuration
- (vertical
- 1.0
- (horizontal
- 1.0
- (others 1.0)
- (channel-list
- liece-channel-list-window-width-percent))
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0))
- (command 3 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . nil)
- (configuration
- (vertical
- 1.0
- (others 1.0)
- (channel liece-channel-window-height-percent)
- (command 3 point))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . nil)
- (nick-buffer-mode . any)
- (channel-list-buffer-mode . any)
- (configuration
- (vertical
- 1.0
- (dialogue 1.0)
- (command 3 point))))
+++ /dev/null
-;;; top --- Window configuration style spec for `top'. -*- emacs-lisp -*-
-;; Copyright (C) 1998 Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; See file liece-copyright.el for original change log and copyright info.
-
-;; Author: Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-;; Created: 1999-01-08
-;; Revised: 1999-01-08
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . t)
- (channel-list-buffer-mode . t)
- (configuration
- (vertical
- 1.0
- (command 4 point)
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0)
- (nick liece-nick-window-width-percent))
- (horizontal
- 1.0
- (others 1.0)
- (channel-list
- liece-channel-list-window-width-percent)))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . t)
- (configuration
- (vertical
- 1.0
- (command 4 point)
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0))
- (horizontal
- 1.0
- (others 1.0)
- (channel-list
- liece-channel-list-window-width-percent)))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . t)
- (channel-list-buffer-mode . nil)
- (configuration
- (vertical
- 1.0
- (command 4 point)
- (horizontal
- liece-channel-window-height-percent
- (channel 1.0)
- (nick liece-nick-window-width-percent))
- (others 1.0))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . t)
- (nick-buffer-mode . nil)
- (channel-list-buffer-mode . nil)
- (configuration
- (vertical
- 1.0
- (command 4 point)
- (channel liece-channel-window-height-percent)
- (others 1.0))))
-
-(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . nil)
- (nick-buffer-mode . any)
- (channel-list-buffer-mode . any)
- (configuration
- (vertical
- 1.0
- (command 4 point)
- (dialogue 1.0))))
-
+++ /dev/null
-Makefile.in
-liece-setup.el
+++ /dev/null
-2000-09-17 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-menu.el (liece-menu-channel-menu): Move `liece-command-freeze'
- from `liece-menu-IRC-menu'.
- (liece-menu-channel-menu): Move `liece-command-own-freeze'
- from 'liece-menu-IRC-menu'.
- (liece-menu-channel-menu): New menu item `liece-dialogue-beep'.
-
-2000-09-17 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-channel.el (liece-channel-read-functions): Rename from
- `liece-channel-read-hook'.
-
- * liece-handle.el (liece-channel-unread-functions): Rename from
- `liece-channel-unread-hook'.
-
- * liece-emacs.el (toplevel): Use them.
-
- * liece-xemacs.el (toplevel): Ditto.
-
-2000-09-17 Daiki Ueno <ueno@unixuser.org>
-
- * liece-make.el (make-liece-sample-files): Abolish.
- (make-liece-info-files): Abolish.
-
- * liece-url.el (liece-add-url-functions): Rename from `liece-url-add-hook'.
-
- * liece.el (liece-after-insert-functions): Rename from `liece-insert-hook'.
- (liece-before-insert-functions): Rename from `liece-before-insert-hook'.
-
- * liece-handle.el (liece-notice-cleartext-hook): Abolish.
- (liece-privmsg-cleartext-hook): Abolish.
-
- * liece-filter.el (liece-handle-message): Simplify.
-
- * liece-ctcp.el (liece-ctcp-message): Don't ignore errors in hooks.
- (liece-ctcp-notice): Ditto.
- (liece-ctcp-file-notice): Ditto.
-
- * liece-channel.el (liece-channel-add-mode): Don't use pushnew.
- (liece-channel-add-exception): Ditto.
- (liece-channel-add-invite): Ditto.
-
-2000-09-12 Daiki Ueno <ueno@unixuser.org>
-
- * liece-vars.el (liece-inhibit-startup-message): New user option.
-
-2000-09-11 Daiki Ueno <ueno@unixuser.org>
-
- * liece-xemacs.el (liece-xemacs-splash-at-point): Don't check `console-type'.
- (liece-x-face-insert-with-xemacs): Ditto.
-
-2000-09-11 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-emacs.el (liece-emacs-unread-character): Abolish.
-
- * liece-vars.el (liece-channel-unread-character): New variable.
-
- * liece-xemacs.el (liece-xemacs-unread-mark): Simplify; Don't use
- `featurep' and `console-type'.
- (toplevel): Ditto.
-
-2000-09-11 Daiki Ueno <ueno@unixuser.org>
-
- * liece-minibuf.el: Autoload `completing-read-multiple'; declare
- `crm-separator'.
- (liece-minibuffer-completing-read): Rename from
- `liece-minibuffer-completing-default-read'; accept optional arguments
- `history' and `default'.
- (liece-minibuffer-completion-separator): New variable.
- (liece-minibuffer-completion-table): New variable.
- (liece-minibuffer-completing-read-multiple-1): New completion function.
- (liece-minibuffer-completing-read-multiple): Rename from
- `liece-minibuffer-completing-sequential-read'; accept optional
- arguments `history' and `default'; use `completing-read-multiple'
- when optional 8th argument `multiple-candidate' is specified.
-
- * liece-xemacs.el (liece-xemacs-redisplay-unread-mark): Don't bind `chnl'.
-
-2000-09-11 Daiki Ueno <ueno@unixuser.org>
-
- * liece-commands.el (liece-command-quit): Don't send QUIT.
-
- * liece-emacs.el (liece-emacs-splash): Use `generate-new-buffer'
- instead of `liece-get-buffer-create'
-
- * liece-xemacs.el (liece-xemacs-splash): Synch with liece-emacs.el
-
- * liece.el (liece-clear-system): Call
- `liece-buffer-dispose-function' instead of burying buffer.
- (liece-open-server-internal): Simplify; Don't use
- `liece-get-buffer-create' to prepare process-buffer.
- (liece-close-server): Accept optional argument `quit-string'.
-
- * liece-vars.el (liece-buffer-dispose-function): New variable.
-
-2000-09-10 Daiki Ueno <ueno@unixuser.org>
-
- * liece-inlines.el (string-list-remove-ignore-case): Remove car of the element.
- (string-list-delete-ignore-case): Ditto.
- (string-list-remove): Ditto.
- (string-list-delete): Ditto.
-
-2000-09-06 Daiki Ueno <ueno@unixuser.org>
-
- * liece-clfns.el (remq): New compiler macro.
-
-2000-09-05 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-channel.el (liece-channel-redisplay-buffer): New hook
- `liece-channel-read-hook'.
- (liece-channel-change): Run `liece-redisplay-unread-mark'.
-
- * liece-handle.el (liece-handle-privmsg-message): New hook
- `liece-channel-unread-hook'.
-
- * liece-vars.el (liece-display-unread-mark): New variable.
-
- * liece-xemacs.el (liece-xemacs-unread-icon): Rename from
- `liece-xemacs-channel-balloon-icon'.
- (liece-xemacs-unread-mark): Rename and simplified from
- `liece-xemacs-channel-balloon'.
- (liece-xemacs-read-mark): Rename and simplified from
- `liece-xemacs-channel-balloon-kill'.
- (liece-xemacs-redisplay-unread-mark): New function.
- (toplevel): Add them to hook.
-
- * liece-emacs.el (liece-emacs-unread-character): New variable.
- (liece-emacs-unread-mark): New function.
- (liece-emacs-read-mark): Ditto.
- (liece-emacs-redisplay-unread-mark): Ditto.
- (toplevel): Add them to hook.
-
-2000-09-04 Daiki Ueno <ueno@unixuser.org>
-
- * liece-inlines.el (string-equal-ignore-case): Check return value
- of `compare-strings'.
-
-2000-09-03 Daiki Ueno <ueno@unixuser.org>
-
- * liece-clfns.el: Require `pym'.
- (liece-clfns-subr-fboundp): New macro.
- (last,member-if,member-if-not,delete-if,remove-if,remove-if-not,
- assoc-if,rassoc-if): Use it.
-
- * liece-inlines.el (string-list-member-ignore-case): Use
- `member-ignore-case'.
- (string-list-remove-ignore-case): Use remq.
- (string-list-member): Abolish.
- (string-list-delete-ignore-case): Use delq.
- (string-equal-ignore-case): Use `compare-strings' if available.
-
-2000-09-01 Daiki Ueno <ueno@unixuser.org>
-
- * liece-channel.el (liece-channel-change): Handle
- `liece-current-chat-partner'.
-
- * Makefile.am (SOURCES): Remove `liece-crypt'.
-
- * liece-crypt.el: Remove.
-
- * liece-400.el (liece-handle-433-message): Use `liece-beep'
- (liece-handle-432-message): Ditto.
-
- * liece-misc.el (liece-beep): New macro.
- (liece-set-beep): Rename from `liece-beep'.
-
- * liece-xemacs.el (liece-xemacs-channel-balloon): Abolish local
- variable `chnl'.
-
- * liece.el: Don't require `liece-crypt'.
- (liece-crypt-map): Abolish.
- (liece-buffer-mode-alist): Remove `liece-CRYPT-buffer'.
- (liece-command-mode-map): Don't bind
- `liece-command-enter-message-opposite-crypt-mode'.
- (liece): Don't initialize crypt indicator.
- (liece-command-mode): Ditto.
- (liece-dialogue-mode): Ditto.
- (liece-channel-mode): Ditto.
-
- * liece-xemacs.el: Don't require `liece-crypt'.
- (liece-toolbar-crypt-active-icon): Abolish.
- (liece-toolbar-crypt-inactive-icon): Abolish.
- (liece-toolbar-crypt-icon): Abolish.
- (liece-toolbar-crypt-glyph): Abolish.
- (liece-toolbar-crypt-active-glyph): Abolish.
- (liece-toolbar-crypt-inactive-glyph): Abolish.
- (liece-toolbar-spec-list): Don't set `liece-toolbar-crypt-glyph'.
- (liece-xemacs-setup-toolbar-hook): Remove `liece-toolbar-setup-crypt-glyph'.
- (liece-toolbar-setup-crypt-glyph): Abolish.
- (liece-toolbar-toggle-crypt): Abolish.
-
- * liece-vars.el (liece-defected-message-prefix): Abolish.
- (liece-suspicious-message-prefix): Abolish.
- (liece-beep-function): New variable.
-
- * liece-message.el (liece-message-brackets-function): Don't handle
- `liece-message-encrypted-p'.
- (liece-message-encrypted-p): Abolish.
- (liece-message-suspicious-p): Abolish.
- (liece-message-garbled-p): Abolish.
- (liece-message-fingerprint): Abolish.
- (liece-message-timestamp): Abolish.
-
- * liece-menu.el (liece-menu-crypt-menu): Abolish.
- (liece-menu-channel-menu): Remove `liece-menu-crypt-menu'.
- (liece-menu-alist): Ditto.
- (liece-menu-crypt-menu-map): Abolish.
-
- * liece-handle.el (liece-handle-notice-message): Don't use
- `with-liece-decryption'.
- (liece-handle-privmsg-message): Ditto.
- Use `liece-beep' instead of `beep'.
-
- * liece-modules.el (liece-modules-to-compile): Remove `liece-crypt'.
-
- * liece-globals.el (liece-crypt-indicator): Abolish.
- (liece-CRYPT-buffer): Abolish.
- (liece-C-buffer): Abolish.
-
- * liece-commands.el: Don't require `liece-crypt'.
- (liece-command-send-message): Abolish optional argument ARG and KEY.
- (liece-command-enter-message): Ditto.
- (liece-command-message): Ditto.
- (liece-enter-message): Abolish.
- (liece-command-part): Don't set crypt indicator.
- (liece-switch-to-channel): Ditto.
- (liece-switch-to-channel-no): Ditto.
- (liece-command-private-conversation): Ditto.
- (liece-command-toggle-crypt): Abolish.
-
-2000-08-31 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-handle.el (liece-handle-privmsg-message): Fixed.
-
-2000-08-30 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-commands.el (liece-command-unread-channel): New function.
-
- * liece.el (liece-command-map): Bind "\C-u" to it.
- (liece-channel-list-mode-map): Bind "u" to it.
-
-2000-08-29 Daiki Ueno <ueno@unixuser.org>
-
- * liece-channel.el (liece-channel-change): Run
- `liece-redisplay-buffer-functions' only when
- `liece-current-channel' is non-nil.
-
- * liece-commands.el (liece-command-who): Check
- `liece-current-channel'.
- (liece-command-names): Ditto.
- Suggested by: Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>.
-
-2000-08-30 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-vars.el (liece-channel-unread-list): New variable.
-
- * liece-channel.el (liece-channel-unread-p): New function.
- (liece-channel-redisplay-buffer): Use it.
-
- * liece-handle.el (liece-handle-privmsg-message): Ditto.
-
-2000-08-29 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-channel.el (liece-channel-change): Run
- `liece-redisplay-buffer-functions'.
-
-2000-08-23 Daiki Ueno <ueno@unixuser.org>
-
- * liece-handle.el (liece-handle-privmsg-message): Use
- `liece-pick-buffer-1' to construct channel buffer name.
-
-2000-08-23 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-xemacs.el (liece-xemacs-channel-balloon): New function.
- Show balloon icon to `liece-cahnnel-list-buffer' as XEmacs glyphs
- when non-current channel message is received.
- (liece-xemacs-channel-balloon-kill): New function.
- Kill the balloon icon.
-
-2000-08-17 Daiki Ueno <ueno@unixuser.org>
-
- * liece.el (liece-server-keyword-map): Bind connection type.
-
-2000-08-16 Daiki Ueno <ueno@unixuser.org>
-
- * liece.el (liece-open-server-internal): Use
- `liece-open-network-stream'; bind liece-tcp-connection-type.
-
- * liece-tcp.el (liece-tcp-open-program-stream-as-binary): Abolish.
- (liece-tcp-open-ssl-stream-as-binary): Abolish.
- (liece-tcp-open-rlogin-stream-as-binary): Abolish.
- (liece-tcp-wait-for-string): Abolish.
- (liece-tcp-stream-alist): New variable.
- (liece-open-network-stream): Abolish 5th argument `type'.
-
-2000-08-01 Yoshiki Hayashi <yoshiki@xemacs.org>
-
- * liece-xemacs.el (liece-toolbar-position): Use
- function defaul-toolbar-position instead of variable.
-
-2000-07-17 Daiki Ueno <ueno@unixuser.org>
-
- * liece-emacs.el (create-image): Don't advise.
- (liece-widget-keymap): Remove checking about 'button3.
- (liece-emacs-widget-button-click): Save point in window explicitly.
-
- * liece-ctcp.el (liece-command-ctcp-generic): Fix format string.
-
-2000-07-16 Akira Ohashi <bg66@luck.gr.jp>
-
- * liece-commands.el (liece-command-beep): New function.
- Toggle the automatic beep notice when the channel message is received.
-
- * liece.el (liece-dialogue-mode-map): Bind "B" to liece-dialogue-beep.
-
- * liece-vars.el (liece-default-beep): New variable.
- (liece-beep-when-invited): Ditto.
- (liece-beep-when-privmsg): Ditto.
- (liece-beep-words-list): Ditto.
-
-2000-05-07 Daiki Ueno <ueno@unixuser.org>
-
- * liece-tcp.el
- (liece-tcp-rlogin-parameters): Use `socket' instead of `telnet'.
- (liece-tcp-open-rlogin-stream): Don't wait for a connection.
- (liece-tcp-open-rlogin-stream-as-binary): Simply wrap
- `liece-tcp-open-rlogin-stream'.
-
-2000-04-21 Daiki Ueno <ueno@unixuser.org>
-
- * liece-ctcp.el
- (liece-ctcp-make-menu-command-wrapper): Quote CTCP subcommands.
-
- * liece-mail.el (liece-maintainer-address): New ML address.
-
-2000-04-12 Daiki Ueno <ueno@unixuser.org>
-
- * liece-url.el: Don't require browse-url when compiling.
- (liece-url-browser-name): Abolish.
- (liece-url-prepare-browser-function): Abolish.
- (liece-url-mail-regexp): Abolish.
- (liece-url-browser-function): Abolish.
- (liece-url-link-action): Use browse-url directly.
- (liece-command-browse-url): Ditto.
- (liece-url-add-buttons): Remove local variable `url-start',
- `url-end' and `url'.
- Suggested by: Kenichi OKADA <okada@opaopa.org>
-
- * liece-xemacs.el
- (liece-toolbar-position): Check feature 'toolbar was provided.
-
-2000-04-08 Daiki Ueno <ueno@unixuser.org>
-
- * liece-xemacs.el (liece-xemacs-setup-toolbar): Run
- `liece-xemacs-setup-toolbar-hook' only once.
- (liece-setup-toolbar): Don't check return value
- of `liece-xemacs-setup-toolbar'.
- Reported by: Yosuke MITSUMASU <werdna@ntn.org>
-
-2000-04-05 Daiki Ueno <ueno@unixuser.org>
-
- * liece-commands.el: Add autoload for liece-command-ctcp-version,
- liece-command-ctcp-userinfo,liece-command-ctcp-clientinfo,
- liece-command-ctcp-ping,liece-command-ctcp-time,
- liece-command-ctcp-x-face,liece-command-ctcp-comment,
- liece-command-ctcp-help.
- Suggested by: HARUYAMA Seigo <haruyama@unixuser.org>.
-
- * liece-ctcp.el
- (liece-ctcp-make-menu-command-wrapper): Don't use `#'.
- (liece-ctcp-make-command-wrapper): Ditto.
-
-2000-04-04 Daiki Ueno <ueno@unixuser.org>
-
- * liece.el (liece-client-query-keys): Rename all commands.
-
- * liece-vars.el
- (liece-ctcp-userinfo): Rename from `liece-client-userinfo'.
- (liece-ctcp-x-face): Ditto.
-
- * liece-ctcp.el (liece-ctcp-message): Abolish macro.
- (liece-ctcp-file-message): Ditto.
-
-2000-03-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-emacs.el: Require `derived'.
-
-2000-03-24 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-inlines.el (liece-locate-path): Use
- `liece-locate-data-directory' instead of `locate-data-directory'.
-
-2000-03-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-q-ccl.el (ccl-set-register-right): Abolish.
- (liece-quote-ccl-decode): Simplified.
-
- * liece-compat.el (liece-suppress-mode-line-format): Copy original
- `mode-line-format' before modification.
- (locate-data-directory): Abolish.
- (liece-locate-data-directory): New function.
-
- * liece-xemacs.el (liece-xemacs-suppress-modeline-format): Ditto.
- (liece-locate-data-directory): Override with `locate-data-directory'.
-
- * liece.el
- (liece-command-mode): Define `mode-line-format' as buffer local.
- (liece-dialogue-mode): Exchange `mode-line-modified' position.
- (liece-clear-system): Check buffer status.
-
- * liece-ctcp.el (liece-ctcp-xyzzy-message): Abolish.
- (liece-command-send-file): Don't narrowing buffer.
- (liece-ctcp-file-save-directory): Default to `liece-directory'.
- (liece-register-file-handler): New macro.
- (liece-ctcp-notice): Rewrite.
- (liece-ctcp-message): Rewrite.
- (liece-query-client-insert-to-generic): Abolish.
- (liece-query-client-version): Abolish.
- (liece-query-client-userinfo): Abolish.
- (liece-query-client-help): Abolish.
- (liece-query-client-clientinfo): Abolish.
- (liece-query-client-ping): Abolish.
- (liece-query-client-time): Abolish.
- (liece-query-client-x-face): Abolish.
- (liece-query-client-last-command): Rename from
- `liece-query-client-lastcommand'.
- (liece-query-client-alist): Abolish.
- (liece-ctcp-last-nick): Rename from `liece-query-client-nick'.
- (liece-command-ctcp-x-face-from-minibuffer): Abolish.
- (liece-command-ctcp-x-face-from-commandbuffer): Abolish.
- (liece-command-ctcp-userinfo-from-commandbuffer): Abolish.
-
-2000-03-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-xemacs.el (liece-xemacs-icon-path): Abolish.
- (liece-toolbar-position): Default to `default-toolbar-position'.
- (liece-xemacs-setup-toolbar): Remove directory checking.
- (liece-xemacs-modeline-glyph): Suppress glyph specs.
- (liece-xemacs-create-nick-glyph): Ditto.
-
- * liece-emacs.el (liece-emacs-icon-path): Abolish.
-
- * liece-intl.el (liece-intl-load-catalogue): Rewrite with
- `liece-locate-path'; remove local binding.
-
- * liece-window.el (liece-window-load-style-file): Rewrite with
- `liece-locate-path'; remove local binding.
-
- * liece-compat.el (locate-data-directory): New function.
-
- * liece-inlines.el (liece-find-data-directory): Abolish.
- (liece-locate-path): Rename from `liece-find-path'; use
- `locate-data-directory'; reorder arguments.
- (liece-locate-icon-file): New function.
-
-2000-03-20 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-globals.el
- (liece-command-buffer,liece-dialogue-buffer,liece-private-buffer,
- liece-others-buffer,liece-channel-buffer,
- liece-channel-buffer-format,liece-channel-list-buffer,
- liece-nick-buffer,liece-nick-buffer-format,
- liece-KILLS-buffer,liece-IGNORED-buffer,liece-WALLOPS-buffer,
- liece-CRYPT-buffer,liece-server-buffer): Remove preceding `*IRC*'.
-
- * liece-xemacs.el
- (liece-xemacs-splash-at-point): Bind
- `liece-insert-environment-version' to nil.
- (liece-xemacs-splash): Ditto.
- (liece-xemacs-suppress-modeline-format): New function.
- (liece-suppress-mode-line-format): Override with
- `liece-xemacs-suppress-modeline-format'.
- (liece-xemacs-mode-line-buffer-identification): Decorate 1st
- element and modify whole identification by side effect.
-
- * liece-compat.el (current-language-environment): Abolish.
- (frame-title-format): Abolish.
- (enable-multibyte-characters): Abolish.
- (liece-suppress-mode-line-format): New function.
-
- * liece-version.el: Use product.el.
- (liece-version): New function.
- (liece-user-interface-product): Abolish.
- (liece-product-name): Abolish.
- (liece-product-version): Abolish.
- (liece-product-code-name): Abolish.
- (liece-user-agent-value): Abolish.
- (liece-command-version): Abolish.
- (liece-environment-version): Rename from
- `liece-emacs-user-agent-value'.
-
- * bitmap-stipple.el
- (bitmap-stipple-insert-pixmap): Don't set point to `point-min'.
-
- * liece-xbm.el: Update.
-
- * liece-emacs.el (liece-emacs-splash): Display version number;
- bind `liece-insert-environment-version' to nil.
- (liece-emacs-mode-line-buffer-identification): Decorate 1st
- element and modify whole identification by side effect.
-
- * liece-vars.el (liece-nick-max-length): New variable.
- (liece-insert-environment-version): New variable.
-
- * liece.el (liece-truncate-nickname): Abolish.
- (liece-client-query-keys,liece-dialogue-keys,
- liece-select-keys,liece-crypt-keys): Define as a plist.
- (liece-local-set-keys): New function borrowed from gnus-util.el.
- (liece-define-keys): Ditto.
- (liece-define-keys-safe): Ditto.
- (liece-define-keys-1): Ditto.
- (liece-command-map): Bind "\C-m" to liece-command-modec.
- (liece-command-mode): Don't set `mode-line-format' directly;
- exchange `mode-line-modified' position;
- (liece-dialogue-mode): Ditto.
- (liece-others-mode): Ditto.
- (liece-channel-mode): Ditto.
- (liece-nick-mode): Ditto.
- (liece-channel-list-mode): Ditto.
-
-2000-03-19 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * gettext.el (bind-text-domain): Don't refer "PATHNAME/DOMAIN.mo"
- directly.
-
- * bitmap-stipple.el,gettext.el,liece-000.el,liece-200.el,
- liece-300.el,liece-400.el,liece-500.el,liece-commands.el,
- liece-config.el,liece-crypt.el,liece-ctcp.el,liece-dcc.el,
- liece-filter.el,liece-globals.el,liece-handle.el,liece-hilit.el,
- liece-inlines.el,liece-intl.el,liece-mail.el,liece-make.el,
- liece-menu.el,liece-message.el,liece-minibuf.el,liece-misc.el,
- liece-nick.el,liece-q-ccl.el,liece-q-el.el,liece-tcp.el,
- liece-version.el,liece-window.el,liece-x-face.el: Checkdoc.
-
- * liece-menu.el (liece-nick-popup-menu): Use copy-sequence instead
- of copy-tree.
-
- * liece-modules.el (liece-modules-to-compile): Modify for
- `liece-clfns' and `liece-handler'.
-
- * liece-handler.el: Rename from llunf.el.
-
- * liece-clfns.el: New file.
-
- * liece-channel.el (liece-channel-add-buttons): Fix regexp.
- (liece-channel-add-ban): Use add-to-list instead of pushnew.
-
- * liece-coding.el
- (liece-default-coding-system): Abolish.
- (liece-mime-charset-for-write): Rename from
- `liece-default-mime-charset'.
- (liece-mime-charset-for-read): Rename from
- `liece-default-mime-charset-for-read'.
-
- * liece.el (liece-client-query-map,liece-dcc-map,
- liece-crypt-map,liece-friends-map,liece-channel-list-mode-map,
- liece-nick-mode-map,): Use make-sparse-keymap when initialising.
- (liece-command-mode): Don't set liece-display-frame-title to nil.
- (liece-dialogue-mode-map): Bind `L' to liece-command-load-vars
- instead of `C-l'; bind `S' to liece-command-save-vars instead of
- `s'; bind `M' to liece-command-modec instead of `C-m'; bind `O' to
- liece-dialogue-own-freeze instead of `M'.
- (liece-buffer-last-check-time): Rename from
- `liece-last-checkbuffer-time'.
- (liece-check-buffers): Define as function.
- (liece-check-buffers-if-interval-expired): Simplified.
-
- * liece-vars.el
- (liece-buffer-max-size): Rename from `liece-buffer-maxsize'.
- (liece-buffer-default-size): Rename from `liece-buffer-defsize'.
- (liece-buffer-check-interval): Rename from
- `liece-checkbuffer-interval'.
-
- * liece-emacs.el (liece-emacs-widget-button-click): Don't use
- `event-buffer'.
-
- * liece-xemacs.el
- (liece-xemacs-get-buffer-window-list): Abolish.
- (liece-xemacs-run-at-time): Abolish.
- (liece-xemacs-put-text-property): Abolish.
- (liece-xemacs-add-text-property): Abolish.
-
- * liece-minibuf.el (liece-minibuffer-map): Use `set-keymap-parent'
- instead of `liece-set-keymap-parents'.
-
- * liece-compat.el: Don't require emu, broken, alist.
- (remassoc): Abolish.
- (remassq): Abolish.
- (liece-run-at-time): Abolish.
- (liece-cancel-timer): Abolish.
- (with-timeout): Abolish.
- (with-timeout-handler): Abolish.
- (liece-get-buffer-window-list): Abolish.
- (liece-set-keymap-parents): Abolish.
- (event-buffer): Abolish.
- (event-point): Abolish.
- (truncate-string-to-width): Abolish.
- (plist-get): Abolish.
- (read-passwd): Abolish.
- (colon-keyword-usable): Abolish.
- (turn-on-font-lock): Abolish.
- (liece-make-overlay): Abolish.
- (liece-delete-overlay): Abolish.
- (liece-overlay-put): Abolish.
- (liece-move-overlay): Abolish.
- (liece-overlay-end): Abolish.
- (liece-overlay-get): Abolish.
- (liece-overlays-at): Abolish.
- (liece-put-text-property): Abolish.
- (liece-add-text-property): Abolish.
- (buffer-disable-undo): Abolish.
- (valid-plist-p): Abolish.
-
- * liece-url.el (liece-url-browser-netscape): Abolish.
-
-2000-03-08 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-compat.el (liece-get-buffer-window): Search all frames.
-
-2000-02-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-command-mode): Set frame-title-format when
- running on window-system environment.
-
-2000-02-18 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-emacs.el (liece-emacs-splash): Use `frame-char-width' and
- `frame-char-height' when calculating logo centering.
-
-2000-02-17 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-400.el (liece-handle-443-message): Check channel name.
-
-2000-02-13 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-coding.el
- (liece-coding-encode-charset-region): Define as function.
- (liece-coding-encode-charset-string): Define as function.
-
- * liece-dcc.el
- (liece-dcc-chat-send): Switch to liece-command-buffer.
- (liece-dcc-enqueue-request): Rename.
- (liece-dcc-dequeue-request): Ditto.
-
- * liece-misc.el (liece-send-as-binary): Abolish.
- (liece-repair-crlf): Abolish.
- (liece-send): Switch to liece-command-buffer.
-
- * liece-emacs.el (liece-emacs-splash): Use `font-info' if 'font
- parameter of the selected frame is not a fontset name.
-
- * liece.el (liece-open-server-internal): Set process-buffer of
- open-network-stream as unibyte.
-
-2000-02-10 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-xemacs.el (liece-toolbar-icon-convert-1): New function.
- (liece-toolbar-icon-states): New variable.
-
- * liece-emacs.el (liece-emacs-widget-button-click): Don't preserve
- previously selected window.
-
-2000-01-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-emacs.el: Require `image' when compiling.
- (create-image): Add optional argument `data-p'.
-
-2000-01-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-message.el (liece-message-empty-predicate): New variable.
-
- * liece-commands.el
- (liece-command-message): Use `liece-message-empty-predicate'.
-
-2000-01-16 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-modules.el (liece-modules): Don't install `queue-m'.
-
- * liece-dcc.el: Don't require `queue-m' at runtime.
-
- * liece-hilit.el:
- Add autoload setting for `liece-channel-add-buttons' and
- `liece-nick-add-buttons'.
- (liece-highlight-maybe-turn-on-font-lock): Activate
- `liece-channel-add-buttons' and `liece-nick-add-buttons' when
- inserting every line.
-
- * liece-compat.el (liece-map-overlays): New function.
- (liece-kill-all-overlays): Use it.
-
- * liece-xemacs.el (liece-xemacs-map-extents): New function.
- (liece-xemacs-kill-all-overlays): Use it.
- (liece-map-overlays): New alias to `liece-xemacs-map-extents'.
-
- * liece-nick.el (liece-nick-redisplay-buffer): New function.
- (liece-nick-add-buttons): New function.
-
- * liece-channel.el
- (liece-channel-redisplay-buffer): New function.
- (liece-channel-list-redisplay-buffer): New function.
- (liece-channel-buffer-invisible-p): Remove redundant cond.
- (liece-channel-part-internal): Remove redundant `function'.
- (liece-channel-list-add-button): Rename from
- `liece-channel-add-button'.
- (liece-channel-push-button-action): Use `liece-command-join'
- instead of `liece-switch-to-channel'.
-
- * liece-commands.el (liece-switch-to-channel-1): Abolish.
- (liece-redisplay-buffer-functions): New variable.
-
-2000-01-07 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-commands.el
- (liece-command-next-channel): Traverse channel list circularly.
- (liece-command-previous-channel): Likewise.
-
-1999-12-26 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-commands.el
- (liece-command-previous-channel): Remove nil from channel list.
- (liece-command-next-channel): Ditto.
-
-1999-12-24 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-emacs.el (liece-emacs-splash): Check whether logo height
- is larger than frame height.
-
- * liece-crypt.el (liece-crypt-maybe-encrypt-message): Simplified.
-
- * liece-commands.el
- (liece-command-enter-message-encrypted): Abolish.
- (liece-command-enter-message-cleartext): Abolish.
- (liece-command-enter-message-opposite-crypt-mode): Abolish.
- (liece-command-enter-message-with-key): Abolish.
-
-1999-12-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-version.el (liece-user-agent-value): Add APEL version.
-
- * liece-inlines.el (liece-next-line): New macro.
-
- * liece-ctcp.el
- (liece-command-client-action): Use `liece-next-line'.
- (liece-command-client-userinfo-from-commandbuffer): Ditto.
-
- * liece-channel.el (liece-channel-member): Use `member-if' instead
- of `find-if'.
-
- * liece.el (liece): Don't use `liece-command-describe-briefly'.
- (liece-command-mode): Don't bind `next-line-add-newlines'.
- (liece-dialogue-keys): Don't bind `C-u'.
-
- * liece-commands.el (liece-command-topic): If called with prefix
- argument insert the current topic as default.
- (liece-command-finger): Add documentation about optional 2nd
- argument.
- (liece-command-describe-briefly): Abolish.
- (liece-enter-message): Abolish local variable `message'.
- (liece-command-join-channel): Fix paren style.
- (liece-command-join-partner): Ditto.
- (liece-command-join): Ditto.
- (liece-command-part): Ditto.
- (liece-switch-to-channel-no): Ditto.
- (liece-command-complete): Ditto.
- (liece-command-next-channel): Rewrite with using
- `liece-channel-member'.
- (liece-command-previous-channel):
- (liece-command-push): Abolish local variable `rest-sym' and
- `item'; don't use `liece-channel-remove'.
- (liece-command-pop): Abolish local variable `rest-sym'.
- (liece-command-tag-region): Don't create temp buffer.
-
-1999-12-21 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-misc.el (liece-set-channel-indicator): Switch to
- `liece-command-buffer' when updating modeline.
-
-1999-12-19 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-minibuf.el (liece-minibuffer-map): Don't use
- `set-keymap-parents'.
-
- * liece-compat.el (liece-set-keymap-parents): Rename from
- `set-keymap-parents'.
- (turn-on-font-lock,event-buffer,event-point,region-active-p,
- remassoc,remassq,valid-plist-p,plist-get): Add document.
-
-1999-12-14 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-insert-internal): Don't bind `tab-stop-list'.
- (liece-dialogue-mode): Declare `tab-stop-list' as buffer local.
-
-1999-12-01 Daiki Ueno <ueno@unixuser.org>
-
- * liece-message.el (liece-message-parent-buffer): Add condtion.
-
-1999-11-13 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-read-variables-files): Make the `~/.liece/'
- directory if there is no initialization file.
-
-1999-11-10 Kenichi OKADA <okada@opaopa.org>
-
- * liece-xemacs.el (liece-xemacs-splash-at-point): Calculate
- horizontal position of the splash logo.
-
-1999-11-10 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-emacs.el (liece-emacs-splash): Check the number of
- the arguments of `insert-image'.
-
-1999-11-07 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-coding.el (detect-coding-string): Remove.
- (liece-detect-coding-string): Don't define if
- `detect-coding-string' does not exist.
-
-1999-11-05 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-url.el (liece-url-add-buttons): Accept optional arguments
- `start' and `end'.
-
- * liece.el (liece-save-point): New macro; borrowed from SKK.
- (liece-before-insert-hook): New variable.
- (liece-insert-internal): Refine.
-
-1999-11-01 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-misc.el (liece-get-buffer-create): Use memq instead of
- member to search over buffers list.
-
-1999-10-29 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-handle.el (liece-handle-ping-message): Return the
- argument correctly.
-
- * liece.el (liece-insert-internal): Remove `inline'.
-
-1999-10-27 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-commands.el (liece-command-nick-scroll-down): Fix
- argument list.
- (liece-command-nick-scroll-up): Ditto.
-
- * liece-hilit.el (liece-highlight-turn-on-font-lock): Set
- `liece-highlight-maybe-play-jingle' as local hook.
- (liece-highlight-font-lock-keywords): Undo last change.
-
-1999-10-26 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-refresh-windows): Remove.
- (liece-refresh-buffer-window): New function `liece-refresh-windows'.
- (liece-insert-internal): Preserve old point unconditionally when
- the buffer is frozen.
-
-1999-10-21 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-misc.el (liece-freeze): Rename from `liece-freeze-toggle'.
- (liece-own-freeze): Rename from `liece-own-freeze-toggle'.
-
- * liece.el: Add autoload for `liece-command-submit-bug-report'.
- (liece-overriding-command-keys): Rename.
- (liece-dialogue-keys): Bind `liece-command-submit-bug-report'.
-
- * liece-commands.el (liece-command-scroll-down): Use
- `scroll-other-window'; accept prefix value.
- (liece-command-scroll-up): Ditto.
- (liece-command-nick-scroll-down): Ditto.
- (liece-command-nick-scroll-up): Ditto.
- (liece-command-freeze): Accept prefix argument.
- (liece-command-own-freeze): Ditto.
- (liece-command-quit): Refine.
-
-1999-10-20 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-commands.el (liece-command-display-friends): Remove
- `save-excursion'.
-
- * liece.el (liece-read-variables-files): Prepare startup
- directory if it does not exist.
-
- * liece-vars.el (liece-directory): New variable.
- (liece-variables-file): Relocate under `liece-directory'.
-
- * liece-ctcp.el (liece-ctcp-version-message): Refer
- `liece-user-agent-value'.
-
- * liece-menu.el: Check features about menubars.
-
- * liece-xemacs.el (liece-xemacs-hide-scrollbars): Set
- `scrollbar-height' to 0 if `horizontal-scrollbar-visible-p' is not
- available.
-
- * liece-mail.el (liece-command-submit-bug-report): New function.
- (liece-maintainer-address): New variable.
-
- * gettext.el (gettext-load-message-catalogue): Enclose with
- `as-binary-input-file' instead of using `set-buffer-multibyte' twice.
- (gettext-load-portable-message-catalogue): Likewise.
- (dgettext): Check the cdr of catalogue entry.
- (gettext-gmo-read-32bit-word): Mask each byte with 255.
-
- * liece-compat.el (truncate-string-to-width): New alias.
-
- * liece.el (liece-server-keyword-bind): Quote colon keywords.
-
- * liece-make.el (make-liece-info-files): Check if
- `set-language-environment' exists.
-
- * liece-misc.el (liece-server-host): Quote colon keyword.
-
-1999-10-19 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-hilit.el (liece-highlight-font-lock-keywords): Undo last
- change; accept partial matcher as the value of
- `liece-highlight-pattern'.
- (liece-highlight-maybe-play-jingle): New function.
- (liece-highlight-maybe-turn-on-font-lock): Add
- `liece-highlight-maybe-play-jingle' to `after-change-functions'.
-
-1999-10-14 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * gettext.el (gettext-load-message-catalogue): Use hashtable.
- (gettext-load-portable-message-catalogue): Likewise.
-
-1999-10-13 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-misc.el (next-visible-point): Don't advise.
- (liece-remove-properties-region): Enclose by `save-restriction'.
-
-1999-10-12 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-commands.el (liece-command-send-action): Remove.
-
- * liece-ctcp.el (liece-command-client-action): Move from
- `liece-commands.el'; mark `liece-command-send-action' as obsolete.
- (liece-client-x-face-notice): Remove whitespaces.
-
- * liece-handle.el (liece-handle-kick-message): Fix message.
-
-1999-10-11 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * gettext.el (gettext-default-mime-charset): New variable.
- (gettext-parse-Content-Type): Use it.
-
-1999-10-07 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-misc.el (liece-message): Fix message prefix.
-
- * liece-compat.el (liece-find-data-directory): Move to
- `liece-inlines'.
-
- * liece-xemacs.el (liece-xemacs-icon-path): Use `liece-find-path'.
-
- * liece-emacs.el (liece-emacs-icon-path): Use `liece-find-path'.
-
- * liece-inlines.el (liece-find-path): New function.
-
-1999-10-05 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-version.el (liece-user-interface-product): Renamed from
- `liece-client-product'.
- (liece-client-version-major): Abolish.
- (liece-client-version-minor): Abolish.
- (liece-client-version-beta): Abolish.
- (liece-client-version-alpha): Abolish.
- (liece-client-version-codename): Abolish.
- (liece-product-name): New macro.
- (liece-product-version): New macro.
- (liece-product-code-name): New macro.
-
-1999-10-03 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-hilit.el (liece-highlight-jingle-function): New variable.
- (liece-highlight-font-lock-keywords): If liece-highlight-pattern
- matches, play jingle.
-
-1999-10-01 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-message.el (liece-message-parent-buffer): Check the
- message direction in private conversation.
-
-1999-09-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-version.el (liece-emacs-user-agent-value): Include
- `emacs-patch-level'. It exists in XEmacs 21.1.1 or later.
-
-1999-09-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-channel-mode): Make `truncate-lines' local.
- (liece-others-mode): Ditto.
- (liece-channel-list-mode): Ditto.
- (liece-nick-mode): Ditto.
-
-1999-09-18 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-open-server): Set `liece-status-message-string'
- when timeout is expired.
-
-1999-09-14 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-menu.el (liece-use-localized-menu): New variable.
- (liece-command-define-menus): Use it.
- (liece-command-define-menus-1): New function; to raverse menu
- items recursively.
-
- * liece.el (liece): Call `liece-intl-load-catalogue' before switch
- to the command buffer.
-
- * liece-dcc.el: Refine.
-
- * liece-ctcp.el (liece-client-x-face-notice): Do not decode empty
- `X-Face'.
-
-1999-09-11 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-vars.el (liece-dcc-program): Rename to `ldcc'.
-
- * liece-tcp.el (liece-tcp-program): Rename to `ltcp'.
-
- * gettext.el (gettext-parse-Content-Type): Require `path-util'.
-
- * liece-x-face.el: Require `path-util'.
-
-1999-09-10 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Makefile.am (SOURCES): Add `gettext.el'.
-
- * liece-modules.el (liece-modules-to-compile): Add `gettext.el'.
-
- * liece-intl.el: Use `gettext.el'.
- (liece-intl-domains-alist): Abolish.
- (liece-intl-domain-to-mime-charset-alist): Abolish.
- (liece-intl-prepare-prefix): Abolish.
- (liece-intl-parse-Content-Type): Abolish.
- (liece-intl-convert-string): Abolish.
- (liece-intl-catalogue-path): Abolish.
-
- * gettext.el: New file.
-
- * liece-ctcp.el: Add autoload setting for `liece-ctcp-dcc-message'.
-
- * liece.el (liece): Save window splitting only when called
- interactively.
- (liece-clear-system): Do not restore window splitting.
- (liece-command-mode): Set syntax table explicitly; make
- `frame-title-format' buffer local.
-
- * liece-window.el (liece-window-configuration-push): Do not save
- `frame-title-format'.
- (liece-window-configuration-pop): Likewise.
-
- * liece-commands.el (liece-command-quit): Restore window splitting
- only when called interactively.
-
-1999-09-09 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.el (liece-server-keyword-map): New variable.
- (liece-server-keyword-bind): New macro modified version of
- `mail-source-bind' from `mail-source.el'.
- (liece-server-parse-string): New function.
- (liece-open-server): Use them.
-
-1999-09-08 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece-300.el (liece-handle-353-message): Reverse reply list.
-
- * All files are renamed from `irchat-*' to `liece-*'.
- All symbols are renamed too.
-
- * irchat-vars.el (irchat-connection-timeout): Default to 60.
-
- * irchat-nick.el (irchat-nick-insert): Handle reverse order
- sorting.
-
-1999-09-07 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat): Call `irchat-command-mode' just once.
- (irchat-initialize-buffers): Likewise.
-
- * irchat-channel.el (irchat-channel-buffer-create): Call
- `irchat-channel-mode' just once.
-
- * irchat-nick.el (irchat-nick-buffer-create): Call
- `irchat-nick-mode' just once.
-
- * irchat-message.el (irchat-message-parent-buffer): Fix condition.
-
-1999-09-06 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-nick-sort-nicks): New variable.
-
- * irchat-intl.el (irchat-intl-load-catalogue): Ignore all errors
- when reading catalogue file.
-
- * irchat-menu.el: Do not require `irchat-ctcp'; add autoload
- settings for `irchat-menu-callback-ctcp-version',
- `irchat-menu-callback-ctcp-userinfo',
- `irchat-menu-callback-ctcp-help',
- `irchat-menu-callback-ctcp-clientinfo' and
- `irchat-menu-callback-ctcp-ping'; add `irchat-menu-add-url' to
- `irchat-url-add-hook'.
-
- * irchat-url.el (irchat-url-add-buttons): Enclose with
- `save-excursion'; run `irchat-url-add-hook'.
-
-1999-09-06 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.3.7.
-
- * irchat-xemacs.el (irchat-xemacs-setup-menu): Abolish.
-
- * irchat-intl.el (irchat-intl-get-msgstr-if): Abolish.
-
- * irchat-vars.el: Remove defconst for colon keyword.
-
-1999-09-05 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-menu.el: All the menu specs are expanded immediately.
- (irchat-menu-prepare-menus): Abolish.
- (irchat-menu-define): New function.
- (irchat-menu-alist): New variable.
-
- * irchat-handle.el (irchat-handle-topic-message): Check empty
- topic line.
-
- * irchat.el (irchat): When `irchat-startup-channel-list' contains
- list element send cadr as a channel key.
-
- * irchat-emacs.el (irchat-emacs-widget-convert-button): Make the
- keymap `irchat-widget-keymap' parented from current local map.
-
- * irchat-nick.el (irchat-nick-sort-predicate): New variable.
- (irchat-nick-update): Sort nicknames with
- `irchat-nick-sort-predicate'.
- (irchat-nick-insert): Search sorted position before insertion.
- (irchat-nick-replace): Call `irchat-nick-insert' when
- `irchat-nick-sort-predicate' is valid.
-
- * irchat-message.el (irchat-message-parent-buffer): Add condition
- for private conversation.
-
- * irchat-make.el (make-irchat-info-files): Set language
- environment to `Japanese'.
-
- * irchat-dcc.el (irchat-dcc-channel-representation-format):
- Remove.
-
- * irchat-minibuf.el (irchat-minibuffer-complete-channel-modes):
- Use `string-list-member-ignore-case' instead of
- `string-list-ci-member'.
-
- * irchat-url.el: Remove `irchat-insert-hook'.
-
- * irchat-hilit.el (irchat-highlight-maybe-turn-on-font-lock):
- Add `irchat-url-add-buttons' to `irchat-insert-hook'.
-
- * irchat.el (irchat-initialize-buffers): Fix last change.
-
- * irchat-300.el: Enclose autoloads by `eval-and-compile'.
-
- * irchat-channel.el: Declare variable
- `irchat-dcc-channel-representation-format'.
-
-1999-09-04 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.3.6.
-
- * irchat.el: Add autoload for `irchat-command-browse-url'; do not
- require `irchat-url' and `irchat-dcc'; add autoload for
- `irchat-command-mail-compose'.
- (irchat-initialize-timers): Rewrite with `dolist'; do
- not check `irchat-timers-list-initialized-p'.
- (irchat-truncate-nickname): Use `truncate-string-to-width' instead
- of `truncate-string'.
- (irchat-buffer-mode-alist): New variable.
- (irchat-dialogue-setup-buffer): Abolish.
- (irchat-others-setup-buffer): Abolish.
- (irchat-channel-list-setup-buffer): Abolish.
- (irchat-private-setup-buffer): Abolish.
- (irchat-KILLS-setup-buffer): Abolish.
- (irchat-IGNORED-setup-buffer): Abolish.
- (irchat-WALLOPS-setup-buffer): Abolish.
- (irchat-CRYPT-setup-buffer): Abolish.
- (irchat-initialize-buffers): Rewrite.
-
- * irchat-ctcp.el (irchat-client-version-insert): Do not indent
- explicitly.
- (irchat-client-message-no-lf): Abolish.
-
- * irchat-300.el, irchat-xemacs.el, irchat-commands.el: Do not
- require `irchat-dcc' and `irchat-mail'.
-
- * irchat-dcc.el (irchat-command-dcc-send): Remove autoload cookie.
-
-1999-09-03 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-inlines.el (forward-line): Do not advise.
-
- * irchat-intl.el: Do not require `alist'; require `mcharset',
- `static' and `cl' during compilation.
- (irchat-intl-msgid-regexp): Fix regexp.
- (irchat-intl-msgstr-regexp): Ditto.
- (irchat-intl-set-msgstr): Abolish.
- (irchat-intl-load-catalogue): Optimize with side-effects.
-
- * irchat.el (irchat): Load message catalogue only once.
-
-1999-08-31 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-close-server-internal): Use
- `irchat-server-opened'.
-
- * irchat-hilit.el (irchat-highlight-maybe-turn-on-widget):
- Abolish.
-
- * irchat-channel.el (irchat-channel-add-button): Use
- `irchat-widget-convert-button'.
-
- * irchat-nick.el (irchat-nick-insert): Use
- `irchat-widget-convert-button'.
- (irchat-nick-replace): Ditto.
-
- * irchat-compat.el (irchat-widget-convert-button): New alias.
- (irchat-widget-button-click): Alias to `widget-button-click'.
-
- * irchat-emacs.el (irchat-widget-keymap): New variable.
- (irchat-emacs-widget-convert-button): New function.
- (irchat-emacs-widget-button-click): New function.
- (irchat-widget-convert-button): Redefine here.
- (irchat-widget-button-click): Redefine here.
-
- * irchat-url.el (irchat-url-add-buttons): Use
- `irchat-widget-convert-button'.
-
-1999-08-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-emacs.el (irchat-emacs-splash): Use `fontset-pixel-size'.
-
-1999-08-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-compat.el: Do not require `wid-browse' during
- compilation.
- (irchat-widget-button-click): New function.
-
- * irchat-emacs.el: Enclose autoloads with `eval-and-compile'.
- (irchat-emacs-create-mode-line-image): Specify
- `:ascent' property when creating the image.
- (irchat-emacs-create-nick-image): Ditto.
-
-1999-08-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Makefile.am (EXTRA_DIST): Add `irchat-emacs.el'.
-
- * irchat-xemacs.el (irchat-xemacs-glyph-nick-buffer): Abolish.
- (irchat-xemacs-glyph-nick-region): Remove interactive spec.
-
- * irchat-intl.el: Do not require `mime-parse'.
-
- * irchat-tcp.el: Bind `ssl-program-arguments'.
-
-1999-08-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-modules.el (irchat-modules-to-compile): Add
- `irchat-emacs'.
-
- * irchat-xemacs.el (irchat-xemacs-glyph-nick-buffer): Refine.
-
- * irchat-vars.el (irchat-icon-directory): Move from
- `irchat-xemacs.el'.; To be used under FSF Emacs 20.4.91.
- (irchat-nick-image-alist): Move from `irchat-xemacs.el'.
-
- * irchat-emacs.el: New file.; Most of FSF Emacs specific routines
- are stored here.
- (irchat-emacs-icon-path): New macro.
- (irchat-emacs-mode-line-buffer-identification): New function.
- (irchat-emacs-mode-line-buffer-identification): New variable.
-
-1999-08-20 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.xpm: Reduce colors.
-
-1999-08-20 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-x-face.el (irchat-x-face-insert-function): Don't use
- `eval-when-compile' while checking bitmap-mule.
-
-1999-08-20 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-splash-pixmap): Renamed from
- `irchat-stipple-pixmap'; use the XPM data under FSF Emacs 20.4.91.
- (irchat-x-splash): Likewise.
-
- * irchat-channel.el (irchat-channel-virtual): Undo last change.
-
-1999-08-15 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-400.el (irchat-handle-400-messages): Do not pass empty
- channel names to `irchat-channel-virtual'.
-
- * irchat-channel.el (irchat-channel-virtual): Make channel ID for
- `!' channels invisible from user.
-
- * irchat-vars.el (irchat-channel-id-length): Default to 5.
-
-1999-08-14 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-353-channel): Abolish.
- (irchat-handle-366-message): Do not use `irchat-353-channel'.
-
-1999-08-13 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-200.el (irchat-handle-218-message): Do not indent
- explicitly.
-
-1999-08-08 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-compat.el (with-timeout): New macro for compatibility.
-
- * irchat-xemacs.el: Check `horizontal-scrollbar-visible-p' for
- XEmacs 20.4.
-
- * irchat.el (irchat-open-server): Do not truncate trailing `_'.
-
- * Liece 1.3.5.
-
- * irchat-handle.el (irchat-handle-mode-message): Handle channel
- invite list.
- (irchat-handle-join-message): Pass optional argument to
- `match-string'.
-
- * irchat-channel.el (irchat-channel-get-invites): New macro.
- (irchat-channel-add-invite): New macro.
- (irchat-channel-remove-invite): New macro.
- (irchat-channel-set-invite): New macro.
-
- * irchat-300.el: Handle channel invite list.
- (irchat-handle-346-message) <RPL_INVITELIST>: New handler.
- (irchat-handle-347-message) <RPL_ENDOFINVITE>: New handler
-
-1999-08-07 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-200.el: Register 200 handler again.
- (irchat-handle-200-message): Do not indent explicitly.
- (irchat-handle-201-message): Likewise.
- (irchat-handle-213-message): Likewise.
- (irchat-handle-214-message): Likewise.
- (irchat-handle-262-message) <RPL_ENDOFTRACE>: New handler.
-
- * irchat-300.el (irchat-handle-365-message): Turn hops count into
- string.
-
- * irchat-xemacs.el (irchat-toolbar-map-button-list): Fix typo.
-
-1999-08-06 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-intl.el (irchat-intl-load-catalogue): Add nil check.
- (irchat-intl-catalogue-path): Fix last change.
-
-1999-08-06 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-window.el (irchat-window-load-style-file): Cache
- `irchat-window-style-directory'.
-
- * irchat-xemacs.el (irchat-xemacs-icon-path): Cache
- `irchat-icon-directory'.
-
- * irchat-intl.el (irchat-intl-catalogue-path): New macro.
- (irchat-intl-load-catalogue): Use it.
-
- * irchat-make.el (install-update-manifest-file): Fix for data
- directories.
- (config-irchat-package-directory): Splitt into
- `config-irchat-package'.
-
- * irchat-xemacs.el: Do not require `smiley'.
- (irchat-xemacs-icon-path): New macro.
- (irchat-toolbar-icon-plist-get): Use it.
- (irchat-xemacs-setup-toolbar): Use it.
- (irchat-xemacs-create-nick-glyph): Use it.
- (irchat-xemacs-modeline-glyph): Use it.
-
- * irchat-vars.el (irchat-use-smiley): Abolish.
-
- * irchat-hilit.el (irchat-maybe-smiley-region): Abolish. If you
- want to use this functionality, please setup `irchat-insert-hook'.
-
-1999-08-05 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * liece.xpm: New splash logo.
-
- * irchat-xemacs.el (irchat-xemacs-splash-at-point): Use
- `glyph-width', `glyph-height' and `window-pixel-height' to
- calculate position of the splash logo.
-
-1999-08-04 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-compat.el (irchat-find-data-directory): Move from
- `irchat-misc'.
-
- * irchat-intl.el: Use new style macros.
- (irchat-intl-parse-Content-Type): Check statically if
- `mime-content-type-parameter' is available.
- (irchat-intl-load-catalogue): Use `irchat-find-data-directory'.
-
- * irchat.el (irchat-open-server): Add server parameter `relay'.
-
- * irchat-window.el (irchat-window-set-default-style): Use
- `irchat-find-data-directory'.
-
- * irchat-tcp.el: Fix comment string.
- (irchat-tcp-open-rlogin-stream): New function.
- (irchat-tcp-open-rlogin-stream-as-binary): New function.
- (irchat-tcp-default-connection-type): Add rlogin to custom spec.
- (irchat-tcp-rlogin-program): New variable.
- (irchat-tcp-relay-host): New variable.
- (irchat-tcp-rlogin-parameters): New variable.
- (irchat-tcp-rlogin-user-name): New variable.
-
-1999-08-03 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-config.el (irchat-config-info-file-regexp): New variable.
-
- * irhcat-hilit.el: Require font-lock during compilation.
-
- * irchat-vars.el (irchat-tab-stop-list): New variable.
-
- * irhcat-000.el, irchat-200.el, irchat-300.el, irchat-400.el,
- irchat-ctcp.el: Do not use `mapcar' when registering handlers.
-
- * irchat-misc.el (irchat-find-etc-directory): New function.
-
- * irchat.el: Add autoloads for
- `bitmap-stipple-xbm-file-to-stipple' and
- `bitmap-stipple-insert-pixmap'.
-
- * irchat-xemacs.el (irchat-x-face-insert-with-xemacs): Use xface
- glyph if this feature has been provided and `console-type' returns
- 'tty or 'pc, or otherwise make string glyph.
- [Rename from overriding function `irchat-x-face-insert']
- (irchat-xemacs-create-nick-glyph): Call `console-type' instead of
- referring `window-system'.
- (irchat-xemacs-modeline-glyph): Check current console type.
- (irchat-xemacs-splash-at-point): Ditto.
- (irchat-find-etc-directory): Advise it.
-
- * irchat-compat.el (irchat-static-autoload): New macro.
- (colon-keyword-usable): New facility checking.
-
- * irchat-x-face.el: Add autoloads for `x-face-encode',
- `x-face-read-existing-file-name', `bitmap-insert-xbm-buffer',
- `bitmap-decode-xbm', `bitmap-read-xbm-buffer' and `bitmap-compose'.
- (irchat-x-face-insert-function): New variable.
- (irchat-x-face-insert-with-bitmap): Rename from overriding
- function `irchat-x-face-insert'.
-
- * irchat-url.el: Do not check with requiring browse-url. Assume
- that function `browse-url' have already been autoloaded.
-
-1999-08-01 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-command-mode): Set local value of
- `next-line-add-newlines' 't.
- (irchat-wait-for-response): Use `with-timeout'.
- (irchat): Do not use `make-variable-buffer-local' when
- `irchat-freeze' and `irchat-own-freeze' are initialized.
- (irchat-dialogue-mode): Define `irchat-freeze' and
- `irchat-own-freeze' here.
-
- * irchat-misc.el (next-line): Abolish.
-
- * irchat-handle.el (irchat-handle-nick-message): Fix typo.
-
-1999-07-30 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-inlines.el (string-list-modify-ignore-case): Fix typo.
-
-1999-07-29 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-make.el: Generate file `MANIFEST.liece'.
- (install-update-manifest-file): New function.
-
-1999-07-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-end-of-buffer): Do not use
- `set-window-point'.
-
- * irchat-300.el (irchat-handle-367-message): Use
- `irchat-channel-add-ban' instead of temp variable.
- (irchat-367-channel): Abolish.
- (irchat-367-regexps): Abolish.
- (irchat-handle-348-message): New handler for handling channel
- exception list.
- (irchat-handle-349-message): New handler for handling channel
- exception list.
-
-1999-07-27 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-mode-message): Handle channel
- exception list.
-
- * irchat-channel.el: (irchat-channel-get-exceptions): New macro.
- (irchat-channel-add-exception): New macro.
- (irchat-channel-remove-exception): New macro.
- (irchat-channel-set-exception): New macro.
-
-1999-07-25 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-end-of-buffer): Do not use
- `pop-to-buffer'.
- (irchat-command-describe-briefly): Do not use backquote.
-
-1999-07-24 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-compat.el: Do not refer `widget-minor-mode-map'.
-
- * irchat-hilit.el (irchat-highlight-maybe-turn-on-widget): Use
- `current-local-map' instead of `widget-minor-mode-map'.
-
- * Liece 1.3.4.
-
- * irchat-q-ccl.el (irchat-quote-ccl-encode-region): Fix typo.
-
- * irchat-crypt.el: Add autoload for `crc32-string'.
- (irchat-crypt-hash-crc32-string): New function.
- (irchat-crypt-default-hash-function): New variable.
- (irchat-crypt-key-fingerprint): Rewrite with above functions.
-
- * irchat-handle.el (irchat-handle-topic-message): Fix argument
- order of `irchat-channel-set-topic'.
-
- * irchat-misc.el (irchat-maybe-update-channel-indicator): Abolish.
- Call `irchat-set-channel-indicator' directly.
-
- * irchat-nick.el (irchat-nick-replace): Remove widgets.
-
- * irchat-menu.el (irchat-nick-popup-menu): Move "Kick" menu to the
- bottom of menu entries.
-
- * irchat-xemacs.el (irchat-xemacs-setup-menu): Ditto.
-
-1999-07-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-globals.el (irchat-frame-title-format-last): Abolish.
-
- * irchat.el (irchat-accept-response): Call `irchat' with no
- arguments. Here's the point that take care of growing tail.
- (irchat): Call `irchat-window-configuration-pop' and
- `irchat-window-configuration-push' consequently.
-
- * irchat-commands.el (irchat-command-keepalive): Call `irchat'
- with no arguments.
-
- * irchat-filter.el (irchat-sentinel): Call `irchat' with no
- arguments.
-
- * irchat-window.el: Add window configuration stack utility.
- (irchat-window-configuration-push): New function.
- (irchat-window-configuration-pop): New function.
- (irchat-window-configuration-stack): New variable.
-
- * irchat-compat.el: Require wid-edit and wid-browse during
- compilation.
- (widget-minor-mode-map): Bind `mouse-button-3'.
- (irchat-dont-set-event-point): New advice against
- `widget-button-click' for FSF Emacs.
- (irchat-save-current-buffer): New advice against
- `widget-button-click' for FSF Emacs.
- (remassq): New function.
-
- * irchat-channel.el (irchat-channel-push-button): Abolish.
- (irchat-channel-list-insert): Abolish.
- (irchat-channel-button): New widget.
- (irchat-channel-add-button): New function.
- (irchat-channel-button-action): New function.
-
- * irchat-url.el: Use widget.
- (irchat-url-link): New widget.
- (irchat-url-add-button): New function.
- (irchat-url-iterate-buffer): Abolish.
- (irchat-url-search-forward): Abolish.
- (irchat-url-add-to-completion): Abolish
- (irchat-url-link-action): Renamed from irchat-url-push-button.
-
- * irchat-hilit.el: Renamed from irchat-hilight.el.
- (irchat-highlight-overlay-put-mouse-face): Abolish.
- (irchat-highlight-insert-with-mouse-face): Abolish.
- (irchat-highlight-insert-line-with-mouse-face): Abolish.
- (irchat-highlight-with-widget): Abolish.
- (irchat-url-face): Abolish.
- (irchat-mouse-face): Abolish.
- (irchat-highlight-maybe-turn-on-widget): New function.
- This function turns on `widget-minor-mode' in
- `irchat-nick-mode', `irchat-channel-list-mode' or
- `irchat-dialogue-mode'.
-
-1999-07-21 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.3.3.
-
- * irchat.el (irchat-override-command-keys): Bind "\C-c\C-a" to
- `irchat-command-previous-channel'.
-
- * irchat-crypt.el: Add routines for encapsulate cipher algorithms.
- (irchat-crypt-import-cipher-algorithm): New function.
- (irchat-crypt-key-fingerprint): New function.
- (irchat-crypt-build-decryption-key): New function.
- (irchat-crypt-build-encryption-key): New function.
- (irchat-crypt-encrypt-string): New function.
- (irchat-crypt-decrypt-string): New function.
- (irchat-crypt-algorithm-major-version): New function.
- (irchat-crypt-algorithm-minor-version): New function.
- (irchat-crypt-secure-passphrase-read): Abolish.
- (irchat-crypt-ignore-suspicious): Abolish.
- (irchat-crypt-ignore-defected): Abolish.
- (irchat-get-idea-decryption-key): Abolish.
- (irchat-command-set-default-key): Check if this function was
- called interactively.
- (irchat-command-add-decryption-key): Renamed from
- `irchat-command-add-new-key'.
- (irchat-command-delete-decryption-key): Renamed from
- `irchat-command-delete-key'.
- (irchat-crypt-decryption-keys): Renamed from
- `irchat-crypt-known-keys'.
- (irchat-crypt-encryption-keys): Renamed from
- `irchat-crypt-default-keys'.
-
- * irchat-coding.el (irchat-default-mime-charset-for-read): New
- variable. Default to 'x-ctext.
-
- * irchat-compat.el: Do not require 'defface.
- (irchat-compat-enable-to-read-multibyte): Abolish.
-
- * irchat-modules.el (irchat-modules-to-compile): Remove
- `irchat-ck-*' and `defface'. Use `japanese-zenkaku-*' with hook.
-
- * irchat-vars.el (irchat-convert-hankaku-katakana): Abolished.
-
- * irchat-inlines.el: All string functions are rewritten.
-
-1999-07-05 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-ctcp.el: Register ACTION handler.
-
-1999-07-04 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-version.el (irchat-emacs-user-agent-value): Modify for
- XEmacs UTF-2000-MULE.
-
- * irchat-crypt.el: Do not use IDEA as the default cipher algorithm.
- (irchat-crypt-cipher-algorithm): New variable.
- (irchat-crypt-encrypt-message-format): Add version field of
- the cipher algorithm.
- (irchat-crypt-current-keys): Always restore the computed keys into
- this variable. [Renamed from irchat-default-idea-key-list]
-
-1999-06-26 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-xemacs.el (irchat-use-toolbar): Add custom spec.
- (irchat-toolbar-toggle-crypt): Check irchat-use-toolbar.
- (irchat-setup-toolbar): Ditto.
-
-1999-06-14 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.3.2.
-
- * irchat.el (irchat-define-keys): Rewrite.
- (irchat-truncate-nickname): Rewrite; rename from irchat-read-nickname.
-
- * irchat-handle.el, irchat-400.el, irchat-300.el, irchat-200.el,
- irchat-000.el:
- Declarations of hook variables are splitted into each file.
-
- * irchat-300.el: Register 322 reply handler.
-
-1999-06-11 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-dialogue-mode-map): Bind mouse-button-2 to
- irchat-url-push-button.
-
- * irchat-url.el (irchat-url-push-button): Check all overlays
- around event point.
-
- * irchat-filter.el (irchat-handle-message): Ignore errors which
- occurs during hook evaluation.
-
- * irchat-ctcp.el (irchat-ctcp-message): Ignore errors which
- occurrs during hook evaluation.
- (irchat-ctcp-notice): Likewise.
- (irchat-ctcp-file-notice): Likewise.
-
- * irchat-channel.el (irchat-channel-push-button): Use
- irchat-overlays-at instead of overlays-at.
-
-1999-06-10 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-hilight.el (irchat-quoted-colors-mirc):
- Rename from irchat-quoted-colors.
- (irchat-quoted-colors-ircle): New color table.
- (irchat-highlight-maybe-hide-prefix): Fix regexp.
- (irchat-highlight-colorize-quote): Check vender specific extension.
-
- * irchat-channel.el (irchat-channel-push-button):
- Check all overlays under the point.
-
- * irchat-filter.el: Rename default backend name to "generic".
-
- * irchat-handle.el: Use multiple values bindings.
- (irchat-handle-notice-message): Fix argument against
- irchat-ctcp-notice.
-
- *irchat-misc.el (irchat-compose-time-string): Use
- format-time-string. Now only accepts encoded time.
-
- * irchat-misc.el (irchat-pick-buffer): Check if chnl is string and
- apropriate buffer does not exist.
- (irchat-pick-buffer-1): Do not return buffer list.
-
-1999-06-10 Daiki Ueno <ueno@unixuser.org>
-
- * irchat.el (irchat-debug-mode-map): Abolish.
- (irchat-debug-keys): Abolish.
- (irchat-command-keys): Fix return key code.
-
- * irchat-window.el (irchat-window-to-buffer):
- Remove irchat-debug-buffer.
-
- * irchat-vars.el (irchat-debug-mode-hook): Abolish.
- (irchat-debug-prefix): Abolish.
-
- * irchat-nick.el (irchat-nick-equal): New alias to string-ci-equal.
- (irchat-nick-member): New function.
- (irchat-command-toggle-nick-buffer-mode): Do not toggle when
- irchat-nick-buffer has not been created.
-
- * llhandler.el, irchat-modules.el (irchat-modules-to-compile):
- Remove llhandler.
-
- * irchat-misc.el (irchat-split-line): New function.
- (irchat-split-rest): Abolish.
- (irchat-with-split-rest): Abolish.
- (irchat-maybe-update-channel-indicator): Do not use backquote.
- (irchat-freeze-toggle): Use irchat-nick-equal.
- (irchat-message-from-ignored): Rename from irchat-msg-from-ignored.
-
- * irchat-message.el (irchat-message-parent-buffer):
- Use irchat-nick-equal.
-
- * irchat-make.el (compile-irchat): Add comments.
-
- * irchat-intl.el (irchat-intl-prepare-prefix):
- Do not treat irchat-debug-prefix.
-
- * irchat-inlines.el (filter-elements): Move from irchat-compat.
-
- * irchat-globals.el (irchat-debug-buffer): Remove.
-
- * irchat-crypt.el (irchat-idea-encrypt-message-format): Rename from
- irchat-idea-encrypt-msg-format.
- (irchat-crypt-maybe-decrypt-message): Use irchat-nick-equal.
-
- * irchat-compat.el: Require cl at load time.
- (buffer-or-string-p): Remove.
- (irchat-get-buffer-window): Enclose with eval-and-compile.
- (irchat-get-buffer-window-list): Ditto.
- (irchat-mode-line-buffer-identification): New alias to 'identity.
- (mapvector): Remove.
-
- * irchat-commands.el (irchat-command-debug): Abolished.
- (irchat-command-join-channel): Use irchat-channel-equal.
- (irchat-command-join): Use force-mode-line-update.
- (irchat-command-private-conversation): Ditto.
- (irchat-command-list): Check if 1st argument is empty string.
- (irchat-command-who): Ditto.
- (irchat-command-names): Ditto.
- (irchat-command-mode+o): Use irchat-nick-member.
-
- * irchat-channel.el (irchat-command-toggle-channel-buffer-mode):
- Do not toggle when
- irchat-channel-buffer has not been created.
-
- * irchat-handle.el, irchat-filter.el, irchat-dcc.el,
- irchat-ctcp.el, irchat-500.el, irchat-400.el, irchat-300.el,
- irchat-200.el, irchat-000.el: Use llunf instead of llhandler.
-
- * llunf.el: New file.
-
- * idea.el, b64.el (>>): Move from irchat-compat.
- (<<): Ditto.
-
-1999-06-06 Daiki Ueno <ueno@unixuser.org>
-
- * irchat-misc.el (irchat-freeze-toggle): Use force-mode-line-update.
- (irchat-own-freeze-toggle): Ditto.
-
- * irchat-dcc.el: Require irchat-minibuf.el.
- (irchat-command-dcc-send): Use
- irchat-minibuffer-completing-default-read.
- (irchat-command-dcc-chat-listen): Ditto.
-
-1999-06-04 Daiki Ueno <ueno@unixuser.org>
-
- * irchat.el (irchat-override-command-keys): Add "\C-v" and "l".
- (irchat-dialogue-keys): Remove "\C-v" and "\C-f".
-
- * irchat.el (irchat-override-command-keys):
- Add "\C-n", "\C-p" and "\C-a".
- (irchat-dialogue-keys): Remove "\C-n" and "\C-p".
-
- * irchat-nick.el (irchat-nick-set-user-at-host): New macro.
- (irchat-nick-mark-as-apart): New macro.
- (irchat-nick-unmark-as-apart): New macro.
-
- * irchat-version.el (irchat-emacs-user-agent-value):
- Ignore parenthesis in
- `emacs-version' for XEmacs 21.2.15.
-
-1999-06-03 Daiki Ueno <ueno@unixuser.org>
-
- * irchat-handle.el, irchat-dcc.el, irchat-500.el, irchat-300.el,
- irchat-200.el: Do not check "strange" reply.
-
- * irchat-message.el (irchat-message-parent-buffer):
- Check if irchat-current-channel exists.
-
- * irchat-coding.el: Do not require irchat-vars.
-
- * irchat-menu.el (irchat-nick-popup-menu):
- Enclose save-selected-window.
-
- * irchat-misc.el (irchat-get-buffer-create): Do not use unless.
-
- * irchat-nick.el (irchat-nick-change): Set chnl property internally.
-
- * irchat-dcc.el (irchat-command-dcc-chat-listen):
- Use irchat-get-buffer-create instead
- of get-buffer-create.
- (irchat-command-dcc-chat-connect): Ditto.
- (irchat-dcc-compare-hostnames): Ditto.
-
- * irchat-ctcp.el (irchat-file-start):
- Use irchat-get-buffer-create instead of
- get-buffer-create.
- (irchat-file-cont): Ditto.
- (irchat-file-end): Ditto.
- (irchat-ctcp-client-notice): Ditto.
-
- * irchat.el (irchat-open-server-internal):
- Use irchat-get-buffer-create instead of
- get-buffer-create.
- (irchat-dialogue-setup-buffer): Ditto.
- (irchat-others-setup-buffer): Ditto.
- (irchat-channel-list-setup-buffer): Ditto.
- (irchat-private-setup-buffer): Ditto.
- (irchat-KILLS-setup-buffer): Ditto.
-
-1999-06-02 Daiki Ueno <ueno@unixuser.org>
-
- * irchat-xemacs.el (irchat-xemacs-nick-popup-menu):
- Remove save-excursion.
-
- * irchat-channel.el (irchat-channel-push-button):
- Remove save-excursion, just use save-selected-window instead.
- (irchat-channel-real): Remove save-match-data.
-
- * irchat.el (irchat-clear-system):
- Check irchat-obarray has been initialized.
-
- * Makefile.am (SOURCES): Add irchat-message.el and irchat-coding.el.
- (EXTRA_DIST): Add liece.xbm.
-
-1999-06-02 Daiki Ueno <ueno@unixuser.org>
-
- * Liece 1.3.1.
-
- * irchat-url.el (url-irc-liece): New function.
- [should be called from url-irc.el]
-
- * Makefile.am (EXTRA_DIST): Add bitmap-stipple.
-
-1999-06-02 Daiki Ueno <ueno@unixuser.org>
-
- * irchat-coding.el (irchat-detect-coding-region): New function.
- (irchat-detect-coding-region-function): Use above.
-
- * irchat-coding.el (irchat-detect-coding-string): New function.
- (irchat-detect-coding-string-function): Use above.
-
- * irchat-channel.el (irchat-channel-push-button):
- Switch to channel list buffer.
-
-1999-06-02 Daiki Ueno <ueno@unixuser.org>
-
- * irchat-nick.el (irchat-nick-update-region): Undo last change.
-
- * irchat-menu.el (irchat-nick-popup-menu): Switch to nick buffer.
-
- * irchat-filter.el: fix comments.
- (irchat-filter): Split multiple lines without string matching.
- (irchat-handle-message): Renamed from irchat-handle-message-2.
- (irchat-parse-user-at-host): New function.
-
- * irchat-coding.el (irchat-detect-coding-region-function): Renamed from
- irchat-custom-detect-coding-region-function.
- (irchat-detect-coding-string-function): Renamed from
- irchat-custom-detect-coding-string-function.
-
-1999-06-01 Daiki Ueno <ueno@unixuser.org>
-
- * irchat.el (irchat-command-mode): Do not use mapvector.
-
- * irchat-handle.el (irchat-handle-notice-msg): Fix arguments against
- with-irchat-decryption.
- (irchat-handle-privmsg-msg): Likewise.
-
- * irchat-commands.el (irchat-command-send-message): Fix arguments of
- with-irchat-encryption.
- (irchat-command-message): Likewise.
-
- * irchat-crypt.el (irchat-crypt-maybe-decrypt-message):
- Exchange car with cdr in arglist.
- (with-irchat-encryption): Accept flat arglist.
- (with-irchat-decryption): Likewise.
-
- * irchat.el (irchat-nick-mode-map): Define as prefix commands.
-
- * irchat.el (irchat-channel-mode): Eliminate channel indicator.
- (irchat-others-mode): Likewise.
- (irchat-dialogue-mode): Likewise.
-
- * irchat-misc.el (irchat-set-channel-indicator):
- Eliminate channel indicator.
-
- * irchat-ctcp.el (irchat-ctcp-action-msg):
- Use irchat-display-message.
-
-1999-06-01 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-400.el: Remove redundancies on regexps.
- (irchat-handle-432-msg) <ERR_ERRONEUSNICKNAME>: Rewrite.
- (irchat-handle-433-msg) <ERR_NICKNAMEINUSE>: Resend NICK command only
- if irchat-auto-iterate-nick is non-nil.
-
- * irchat.el (irchat-command-keys): Add irchat-command-mode+o,
- irchat-command-mode-o, irchat-command-mode+v, irchat-command-mode-v.
- XXX: Should be prefixed commands?
-
-1999-05-31 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-message.el (irchat-message-predicate):
- Normalize irchat-message-blackets-predicate.
-
- * irchat-inlines.el (irchat-eval-form): New function.
-
- * irchat-message.el (irchat-message-predicate):
- Rename specifier typep to type.
-
- * irchat-misc.el (irchat-own-channel-message):
- Bind irchat-message-direction 'outgoing.
- (irchat-own-private-message): Ditto.
-
- * irchat-message.el (irchat-message-tags): New variable.
- (irchat-message-tags-function): New function.
- (irchat-message-private-buffer): Abolished.
- Use irchat-message-buffer-function.
-
-1999-05-31 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-nick-update-region):
- Move opening save-excursion.
-
- * irchat-channel.el (irchat-channel-push-button):
- Move point to event ocurred position before calling
- irchat-nick-update-region.
-
- * irchat-nick.el (irchat-nick-update-region):
- Remove argument event from arglist.
-
- * irchat-menu.el (irchat-nick-popup-menu):
- Move point to event ocurred position before calling
- irchat-nick-update-region.
-
- * irchat-xemacs.el (irchat-xemacs-setup-menu):
- Remove argument event from arglist.
- (irchat-xemacs-nick-popup-menu): Move point to event ocurred
- position before calling irchat-nick-update-region.
-
- * irchat.el: Use modern key sequence expression.
- (irchat-command-map): New keymap which override
- irchat-dialogue-keys with prefix command ("\C-c").
- (irchat-friends-map): New keymap. [prefix command for friends]
- (irchat-dialogue-keys): Import some useful command keys.
-
- * irchat-channel.el (irchat-channel-parse-representation):
- To remove let, construct representation object directly.
-
- * irchat-channel.el (irchat-channel-list-insert): Remove format.
-
- * irchat-vars.el: Do not require mcharset.
-
- * irchat.el (irchat-nick-mode-map): Do not check xemacs.
-
- * irchat-xemacs.el (irchat-nick-popup-menu): New alias to
- irchat-xemacs-nick-popup-menu which override original one.
-
- * irchat-compat.el: Use emu's mouse-button emulation.
- (irchat-button2): Abolished.
- (irchat-button3): Abolished.
-
- * irchat-vars.el (irchat-variables-files): Do not load
- `~/.irchat3_vars.el' at startup time.
-
- * irchat-vars.el (irchat-debug-prefix): Clear.
-
- * irchat.el: Do not check `set-face-stipple' is bound.
- (irchat-x-splash): Add interactive spec.
-
-1999-05-30 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-x-splash): Do centering.
-
- * bitmap-stipple.el (bitmap-stipple-insert-pixmap):
- Add optional argument center.
-
- * liece.xbm: New file.
-
- * irchat.el: Check if liece.xbm exists.
-
- * irchat.el (irchat-stipple-pixmap): New variable.
- (irchat-x-splash): New function.
-
- * bitmap-stipple.el: New file.
-
- * irchat-modules.el (irchat-modules-to-compile): Add bitmap-stipple.
-
- * irchat-commands.el (irchat-command-send-action): Fix typo.
-
- * irchat-hilight.el (irchat-highlight-font-lock-keywords):
- Fix regexp.
-
- * irchat-inlines.el (irchat-or): New function.
- (irchat-and): New function.
-
- * irchat-filter.el (irchat-handle-msg-msg): Abolished.
-
- * irchat-crypt.el (irchat-message-encrypted-p): Move into
- irchat-message.
- (irchat-message-suspicious-p): Ditto.
- (irchat-message-garbled-p): Ditto.
- (irchat-message-fingerprint): Ditto.
- (irchat-message-timestamp): Ditto.
-
- * irchat-vars.el: All format strings are removed.
- (irchat-format-string): Abolished.
-
- * irchat-modules.el (irchat-modules-to-compile): Add
- irchat-message.
-
- * irchat-dcc.el (irchat-dcc-chat-filter): Use
- irchat-display-message.
-
- * irchat-commands.el (irchat-command-send-action):
- Bind irchat-message-type.
-
- * irchat-handle.el (irchat-handle-privmsg-msg):
- Use irchat-display-message.
- (irchat-handle-privmsglike-msg): Abolished.
-
- * irchat-misc.el (irchat-own-channel-message):
- Use irchat-display-message.
- (irchat-own-private-message): Likewise.
-
- * irchat-message.el: New file.
-
-1999-05-29 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el, irchat-vars.el (irchat-before-kill-emacs-hook): New hook.
-
-1999-05-29 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-vars.el (irchat-signoff-message):
- Renamed from irchat-signoff-msg.
-
- * irchat.el (irchat-obarray-size): Moved from irchat-globals.el.
-
- * irchat-globals.el: Remove obsolete variables.
-
- * irchat-ctcp.el (irchat-client-error-message):
- Moved from irchat-globals.el.
-
- * irchat-commands.el (irchat-save-variables-are-dirty): Renamed
- from irchat-save-vars-is-dirty.
- (irchat-command-send-action): Add prefix.
-
- * irchat-400.el (irchat-nickname-last): Renamed from
- irchat-old-nickname.
-
- * irchat-000.el (irchat-servername): Abolished.
-
-1999-05-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-crypt.el: Do not require 'idea.
-
- * irchat-commands.el (irchat-command-message): Treat channel target.
-
- * irchat-300.el (irchat-handle-317-msg) <RPL_WHOISIDLE>:
- Add argument rest to match-string.
-
-1999-05-28 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.2.8.25.
-
- * irchat.el (irchat-command-keys): Do not bind lisp-complete-symbol.
-
- * irchat-commands.el (irchat-command-load-vars): Enclose body with
- unwind-protect.
- (irchat-command-complete): Use irchat-minibuffer-finalize-completion.
- (get-word-left): Abolished.
- (irchat-switch-to-channel-1): New function.
- (irchat-switch-to-channel): Use irchat-switch-to-channel-1.
- (irchat-switch-to-channel-no): Likewise.
- (irchat-command-message): Check crypt-type.
-
- * irchat-minibuf.el (irchat-minibuffer-complete-channel-modes):
- Complete ban patterns.
- (irchat-minibuffer-parse-modes): Rename property 'uah to 'ban.
-
- * irchat-handle.el (irchat-handle-mode-msg):
- Use irchat-channel-set-ban.
-
- * irchat-channel.el (irchat-channel-add-ban): New macro.
- (irchat-channel-remove-ban): New macro.
- (irchat-channel-set-ban): New macro.
- (irchat-channel-get-bans): New function.
-
- * irchat-300.el:
- (irchat-handle-317-msg) <RPL_WHOISIDLE>: Remove condtionals for
- obsolete servers. [2.5 or 2.6].
- (irchat-handle-367-msg) <RPL_BANLIST>: Treat it as generic long
- reply handler.
- (irchat-367-channel): New variable.
- (irchat-367-regexps): New variable.
- (irchat-handle-368-msg) <RPL_ENDOF_BANLIST>: Save ban patterns as
- 'ban property.
-
-1999-05-26 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-clear-system):
- Use dotimes when initializing irchat-obarray.
-
-1999-05-26 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-command-keys):
- Bind irchat-command-display-friends.
-
- * irchat-commands.el (irchat-command-display-friends): New command.
-
- * irchat-vars.el (irchat-display-friends-function): New variable.
-
- * irchat-300.el (irchat-303-display-friends): New function.
- (irchat-303-display-all-friends): New function.
-
- * irchat-minibuf.el (irchat-minibuffer-complete-channel-modes):
- Complete nickname using operators and voices.
- (irchat-minibuffer-parse-modes): Likewise.
- (irchat-minibuffer-finalize-completion): Notice no match found.
-
- * Makefile.am: New file.
-
-1999-05-25 UENO Daiki <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-others-mode): Set parent mode explicitly.
- (irchat-channel-mode): Ditto.
-
-1999-05-24 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-minibuf.el (irchat-minibuffer-parse-modes): Parse ban
- pattern.
-
- * irchat-200.el (irchat-handle-206-msg) <RPL_TRACESERVER>:
- Use multiline display format.
- (irchat-handle-214-msg) <RPL_STATSNLINE>: Likewise.
- (irchat-handle-213-msg) <RPL_STATSCLINE>: Likewise.
-
- * irchat-ctcp.el (irchat-client-insert): Quote format string.
-
-1999-05-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * Liece 1.2.8.24.
-
- * irchat-ctcp.el (irchat-minibuffer-complete-client-query): Use
- `irchat-minibuffer-finalize-completion'.
-
- * irchat-minibuf.el (irchat-minibuffer-finalize-completion): New
- function.
- (irchat-minibuffer-complete-channel-modes): Use above.
-
- * irchat.el (irchat-check-buffers): Fix loop condition.
-
-1999-05-23 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-dcc.el (irchat-dcc-message): New function.
-
- * irchat-nick.el (irchat-nick-join-1): Check dups.
-
- * irchat-ctcp.el (irchat-client-insert): New function.
-
- * irchat-commands.el (irchat-command-prepare-message-prefix):
- Abolished.
- (irchat-command-prepare-own-message-prefix): Ditto.
-
- * irchat-misc.el (irchat-own-private-message): Generate prefix
- string automatically.
- (irchat-own-channel-message): Likewise.
-
-1999-05-22 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
-
- * irchat-compat.el (run-hook-with-args-until-success): Abolished.
-
- * irchat.el (irchat-command-mode): Change mode-line-format.
- (irchat-open-server): Save password.
- (irchat-insert-internal): Rewrite.
-
- * irchat-200.el (irchat-handle-215-msg) <RPL_STATSILINE>:
- Fix regexp.
- (irchat-handle-242-msg) <RPL_STATSUPTIME>: Cut off preceding `:'.
- (irchat-handle-205-msg) <RPL_TRACEUSER>: Fix typo.
- (irchat-handle-218-msg) <RPL_STATSYLINE>: Fix display format.
-
-1999-05-13 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-inlines.el (format-quote): Abolished.
-
- * irchat-ctcp.el (irchat-ctcp-action-msg): Pass arguments to
- PRIVMSG handler.
-
- * irchat-hilight.el (irchat-highlight-turn-on-font-lock): Make
- `after-change-hook' local.
-
-1999-05-12 sphere <sphere@pop12.odn.ne.jp>
-
- * irchat-url.el (irchat-command-browse-url): Fix typo.
-
-1999-05-11 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-crypt.el (irchat-command-set-default-key): Fix typo.
-
- * irchat-window.el (irchat-command-set-window-style): Fix typo.
-
- * irchat-url.el (irchat-command-browse-url): Fix typo.
-
- * irchat-channel.el (irchat-channel-set-voice): Quote regexp.
-
-1999-05-09 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ctcp.el (irchat-command-client-time): Fix typo.
-
- * irchat.el (irchat-channel-mode): Explicitly define as
- it derives from `irchat-dialogue-mode'.
- (irchat-others-mode): Ditto.
-
- * irchat-compat.el (irchat-kill-all-overlays): New function.
-
- * irchat-nick.el (irchat-nick-update): Do not switch to buffer.
- (irchat-nick-join): Do not check whether nickname has been inserted.
- (irchat-nick-update): Kill all overlays.
-
- * irchat-mail.el: Follow the value of `mail-user-agent'.
- (irchat-mail-pop-to-buffer): Abolished.
- (irchat-mail-compose-with-mail): Abolished.
- (irchat-mail-compose-with-gnus): Abolished.
-
- * irchat-inlines.el (nth1, nth1cdr):Abolished.
- (matching-substring): Abolished.
- (irchat-greater-flags): Abolished.
-
-1999-05-08 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-353-scan-channels): New macro.
-
- * irchat-minibuf.el (irchat-minibuffer-completing-default-read):
- Renamed from `irchat-completing-default-read'.
- (irchat-minibuffer-completing-sequential-read): Renamed from
- `irchat-completing-sequential-read'.
-
- * irchat-channel.el (irchat-channel-set-operator-1): Renamed from
- `irchat-set-channel-operator' within irchat-misc.el.
- Restrict its use to internal only.
- (irchat-channel-set-voice-1): Likewise.
-
- * irchat-commands.el (irchat-command-wait): Abolished.
-
- * irchat-nick.el (irchat-nick-update): Assume that the 2nd
- argument CHNL is one of channels we've already joined.
-
- * irchat-misc.el (irchat-change-nick-of): Change nicks, opers and
- voices properties properly.
- (irchat-change-nick-of-1): New function. Modify nick alist by
- side effect.
- (irchat-change-nick-of-2): New function which resembles above,
- but it acts on singular list.
- (irchat-greet-user): Abolished.
- (irchat-user-on-my-channel): Abolished.
- (irchat-user-on-this-channel): Abolished.
-
- * irchat-handle.el (irchat-handle-channel-msg): Do not use
- `irchat-change-nick-of' directly.
- (irchat-handle-nick-msg): Likewise.
- (irchat-handle-quit-msg): Likewise.
-
-1999-05-07 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-nickname): Do not set
- `irchat-real-nickname'.
-
-1999-05-06 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.23.
-
- * irchat-hilight.el (irchat-quoted-colors): New variable.
- (irchat-highlight-colorize-quote): New function.
- (irchat-highlight-turn-on-font-lock): Add buffer locality to
- some members of `after-change-hook'.
-
- * Makefile (install): Do not depend on `dcc'.
-
-1999-05-05 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-part-msg): Call
- `irchat-channel-part' and `irchat-nick-part' exclusively.
- (irchat-handle-kick-msg): Likewise.
-
- * irchat-channel.el (irchat-channel-equal): New alias.
- (irchat-channel-member): Renamed from `irchat-channel-memberp'.
- (irchat-channel-join-internal): New function.
- (irchat-channel-part-internal): New function.
-
- * irchat-ctcp.el (irchat-ctcp-client-msg): Fix reply string.
-
- * irchat-minibuf.el (irchat-minibuffer-parse-modes): Completion
- fixed for ban pattern.
-
- * irchat-nick.el (irchat-nick-normalize): New macro.
- (irchat-nick-strip): New macro.
- (irchat-nick-parse-nick-after): New function.
-
- * irchat-handle.el (irchat-handle-silence-msg): New handler.
-
-1999-05-04 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-part-msg): Fix quotation of part
- message.
-
- * irchat-400.el: Fix unconsistent user data returned from pirc.
- (irchat-handle-442-msg): `ERR_NOTONCHANNEL'.
- (irchat-handle-443-msg): `ERR_USERONCHANNEL'.
-
- * irchat-misc.el (irchat-update-thischannel): Abolished.
-
- * irchat-commands.el (irchat-channel-virtual): Save matched data.
- (irchat-channel-real): Likewise.
-
- * irchat-300.el (irchat-handle-364-msg): `RPL_LINKS'. Fix regexp.
- (irchat-handle-333-msg): New hander for `RPL_TOPICWHOTIME'.
- (irchat-handle-namereply-msg): Abolished.
- (irchat-handle-whoreply-msg): Abolished.
-
- * irchat-000.el (irchat-handle-005-msg): `RPL_MAP'.
- Support for ircu server mapping facility.
- (irchat-handle-006-msg): New handler for `RPL_MAPMORE'.
- (irchat-handle-007-msg): New handler for `RPL_MAPEND'.
-
-1999-05-03 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-part-msg): Handle left message.
-
- * irchat-custom.el (irchat-connection-timeout): New variable.
-
- * irchat.el (irchat-accept-response): Add optional arg timeout.
- (irchat-accept-process-output): New function.
- (irchat-clear-system): Reset `irchat-timers-list-initialized-p'.
- (irchat-initialize-timers): Fix secs parameter.
-
- * irchat-xemacs.el (irchat-xemacs-run-at-time): New function.
-
- * irchat-compat.el (irchat-run-at-time): New alias.
- (irchat-cancel-timer): New alias.
-
- * irchat-commands.el (irchat-command-start-ison-timer): Abolished.
- (irchat-command-cancel-ison-timer): Abolished.
-
- * irchat-timer.el: Removed.
-\f
-1999-04-29 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-initialize-timers): New function.
-
- * irchat-q-ccl.el (irchat-quote-ccl-decode-region): New function.
- (irchat-quote-ccl-encode-region): New function.
-
- * irchat-q-el.el (irchat-quote-el-decode-region): New function.
- (irchat-quote-el-encode-region): New function.
-
- * irchat-ctcp.el (irchat-complete-client): New macro.
- (irchat-complete-query): New macro.
- (irchat-command-client-time): New command.
- (irchat-ctcp-client-msg): Rename each *-msg-hook to *-hook.
- (irchat-minibuffer-complete-client-query): New function.
-
- * irchat-commands.el (irchat-command-activate-friends): Fix
- completion.
-
- * irchat-compat.el (filter-elements): Add `lisp-indent-function'
- property with value 2.
-
-1999-04-28 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-dcc.el (irchat-dcc-object): Implement as cl-struct.
-
- * irchat-compat.el (irchat-static-require): New macro.
- (irchat-static-require-if): New macro.
- (irchat-static-defun-if): New macro.
-
- * Liece 1.2.8.22.
-
-1999-04-27 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * README-styles.ja, TODO.ja, sample.dot.liece.ja: Removed.
-
-1999-04-26 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-inlines.el: Require irchat-setup.
-
- * irchat-x-face.el: Use `static.el'.
-
- * irchat-handle.el (irchat-handle-join-msg): Set user-at-host
- information after calling `irchat-nick-join'.
-
- * irchat-globals.el (irchat-default-channel-candidate): New
- variable.
-
-1999-04-22 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-324-msg): Fix regexp.
-
-1999-04-16 Daiki Ueno <ueno@bleu.ueda.info.waseda.ac.jp>
-
- * irchat-xemacs.el: Add hooks to hide modelines.
-
-1999-04-12 Daiki Ueno <ueno@bleu.ueda.info.waseda.ac.jp>
-
- * irchat.el (irchat-refresh-windows): New function.
-
- * irchat-300.el: Remove all occurrences of `matching-substring'.
- (irchat-handle-352-msg): Do not pick-up channel buffer.
-
- * irchat-config.el, irchat-modules.el: New files.
-
-1999-04-07 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-switch-to-channel-no-*): Use `dotimes' on the
- definitions of themselves.
-
- * irchat-vars.el (irchat-ignore-spec-convert): Fix tag.
-
-1999-04-06 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * dcc.c (send_file): Use `get_address_externally'.
- (chat_listen): Likewise.
-
-1999-04-05 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * getaddrinfo.c: Include `stdlib.h'.
-
-1999-04-04 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.21.
-
- * irchat-handle.el (irchat-handle-mode-msg): Fix channel mode parser.
-
- * irchat-commands.el (irchat-command-ban-kick): New command.
- (irchat-command-ban): New command.
-
- * irchat-ctcp.el (irchat-ctcp-version-msg): Eliminate the client
- version string.
- (irchat-client-version-notice): Fix regexp.
- (irchat-client-version-insert): New function.
-
- * irchat-misc.el (irchat-repair-crlf): Fixed.
-
-1999-04-01 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * tcp.c (NI_MAXHOST): Add check if it has been already defined.
-
- * irchat.el (irchat-command-keys): Bind `C-c C-j'.
-\f
-1999-03-31 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-mode-msg): Fix regexp.
-
- * irchat-commands.el (irchat-command-finger): Add prefix arg.
-
-1999-03-30 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-filter.el (irchat-handle-message): Fix regexp.
-
- * irchat-handle.el (irchat-handle-join-msg): Fix regexp.
- (irchat-handle-nick-msg): Fix regexp.
-
-1999-03-24 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-finger): Specify nick twice.
-
- * liece-faq.texinfo: Fix URI of APEL's ftp sites.
-
-1999-03-17 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.20.
-
- * irchat-crypt.el (with-irchat-encryption): New macro.
- (with-irchat-decryption): New macro.
-
- * irchat-compat.el (valid-plist-p): Fixed.
-
- * irchat-tcp.el (irchat-tcp-default-connection-type): Renamed from
- `irchat-tcp-connection-type'.
- (irchat-open-network-stream-as-binary): Add optional arg `type'.
- (irchat-open-network-stream): Likewise.
-
- * irchat-vars.el (irchat-server-alist): Add `:prescript' and
- `:type' keywords.
-
-1999-03-16 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-compat.el: Require `pcustom'.
- (point-at-bol): Abolished. Use `line-beginning-position'.
- (point-at-eol): Abolished. Use `line-end-position'.
-
- * tcp.c: New file.
-
- * irchat-tcp.el: New file; TCP/IP emulation using external program.
-
- * irchat-compat.el (read-passwd): New function to keep compatibility.
- (passwd-echo): New variable to keep compatibility.
-
- * irchat-commands.el (irchat-command-who): Confirm really send WHO
- command with no arguments.
- (irchat-command-list): Likewise.
- (irchat-command-names): Likewise.
-
- * irchat-misc.el (irchat-set-crypt-indicator): Activate crypt mode
- also in private mode.
- (irchat-read-passwd): Abolished. Use `read-passwd'.
-
- * irchat-crypt.el (irchat-crypt-maybe-encrypt-message): Renamed
- from `irchat-crypt-with-encrypt-message'.
- (irchat-crypt-maybe-decrypt-message): Likewise.
-
-1999-03-15 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-join-msg): Fix regexp.
-
- * irchat-hilight.el (irchat-highlight-maybe-hide-quote): Fixed.
-
-1999-03-14 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.19.
-
- * irchat-commands.el (irchat-command-poll-names): Check if
- `irchat-server-opened' returns t.
- (irchat-command-poll-friends): Likewise.
-
- * irchat-hilight.el (irchat-highlight-turn-on-font-lock): Remove
- all hooks before calling `turn-on-font-lock'.
-
- * irchat-compat.el (run-hook-with-args-until-success): Do not use
- `run-hook-with-args'.
-
- * irchat-filter.el (irchat-handle-message-2): Use
- `run-hook-with-args-until-success' instead of
- `run-hook-with-args'.
-
- * irchat-handle.el (irchat-handle-with-running-cleartext-hook):
- Use `run-hook-with-args-until-success' instead of
- `run-hook-with-args'.
- (irchat-handle-run-cleartext-hook): Likewise.
- (irchat-handle-run-hook-with-args): Likewise.
-
- * irchat-timer.el (irchat-start-timer): Use `run-at-time' with 1st
- argument 0 instead of nil.
-
- * irchat-ctcp.el (irchat-query-client-nick-maybe-change): Return
- with nil explicitly.
-
- * irchat-vars.el (irchat-service-spec): New widget.
- (irchat-service-spec-convert): New function; widget-converter.
- (irchat-server-spec): New widget.
- (irchat-server-spec-convert): New function; widget-converter.
- (irchat-ignore-spec): New widget.
- (irchat-ignore-spec-convert): New function; widget-converter.
-
- * irchat-url.el (irchat-command-browse-url): Use the URL added
- most recently, if `current-prefix' equals `-'.
- (irchat-url-browser-netscape): Do not bind the process buffer.
-
- * irchat-menu.el (irchat-menu-add-button): Add 3rd argument.
-
-1999-03-13 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-xemacs.el: Use extents instead of overlays.
- (irchat-xemacs-put-text-property): New function.
- (irchat-xemacs-get-text-property): New function.
- (irchat-xemacs-kill-all-overlays): New function.
- (irchat-xemacs-overlays-at): New function.
-
- * irchat-compat.el (irchat-make-overlay): New emulation function.
- (irchat-delete-overlay): Ditto.
- (irchat-overlay-put): Ditto.
- (irchat-move-overlay): Ditto.
- (irchat-overlay-end): Ditto.
- (irchat-overlay-get): Ditto.
- (irchat-overlays-at): Ditto.
- (irchat-kill-all-overlays): Ditto.
-
-1999-03-12 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-xemacs.el (irchat-toolbar-toggle-crypt): New function.
- (irchat-toolbar-icon-convert): New function; widget-converter.
- (irchat-toolbar-icon): New widget.
- (irchat-toolbar-icon-plist-get): New function.
- (irchat-toolbar-map-button-list): New function.
- (irchat-xemacs-setup-toolbar): Renamed from
- `irchat-xemacs-setup-toolbar-list'.
- (irchat-toolbar-setup-crypt-glyph): New function.
- (irchat-toolbar-toggle-crypt): New function.
- (irchat-use-toolbar): New customizable variable.
-
- * irchat-compat.el (irchat-put-text-property): Implemented as
- function.
-
- * irchat.el (irchat-after-load-startup-hook): New hook variable.
-
- * irchat-hilight.el (irchat-highlight-maybe-turn-on-font-lock):
- New function.
-
- * Liece 1.2.8.18.
-
- * irchat-channel.el (irchat-channel-create-buffer): Use
- `irchat-format-time-function'.
-
- * irchat-hilight.el: Use font-lock.el.
-
-1999-03-11 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-debug.el (irchat-debug-enter-handler): Moved from
- llhandler.el.
- (irchat-debug-leave-handler): Ditto.
-
- * llhandler.el (llhandler-debug-enter): Abolished.
- (llhandler-debug-leave): Abolished.
-
- * irchat-version.el (irchat-emacs-user-agent-value): New variable
- imported from `mime-edit-user-agent-value' of SEMI.
- (irchat-user-agent-value): New variable.
- (irchat-make-user-agent-string): Abolished.
- (irchat-make-emacs-user-agent-string): Abolished.
- (irchat-command-version): New command.
-
- * irchat-hilight.el (irchat-maybe-highlight-region): New function.
- (irchat-maybe-smiley-region): New function.
- (irchat-maybe-highlight-url-region): New function.
- (irchat-highlight-put-url-properties-region): New function.
-
- * irchat-ctcp.el: Add hooks in order to let
- `irchat-query-client-nick' follow the changes.
- (irchat-query-client-nick-maybe-change): New function.
- (irchat-query-client-nick-maybe-reset): New function.
-
- * irchat-url.el (irchat-url-gather-hook): New hook variable.
- (irchat-command-browse-url): Use `_'.
- (irchat-url-gather-urls-region): New function.
- (irchat-url-search-forward): New function.
-
- * irchat-compat.el (easy-menu-add-item): New alias.
-
- * irchat-xemacs.el (easy-menu-add-item): New advice.
-
-1999-03-10 Tsunehiko Baba <tbaba@mtl.t.u-tokyo.ac.jp>
-
- * dcc.c (main): Add cast against return value of basename(3).
-
-1999-03-10 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-menu.el (irchat-menu-url-menu): New variable.
-
- * Liece 1.2.8.17.
-
- * irchat-misc.el (irchat-compose-time-string): Renamed from
- `irchat-compose-servertimestring'.
-
- * irchat-compat.el (plist-get): New function for compatibility.
-
- * irchat-ctcp.el (irchat-client-time-notice): New handler.
- (irchat-ctcp-time-msg): Ditto.
-
- * irchat-minibuf.el (irchat-minibuffer-complete-channel-modes):
- Also display candidates when `irchat-minibuffer-parse-modes'
- returns 'flag.
-
- * irchat-400.el (irchat-handle-433-msg): `ERR_NICKNAMEINUSE'.
- Do grow-tail iteration on `irchat-real-nickname' only if
- `irchat-auto-iterate-nick' is specified.
-
- * irchat-vars.el (irchat-server-alist): Enable to specify keywords
- (:host, :service, :password, etc.).
- (irchat-auto-iterate-nick): New customizable variable.
-
- * irchat-menu.el (irchat-menu-add-url): New function.
- (irchat-command-mode-url-menu): New menu entry.
-
- * irchat.el (irchat): Do not ping to server.
- (irchat-open-server): Use new format of `irchat-server-alist'.
-
-1999-03-02 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-privmsglike-msg): Define as subst.
-
- * irchat-make.el (install-just-print-p): New function
- imported from APEL 9.13's `APEL-MK'.
- (config-irchat-package): Likewise.
- (compile-irchat-package): Likewise.
- (install-irchat-package): Likewise.
- (install-update-package-files): Likewise.
- (make-irchat-sample-files): New function imported from packaged
- version of Liece.
- (make-irchat-info-files): Ditto.
-
- * irchat-300.el (irchat-handle-366-msg): Do not update nicks when
- `irchat-353-nameslist' holds no element.
-
-1999-03-01 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-quit-msg,
- irchat-handle-mode-msg, irchat-handle-join-msg,
- irchat-handle-part-msg): Quote regexp.
-
-1999-02-28 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-clear-system): Fix backquotes.
-
-1999-02-25 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-handle-303-msg): Fix. Add check for empty
- reply.
-
-1999-02-24 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-notice-msg): Fix. Call handler
- with `funcall'.
-
- * irchat.el (irchat-channel-mode-map): Make keymap as sparse.
- (irchat-others-mode-map): Likewise.
-
- * irchat-commands.el (irchat-command-deactivate-friends):
- Fix argument.
-
- * Liece 1.2.8.16.
-
- * irchat-globals.el (irchat-who-expression): New variable.
-
- * irchat-misc.el (irchat-toggle-command-buffer-mode): Change
- `irchat-private-indicator'.
-
- * irchat-300.el (irchat-handle-315-msg): `RPL_ENDOFWHO'.
- Display `no matches found' message
- (irchat-handle-{322,323,353,366}-msg): Count iterations.
-
- * irchat.el (irchat-command-mode): Do not save
- `frame-title-format' twice. Use `irchat-current-channel' in place
- of `irchat-channel-indicator'.
-
- * llhandler.el (llhandler-debug-enter): New function.
- (llhandler-debug-leave): New function.
- (llhandler-define-handler): New macro.
- (llhandler-eval-args): Abolished.
-
- * irchat-crypt.el (irchat-encrypt-message): Encode messages.
- (irchat-decrypt-message): Likewise. Decode messages.
- (irchat-crypt-with-encrypted-message): Do not encode message which
- has type `cleartext'.
-
-1999-02-23 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-send-pong): New macro.
- (irchat-increment-long-reply-count): New macro.
- (irchat-reset-long-reply-count): New macro.
- (irchat-check-long-reply-count): New macro.
-
- * irchat-globals.el (irchat-long-reply-count) New variable.
- (irchat-long-reply-max): New variable.
-
- * irchat-commands.el (irchat-command-save-vars): Fix. Set marker
- at output position.
-
-1999-02-21 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-handle-303-msg): Add differential IsON.
-
- * irchat-commands.el (irchat-command-start-ison-timer,
- irchat-command-cancel-ison-timer, irchat-command-activate-friends,
- irchat-command-deactivate-friends): Do completion case
- insensitively.
-
- * irchat-vars.el (irchat-saved-forms): Add symbol `irchat-friends'
- to be saved its value.
-
-1999-02-20 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.15.
-
- * irchat-filter.el (irchat-sentinel): Do not throw signal, just
- clear whole system.
- (irchat-sentinel-error): Ditto.
-
- * irchat-vars.el (irchat-friends): New user customizable variable.
- (irchat-poll-friends-interval): New user customizable variable.
- (irchat-poll-names-interval): New user customizable variable.
-
- * irchat-commands.el (irchat-command-poll-names): Renamed from
- `irchat-command-pollnames'; implemented as function.
- (irchat-command-keepalive): Implemented as function.
- (irchat-command-poll-friends): New function.
- (irchat-command-activate-friends): New command.
- (irchat-command-deactivate-friends): New command.
-
- * irchat-300.el (irchat-handle-331-msg): Call
- `irchat-set-channel-indicator'.
- (irchat-handle-332-msg): Ditto.
-
- * irchat-globals.el (irchat-channel-status-indicator): New
- variable; default value of `frame-title-format'.
- (irchat-friends-last): New variable.
- (irchat-frame-title-format-last): New variable.
-
- * irchat-misc.el (irchat-set-frame-title-format): Do not calculate
- `frame-title-format' directly.
- (irchat-maybe-update-channel-indicator): New macro.
-
-1999-02-20 P.F.FrontJr. <pff@softai.co.jp>:
-
- * irchat-misc.el (irchat-set-channel-indicator): Display channel
- status on mode line.
-
- * irchat-vars.el (irchat-display-status-on-channel-indicator):
- New user customizable variable.
-
-1999-02-15 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-read-variables-files): Set alternative
- startup file as primary one.
-
- * irchat-timer.el (irchat-start-timer): Do not require `timer' or
- `itimer'; autoload timer functions.
- (irchat-cancel-timer): Ditto.
-
-1999-02-14 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ck-ccl (irchat-ck-ccl): Remove.
- (irchat-ck-ccl-cj-to-ck-string): Use `ccl-execute-on-string'.
- (irchat-ck-ccl-ck-to-cj-string): Ditto.
-
- * irchat-xemacs.el (irchat-xemacs-setup-toolbar): New function.
-
- * irchat-menu.el (irchat-command-add-menus): New function; add
- menubar menus explicitly.
-
- * irchat-coding.el (irchat-coding-custom-detect-coding-region):
- New variable; set user customizable function to detect coding system.
- (irchat-coding-custom-detect-coding-string): Likewise.
- (irchat-detect-coding-string-tcljp): Transported from
- `tclKanjiUtil.c'; trivial encoding detection routine.
- (irchat-default-coding-system): Moved from `irchat-vars.el'.
- (irchat-default-mime-charset): Ditto.
- (irchat-detect-coding-system): Ditto.
-
- * crc32.el (crc32-region): Remove `mark-active'.
-
- * irchat-timer.el (irchat-cancel-timer): Fix for XEmacs's
- `itimer'.
-
- * Liece 1.2.8.14.
-
- * irchat-dcc.el (irchat-dcc-requests): Rename from
- `irchat-dcc-request-list'; implemented as actually a queue.
-
- * queue-m.el: New file; imported from elib.
-
- * irchat-filter.el (irchat-filter): Remove checking whether
- process output line contains LF; remove duplicated LF checking
- likewise; enclose with `save-match-data'.
- (irchat-handle-message): Add checking user-at-host cookie with
- restricted line.
-
- * irchat-window.el (irchat-window-functionp): Remove; use
- `irchat-functionp'.
-
- * irchat-channel.el (irchat-channel-get-nicks): Fix; apply car
- against each elements.
-
-1999-02-13 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-mode+o,
- irchat-command-mode+v): Build completion list using
- `filter-elements'.
-
- * irchat-vars.el (irchat-exit-hook): Rename from
- `irchat-Exit-hook'.
-
- * irchat-inlines.el (irchat-functionp): New macro.
-
- * irchat-compat.el (mapvector): New macro.
-
- * irchat-misc.el (irchat-greet-author): Remove.
- (irchat-split-rest): Fix arguments.
- (irchat-completing-default-read): 3rd and later arguments become
- optional.
- (irchat-completing-sequential-read): Evaluate completion table
- consequently; Add optional argument `multiple-candidate', if this
- arg is non-nil always create new table with its initial state.
-
- * llhandler.el (llhandler-define-entry-point): Add debugging
- triger in frount of function definition.
- (llhandler-define-with-return): Ditto.
- (llhandler-define): Ditto.
- (llhandler-enter-format-string): New constant; for debugging use.
- (llhandler-leave-format-string): Ditto.
- (llhandler-eval-args): New macro.
-
- * irchat.el (irchat-open-server-internal): Use
- `open-network-stream-as-binary'.
- (irchat-startup-hook): Rename from `irchat-Startup-hook'.
-
-1999-02-07 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.13.
-
- * idea.el (idea-ecb-decrypt-string): Enclose Base64 decoded string
- with `string-as-unibyte'.
- (idea-cbc-decrypt-string): Ditto.
-
- * idea.el: Sync up with Irchat-980625-2.
-
- * crc32.el: Ditto.
-
- * irchat-300.el (irchat-handle-303-msg): Fix matched string.
-
- * irchat-handle.el (irchat-handle-privmsg-msg): Check whether
- private message has come from entirely outer.
-
- * irchat-filter.el (irchat-handle-message): Remove all occurence
- of CR out of inputs :(
-
-1999-02-06 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-read-variables-files): Save alternatively
- specified startup file name into `irchat-variables-files'.
-
-1999-02-04 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-dcc.el (irchat-command-dcc-accept): Remove destructive
- checking.
-
- * irchat-make.el: Do not use `add-to-list' for Emacs19.
-
- * irchat-nick.el (irchat-nick-replace): Fixed regexp.
-
-1999-02-03 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-coding.el (irchat-coding-detect-coding-region)
- (irchat-coding-detect-coding-string): New function.
- (irchat-coding-decode-mime-charset-region): Use above directly.
- (irchat-coding-decode-mime-charset-string): Ditto.
-
-1999-02-02 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-who): Fixed setting
- `irchat-channel-alist.
-
- * Liece 1.2.8.12.
-
- * irchat-nick.el (irchat-nick-get-user-at-host): New macro.
-
- * irchat-compat.el (temp-minibuffer-message): New function.
-
- * irchat-minibuf.el: New file; custom minibuffer completion.
-
- * irchat.el (irchat-open-server-internal): Add check for dotless
- IP or IPv6 address representation.
-
- * irchat-channel.el (irchat-channel-set-voice): Replace with
- regexp.
-
-1999-02-01 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-handle-319-msg): Fixed channel conversion.
-
- * irchat-commands.el (irchat-command-modec): Fixed completion.
- (irchat-command-mode-o,irchat-command-mode+v,irchat-command-mode-v):
- Fix format string.
-
- * dcc.c (chat_listen): Print connection result.
-
- * irchat-dcc.el (irchat-command-dcc-chat-listen): Add dummy
- argument `chat' for compatibility.
-
- * irchat-channel.el (irchat-channel-remove-mode): Use `delq'.
- (irchat-nick-remove-mode): Ditto.
-
- * Liece 1.2.8.11.
-
- * irchat-menu.el (irchat-menu-popup-menu): Check whether XEmacs or
- not compile time.
-\f
-1999-01-31 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-compat.el (set-keymap-parents): New macro.
-
- * irchat-commands.el (irchat-command-join-channel): Add flag
- whether `irchat-command-buffer-mode' is toggled.
- (irchat-command-join-partner): Ditto.
-
- * irchat-300.el (irchat-count-words-from-string): Count postfix
- white spaces.
-
- * irchat-q-el.el: Splited from `irchat-ctcp.el'; binary data
- quotation in emacs-lisp.
- * irchat-q-ccl.el: Same functionality as above but implemented in
- Emacs CCL.
-
- * b64.el (b64-encode-string, b64-decode-string): Add autoload
- cookie.
-
- * irchat.el (irchat-channel-list-keys): New variable.
- (irchat-define-keys): Add lisp-mode indentation.
- (irchat-channel-mode-map, irchat-others-mode-map): Set
- `irchat-dialogue-mode-map' as its keymap parent.
-
-1999-01-28 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.8.10.
-
- * dcc.c: Rewritten but this is obsoleted.
-
- * irchat-commands.el (irchat-command-end-of-buffer): Renamed from
- `irchat-command-eod-buffer'; this works also in `irchat-{channel,
- others}-buffer-mode'.
-
- * dcc.ml (getaddr_ext): New function.
-
- * irchat-dcc.el (irchat-dcc-send-filter): Fix regexp.
- (irchat-dcc-add-to-process-alist): Add process key as symbol.
- (irchat-dcc-get-process-object): Likewise.
- (irchat-command-dcc-receive): Fixed arguments of
- `irchat-dcc-add-to-process-alist'.
- (irchat-command-dcc-send): Likewise.
- (irchat-command-dcc-accept): Fix typo.
-
-1999-01-27 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-others-mode-map): Add key binding of
- `irchat-command-tag-region'
-
- * irchat-commands.el (irchat-command-join-channel): Use
- `irchat-channel-memberp'.
- (irchat-command-modec): Make completion from supported mode list.
- (irchat-channel-real): Try match with
- `irchat-channel-conversion-map' case insensitively.
- (irchat-channel-virtual): Ditto.
-
-1999-01-26 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-globals.el (irchat-supported-channel-mode-alist):
- (irchat-supported-user-mode-alist): New variable
-
- * irchat-nick.el (irchat-nick-get-modes): New macro.
- (irchat-nick-add-mode): New macro.
- (irchat-nick-remove-mode): New macro.
- (irchat-nick-set-mode): New macro.
-
- * irchat-000.el (irchat-handle-004-msg): Save server supported
- modes.
-
- * Liece 1.2.8.9.
-
- * irchat-make.el: Add local copy of APEL to `load-path'.
- (autoload-irchat): New function to generate autoload file.
-
- * irchat.el (irchat-command-keys): Add key definition of
- `irchat-command-set-window-style' (C-c s).
- (irchat): Parse `irchat-variables-files' specified in command
- line.
- (irchat-read-variables-files): Add optional argument `file'.
-
- * irchat-window.el (irchat-window-set-default-style): Fallback
- style used when encountered an error at style-file loading time.
-
- * irchat-handle.el (irchat-handle-mode-msg): Gather channel modes
- correctly.
-
- * irchat-channel.el (irchat-channel-get-modes): New macro.
- (irchat-channel-set-mode): New macro.
- (irchat-channel-add-mode): New macro.
- (irchat-channel-remove-mode): New macro.
-
- * irchat-menu.el (irchat-menu-prepare-menus): Fix typo in
- `irchat-command-previous-channel'.
- (irchat-menu-IRC-menu): Add menu items.
-
-1999-01-23 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-change-nick-of): Fixed.
-
-1999-01-22 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * llhandler.el: New file.
-
- * Liece 1.2.8.8.
-
- * irchat-handle.el (irchat-handler-defun-*): Abolished.
- (irchat-handler-defsubst-*): Abolished.
- (irchat-handler-obarray): New variable.
- (irchat-handle-error-msg): New handler.
- Handler API has been rewritten with `irchat-handler-obarray',
- which enables faster handler lookup from hash.
-
-1999-01-21 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ctcp.el: Rewritten with new handler API.
- (irchat-ctcp-file-save-directory): New user variable.
- (irchat-client-message): New macro.
- (irchat-client-file-message): New macro.
-
- * irchat-vars.el (irchat-gather-channel-modes): New user variable.
- (irchat-*-buffer): Moved into `irchat-globals.el'.
-
- * irchat-misc.el: Require `invisible'.
- (irchat-remove-properties-region): Use
- `next-single-property-change' instead of `next-property-change'.
- (next-visible-point): Add advice to pass optional argument
- `limit'.
- (irchat-change-nick-of): Fixed.
-
-1999-01-20 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-compat.el (filter-elements): Renamed from `filtercar'.
- Rewritten as macro with referring to `dabbrev-filter-elements'.
-
- * defface.el (defface-set-face-inverse): New function.
- (defface-face-inverse): Ditto.
- (defface-set-face-bold): Abolished. Use `face-set-bold-p'.
- (defface-face-bold): Abolished. Use `face-bold-p'.
- (defface-set-face-italic): Abolished. Use `face-set-italic-p'.
- (defface-face-italic): Abolished. Use `face-italic-p'.
-
-1999-01-19 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-tag-region): Renamed from
- `irchat-dialogue-tag-line'. Add removing 'face and 'invisible
- properties from text moved into kill ring.
-
- * sample.dot.liece{,.ja}: Fixed documentation about window
- configuration.
-
- * irchat-misc.el (irchat-pick-buffer): Assume that channel names
- are associated to channel buffers case insensitively.
- (irchat-remove-properties-region): New macro.
-
-1999-01-18 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-compat.el (keymap-accept-event-array): Abolished.
-
- * Liece 1.2.8.7.
-
- * irchat-misc.el (matching-substring): Became an alias for
- `match-string'.
-
- * irchat.el (irchat-open-server): Fixed.
- (irchat-open-server-internal): Fixed.
- Do not require `smiley'.
-
-1999-01-17 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-300.el (irchat-handle-364-msg): Fixed.
-
- * irchat-200.el (irchat-handle-213-msg): Fixed.
-
- * irchat-intl.el (irchat-intl-load-catalogue): Do not bind `lang'
- to `current-language-environment'.
-
- * irchat-window.el (irchat-configure-windows): Switch to
- `irchat-command-buffer' before calling function
- `irchat-window-configure-frame'.
-
- * irchat-timer.el: Enclose statement which has newly styled macros
- with `eval'.
-
- * irchat-compat.el (run-hook-with-args-until-success): New macro
- for compatibility.
-
- * irchat-misc.el (irchat-convert-received-input): New macro.
- No longer require `irchat-filter'.
-
-1999-01-16 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-caesar.el: Abolished.
-
- * irchat-compat.el (function-documentation): New macro.
-
- * irchat-commands.el (irchat-command-point-back-to-command-buffer):
- New command. Bind key to `c'.
- (irchat-command-caesar-line): Abolished. Use `mule-caesar-region'.
-
- * irchat-misc.el (irchat-is-message-ignored): Moved from
- `irchat.el'.
- (irchat-maybe-poll): Ditto.
- (irchat-set-crypt-indicator): Ditto.
- (irchat-get-buffer-create): Ditto.
- (irchat-hex-char-to-integer): Imported from `misty1.el'.
- (irchat-hex-string-to-integer): Ditto.
-
-1999-01-15 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-read-variables-files): New function.
- (irchat-command-read-variables-files): New alias to
- `irchat-read-variables-files'.
- (irchat-initialize-buffers): New wrapper function.
- (irchat-replace-internal): New macro.
- (irchat-insert-internal): New macro.
-
- * irchat-compat.el (ccl-enable-to-read-multibyte): New broken
- facility.
- (buffer-or-string-p): New macro.
-
- * irchat-misc.el (irchat-send-as-binary): New macro.
- (irchat-send): Add `string-as-unibyte' while checking length of
- string.
- (irchat-replace-in-string): Abolished.
-
- * irchat-ck-ccl.el: CCL version of `ck' to `cj' converter.
-
- * irchat-ck-el.el: Renamed from `irchat-hankana.el'.
-
- * irchat-make.el: irchat-make.el: Add checking whether CCL accepts
- `read-multibyte-character'.
-
-1999-01-14 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-nickname): New macro.
-
- * irchat-window.el (irchat-configure-windows): Enclose
- calling function `irchat-window-configure-frame' with
- `save-excursion'.
-
- * irchat-crypt.el (irchat-crypt-with-decrypt-message):
- Renamed from `irchat-crypt-with-encrypted-message'.
- (irchat-crypt-with-encrypt-message): New macro.
-
- * irchat-commands.el (irchat-command-join-partner): Fixed.
- (irchat-command-timestamp): Fixed.
- (irchat-command-send-message): Fixed.
- (irchat-command-message): Fixed.
- (irchat-command-prepare-message-prefix): New macro.
- (irchat-command-prepare-own-message-prefix): New macro.
-
- * Liece 1.2.8.6.
-
- * irchat-channel.el (irchat-channel-join): Fixed.
-
- * irchat-url.el (irchat-url-prepare-browser-function): New macro.
- (irchat-url-command-browse-url): Add checking
- `irchat-url-browser-name' prior to `irchat-url-browser-function'.
-
-1999-01-13 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * README-styles.ja: New file.
-
- * irchat-channel.el (irchat-channel-change): Enclose with
- `save-excursion'.
-
-1999-01-11 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat): Fixed bug in XEmacs toolbar specification.
-
-1999-01-10 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-nick-get-joined-channels): New macro.
-
- * irchat-channel.el (irchat-channel-get-nicks): New macro.
- (irchat-channel-get-opers): Ditto.
- (irchat-channel-get-voices): Ditto.
- (irchat-channel-get-topic): Ditto.
-
- * styles/{top,bottom}: Fixed command buffer lines.
-
- * Liece 1.2.8.5.
-
- * irchat.el (irchat-insert): Remove checking "(featurep 'custom)".
-
- * defface.el: New file.
-
-1999-01-09 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handler-define-entry-point): New alias.
- (irchat-handler-defun-with-return): New macro.
- (irchat-handler-defsubst-with-return): New macro.
-
- * irchat-{000,200,300,400,500}.el: Rewritten with new handler API.
-
- * irchat-handle.el (irchat-handler-entry-point-defun): New macro.
- (irchat-handler-entry-point-defsubst): New macro.
-
- * irchat-handle.el (irchat-handle-with-running-cleartext-hook):
- Renamed from `irchat-handle-with-cleartext-hook'.
- (irchat-handle-run-cleartext-hook):
- Renamed from `irchat-handle-cleartext-hook'.
-
-1999-01-08 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * styles/top: New file.
-
- * irchat-misc.el (irchat-message): New macro.
-
- * Liece 1.2.8.4.
-
- * styles/{bottom,middle}: New file.
-
- * irchat-window.el (irchat-configure-windows): Moved from
- `irchat'.
-
- * irchat-window.el: New file for style-based window configuration.
-
- * irchat-nick.el (irchat-nick-replace): Fixed moving point to
- highlight mouse face.
-
-1999-01-05 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-nick-update-region): Set point to mouse
- clicked position.
-
- * Liece 1.2.8.3.
-
- * irchat.el (irchat-nick-mode-map): Add popup menu.
-
- * irchat-menu.el (irchat-nick-popup-menu): New function.
- (irchat-menu-popup-menu): New macro.
-
- * irchat-intl.el (irchat-intl-get-msgstr-if): New macro.
-
- * irchat-nick.el (irchat-nick-update-region): New function.
- (irchat-nick-region-nicks): Moved from `irchat-xemacs'.
- (irchat-nick-region-opers): Ditto.
- (irchat-nick-region-voices): Ditto.
-
- * irchat-menu.el (irchat-menu-callback-*): Moved from
- `irchat-xemacs'.
- (irchat-menu-define-menus): Moved to defadviced block.
-
- * irchat-xemacs.el (irchat-xemacs-setup-menu): Shared
- `irchat-nick-update-region'.
-
- * irchat-channel.el (irchat-channel-set-operator): Fixed regexp.
-
- * irchat-nick.el (irchat-nick-replace): Fixed regexp.
-
-1999-01-04 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-nick-replace): Fixed execution order.
-
- * irchat-nick.el (irchat-nick-replace): Fixed regexp.
- And enclose `save-restriction'.
-
- * irchat-menu.el: Add easymenu support.
-
- * Liece 1.2.8.2.
-
- * irchat-crypt.el (irchat-crypt-with-encrypted-message):
- New macro.
-
- * irchat-handle.el (irchat-handler-defsubst): New macro.
- (irchat-handler-defun): Ditto.
- (irchat-handler-return): Ditto.
- All handler routines are defined with new form.
- (irchat-handle-with-cleartext-hook): New macro.
- (irchat-handle-cleartext-hook): Ditto.
- (irchat-handle-run-hook-with-args): Ditto.
- Handler code eliminated by global jump.
- (irchat-handle-set-channel-prefix): New macro.
- (irchat-handle-set-dialogue-prefix): Ditto.
- (irchat-handle-set-private-prefix): Ditto.
-
- * irchat-misc.el (irchat-insert-change): New macro.
- (irchat-insert-notice): Ditto.
- (irchat-insert-broadcast): Ditto.
- (irchat-insert-wallops): Ditto.
- (irchat-insert-error): Ditto.
- (irchat-insert-info): Ditto.
- (irchat-insert-timestamp): Ditto.
- (irchat-insert-dcc): Ditto.
- (irchat-insert-client): Ditto.
-
-1999-01-03 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-switch-to-channel-no): Fixed.
-
- * irchat-hilight.el (irchat-highlight-region): Check
- `irchat-display-prefix-tag'.
-
- * irchat-vars.el (irchat-display-prefix-tag): New variable.
-
- * irchat-hilight.el (irchat-highlight-hide-prefix-region):
- New function.
-
- * irchat-version.el (irchat-version-user-agent-style): Abolished.
- (liece-client-product): New variable.
- (liece-client-name): New macro.
- (liece-client-version-major): Ditto.
- (liece-client-version-minor): Ditto.
- (liece-client-version-beta): Ditto.
- (liece-client-version-alpha): Ditto.
- (liece-client-codename): Ditto.
-
- * irchat-version.el (irchat-make-emacs-user-agent-string): New
- function.
-
- * irchat.el (irchat-insert): Renamed from `irchat-w-insert'.
- (irchat-replace): Renamed from `irchat-w-replace'.
-
- * irchat-intl.el (irchat-intl-domain-to-mime-charset-alist): New
- variable.
-
- * irchat-intl.el (irchat-intl-parse-Content-Type): Do not use
- `mime-parse-Content-Type' when `mime-parse' is not loaded.
-
- * irchat.el: Remove extra calls of `suppress-keymap'.
-
- * irchat-compat.el: Remove all CL emulation.
-
- * Liece 1.2.8.1.
-
- * irchat-intl.el (irchat-intl-use-localized-messages): New
- variable.
-
-1999-01-02 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-intl.el (irchat-intl-parse-Content-Type): Parse
- "Content-Type:" header to recognize coding used in PO files.
-
-1999-01-01 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-intl.el (irchat-intl-domains-to-coding-system-alist):
- Abolished.
-
- * irchat-commands.el (irchat-command-find-timestamp): Regexp fixed.
-\f
-1998-12-30 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Add experimental i18n feature.
-
- * po/ja.po: New file.
-
- * irchat-intl.el: New file.
-
- * irchat-ctcp.el (irchat-ctcp-msg): Message format fixed.
-
- * irchat-channel.el (irchat-channel-join): Fixed.
- (irchat-channel-create-buffer): Fixed.
-
-1998-12-29 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-switch-to-channel{,-no}):
- Do not reconfigure windows.
-
- * TODO.ja: New file.
-
- * Liece 1.2.6.13/1.2.8.0.
-
- * irchat-commands.el (irchat-switch-to-channel): Fixed.
- (irchat-switch-to-channel-no): Fixed.
-
- * irchat-misc.el (irchat-toggle-command-buffer-mode): When hiding
- state of nick buffer is toggled, reconfigure windows every time.
-
- * irchat-handle.el (irchat-handle-join-msg): Check whether joined
- channel is modeless.
-
- * irchat-misc.el (irchat-channel-modeless-p): New macro.
- (irchat-channel-modeless-regexp): New variable.
-
- * irchat-handle.el (irchat-handle-{join,quit,mode,part}-msg):
- Compression of changes reworked.
-
- * irchat-vars.el (irchat-display-time): Rename from
- `irchat-print-time'.
- (irchat-time-prefix-regexp): Regexp for time prefix.
-
- * irchat-mail.el: Add autoloads instead of all requires
- (`gnus-msg', `sendmail', `mime-edit').
- (irchat-mail-compose-with-mail): Add evals to silence
- byte-compiler.
- (irchat-command-mail-compose): Fix completion.
-
- * irchat-channel.el (irchat-channel-buffer-create):
- Rewritten as a macro.
-
- * irchat-nick.el (irchat-nick-buffer-create): Ditto.
-
- * irchat-compat.el: `<<' and `>>' are become aliases of lsh.
-
- * irchat.el: Rename `irchat-Select-keys' to `irchat-select-keys'.
-
- * sample.liece{,.ja}: Add sample setting of
- `irchat-startup-channel-list'.
-
- * irchat.el (irchat-command-keys): Bind `C-c b' and `C-c N b' to
- `irchat-command{,-nick}-scroll-down' (synced up with irchat-2.4jp24f).
- (irchat-nick-keys): Bind scrolling functions.
-
- * irchat.el (irchat-command-mode): Display `minor-mode-alist' on
- mode-line.
-
- * irchat-globals.el (irchat-obarray):
- Set initial array length to 1.
-
- * irchat.el: Remove preparation code of `irchat-obarray'.
-
- * liece-faq.texinfo: Change formatting style.
-
-1998-12-10 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-commands.el (irchat-command-nick-scroll-down): Add check
- whether `irchat-nick-buffer' is visible.
- (irchat-command-nick-scroll-up): Ditto.
-
- * irchat-commands.el (irchat-command-scroll-down): Add check
- whether `irchat-channel-buffer' is visible.
- (irchat-command-scroll-up): Ditto.
-
-1998-12-09 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-set-channel-indicator): Add check for
- `irchat-display-frame-title'.
-
- * irchat.el (irchat-configure-windows): Bind
- `irchat-channel-buffer-mode' and `irchat-nick-buffer-mode' at the
- entry point.
-
- * irchat-channel.el (irchat-channel-switch-to-last): New macro.
-
- * Liece 1.2.6.12.
-
- * irchat-commands.el (irchat-channel-real): Fix spelling.
- (irchat-channel-virtual): Ditto.
-
- * irchat-channel.el (irchat-channel-switch-to-last): New function.
-
- * irchat-channel.el (irchat-channel-last): New macro.
-
- * irchat-misc.el (irchat-change-nick-of): Fixed.
-
-1998-12-04 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-own-channel-message):
- (ircaht-own-private-message): Remove dialogue buffer from target
- buffers.
-
- * liece-faq.texinfo: Fix hook for auto invisible.
-
-1998-12-03 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-pick-buffer): Moved to `irchat-misc.el'.
-
- * irchat-highlit.el (irchat-highlight-pattern-alist): Fix regexp
- for DCC chatting line.
-
- * irchat-commands.el (irchat-command-modec): Select target channel.
-
- * irchat-dcc.el (irchat-command-dcc-chat-listen):
- (irchat-command-dcc-chat-listen): Use `as-binary-process'
- block.
-
- * irchat.el (irchat-open-server-internal): Ditto.
-
- * irchat-vars.el (irchat-binary-coding-system): Abolished.
-
- * irchat.el (irchat-open-server-internal): Bind
- `file-coding-system-for-{read|write}' for Mule 2.3.
-
- * irchat.el: `irchat-switch-to-channel-no-*' registered automatically.
-
-1998-12-02 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-vars.el: Require `mcharset'.
-
- * Liece 1.2.6.11.
-
- * irchat-vars.el (irchat-default-mime-charset): New variable.
-
- * irchat-coding.el: Use `mcharset' instead of
- `{encode|decode}-coding-*'.
- (irchat-coding-encode-charset-region):
- (irchat-coding-encode-charset-string): New macro.
-
- * irchat-dcc.el (irchat-dcc-pop-request-object): Fixed.
-
- * irchat-compat.el (caar): New macro.
-
- * irchat-misc.el (irchat-repair-crlf): New function.
-
- * Liece 1.2.6.10.
-
- * irchat.el (irchat-dcc-map): New keymap.
-
- * irchat-dcc.el (irchat-command-dcc-accept): New function.
- (irchat-dcc-get-*): Access method for request object.
- (irchat-dcc-pop-request-object): New macro.
-
- * Liece 1.2.6.9.
-
- * irchat-dcc.el: Very experimental DCC chat support added.
- (irchat-command-dcc-chat-listen): New function.
- (irchat-command-dcc-chat-connect): Ditto.
- (irchat-dcc-chat-listen-filter): Ditto.
- (irchat-dcc-chat-connect-filter): Ditto.
- (irchat-dcc-chat-filter): Ditto.
- (irchat-dcc-channel-representation-format): New variable.
-
- * irchat-channel.el: Very experimental multiple server support
- added.
- (irchat-default-channel-representation-format): New variable. This
- is unified channel locater. Set default as
- "@<server abbreviation>+<channel name>".
- (irchat-channel-parse-representation): New function.
- (irchat-channel-prepare-representation): Ditto.
-
- * irchat-misc.el (irchat-own-channel-message): New function.
-
- * irchat-misc.el (irchat-own-message): New macro.
-
- * dcc.ml: Explicitly return with code 0.
-
- * irchat-dcc.el (irchat-dcc-send-filter): Fixed.
- (irchat-dcc-receive-filter): Fixed.
-
-1998-12-01 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-vars.el (irchat-dcc-prefix): New variable.
-
- * irchat-compat.el (cdddr): New macro.
-
- * irchat-dcc.el (irchat-dcc-add-to-receive-list): New macro.
- (irchat-dcc-add-to-process-alist): Ditto.
- (irchat-dcc-get-process-object): Ditto.
- (irchat-dcc-sentinel): New sentinel function.
- (irchat-dcc-prepare-directory): New function.
- (irchat-ctcp-dcc-msg): Add handler for DCC chat.
- (irchat-command-dcc-send): Rewritten.
- (irchat-command-dcc-receive): Ditto.
- (irchat-command-dcc-list): Ditto.
-
- * Liece 1.2.6.8.
-
- * dcc.ml: New file.
-
- * naddr.mli: Ditto.
-
- * naddr.ml: Ditto.
-
- * irchat-misc.el (irchat-own-message):
- (irchat-own-private-message): Add check whether channel buffer has
- been created.
-
- * sample.dot.liece: Fix typo.
-
- * sample.dot.liece.ja: Ditto.
-
- * irchat-url.el (irchat-url-browser-netscape): Use builtin
- composer when encounted `mailto:'.
-
- * irchat-commands.el (irchat-dialogue-insert): Abolished.
-\f
-1998-11-28 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-misc.el (irchat-own-private-message): Check if
- `irchat-command-buffer-mode' is not 'chat.
-
- * Liece 1.2.6.7.
-
- * irchat-channel.el (irchat-channel-prepare-partner):
- Fixed for setting `irchat-current-chat-partner'.
-
- * irchat.el: Do not require `irchat-mail'.
-
-1998-11-27 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el: Set default `truncate-lines'.
-
-1998-11-26 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-vars.el (irchat-display-frame-title): New variable.
-
- * Liece 1.2.6.6.
-
- * irchat-channel.el (irchat-command-toggle-channel-buffer-mode):
- Remove setting dirty flag.
-
- * irchat-nick.el (irchat-command-toggle-nick-buffer-mode):
- Ditto
-
-1998-11-25 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-mail.el: New file.
-
- * irchat-vars.el (irchat-convert-hankaku-katakana): New variable.
-
- * irchat-hankana.el: New file.
-
- * Liece 1.2.6.5.
-
- * irchat-300.el (irchat-handle-303-msg): Print come back
- messages for private conversation.
-
- * irchat-misc.el (irchat-set-channel-indicator): New macro.
-
- * irchat-handle.el (irchat-handle-nick-msg): Fixed channel indicator.
-
- * irchat.el (irchat-close-server): Set `irchat-server' to nil.
-
- * irchat-handle.el (irchat-handle-join-msg): Fixed for private
- conversation.
-
- * Add copylefts.
-
-1998-11-23 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-globals.el (irchat-ison-timer): New variable.
-
- * irchat-vars.el (irchat-ison-interval): New variable.
-
- * irchat-commands.el (irchat-command-set-ison-timer): New
- function.
- (irchat-command-cancel-ison-timer): Ditto.
-
- * irchat-misc.el (irchat-completing-sequential-read): New function.
-
- * Liece 1.2.6.4.
-
- * irchat-compat.el (irchat-button3): Moved into `eval-and-compile'
- enclosure.
-
- * irchat.el: Do not require alist.
-
- * irchat-handle.el (irchat-handle-quit-msg): Rewritten.
-
- * irchat-handle.el (irchat-handle-nick-msg): Handle nick message
- and reflect changes to private buffers.
-
-1998-11-21 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.6.3.
-
- * irchat-misc.el (irchat-channel-p): New macro.
- (irchat-toggle-command-buffer-mode): New wrapper function.
-
- * irchat.el (irchat-windows-reconfiguration-needed): Fixed
- predicate for nick buffer mode and channel list mode.
-
- * irchat.el (irchat-command-keys): Removed duplicated binding of
- `irchat-command-enter-message'(`\C-j' and `\M-\C-j').
-
-1998-11-19 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-handle.el (irchat-handle-privmsg-msg): Fixed.
-
- * etc/ball.*.xpm: Remove background color in each XPM file
- (From Yasushi Shoji <yashi@yashi.com>).
-
- * sample.dot.liece: Add sample customizations of new feature.
- `irchat-channel-list-buffer-mode',
- `irchat-channel-list-window-width-percent',
- `irchat-auto-join-partner'.
-
- * irchat-filter.el (irchat-filter): Remove unreferenced binding.
-
- * irchat-handle.el (irchat-handle-privmsg-msg): Handle private
- message and join automatically.
-
- * Liece 1.2.6.2.
-
- * irchat-vars.el (irchat-auto-join-partner): New variable.
- (irchat-channel-list-window-width-percent): Ditto.
-
- * irchat-compat.el (irchat-button3): New variable.
-
- * irchat-channel.el (irchat-channel-push-button): New handler.
- (irchat-channel-list-insert): New function.
- (irchat-channel-prepare-partner): New function.
-
- * irchat-url.el (irchat-url-push-button): Search URL string around
- event line.
-
- * irchat.el (irchat-channel-list-mode): New major mode.
- (irchat-configure-windows): Fixed for channel list window.
- (irchat-channel-list-mode-map); New keymap.
-
- * All irchat-{`Command', `Nick', `Channel', `Others', `Crypt'}-*
- symbols renamed with uncapitalized one.
-
-1998-11-16 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * Liece 1.2.4.4.
-
- * irchat-filter.el: Do not require mcharset.
-
- * irchat-timer.el: Macro expression fixed (for Emacs19).
-
- * Liece 1.2.4.3/1.2.6.1.
-
- * irchat-vars.el (irchat-binary-coding-system):
- New variable.
-
- * irchat-coding.el: New file.
-
- * irchat-filter.el (irchat-run-message-hook-types):
- Abolished.
- (irchat-handle-message): Rewritten.
- (irchat-handle-message-2): Rewritten.
-
-1998-11-15 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat.el (irchat-Dialogue-mode-map):
- (irchat-Channel-mode-map):
- (irchat-Others-mode-map): Add check whether array style keymap
- expression is acceptable.
-
- * liece-faq.texinfo: New FAQ added for older version of emacsen.
-
- * irchat-handle.el (irchat-handle-privmsg-msg):
- Rewritten.
-
- * irchat-200.el (irchat-handle-200-msgs):
- Channel mask regexp fixed.
-
- * irchat-300.el (irchat-handle-300-msgs):
- Ditto.
-
- * irchat-400.el (irchat-handle-400-msgs):
- Ditto.
-
- * sample.dot.liece: Add sample hook for auto invisible.
-
- * Liece 1.2.3.5.
-
- * irchat-vars.el (irchat-default-coding-system):
- Set default to 'iso-2022-jp.
- (irchat-detect-coding-system): New custom variable.
-
- * irchat-misc.el (irchat-send): Add code conversion with
- `encode-coding-region' .
-
- * irchat-filter.el (irchat-filter): Add coding-system detection.
-
- * irchat-compat.el (irchat-set-process-coding-system):
- (irchat-buffer-disable-undo): Abolished.
- (buffer-disable-undo): New macro.
-
- * defsubst.el: Removed.
-
-1998-11-14 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ctcp.el (irchat-ccl-quote-decode): Fixed.
-
-1998-11-13 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ctcp.el (ccl-cascade-write):
- (ccl-set-register-right): New broken facility.
- (irchat-ccl-quote-decode): Rewritten with checking broken CCL
- facilities.
-
- * irchat-timer.el (irchat-start-timer):
- Fixed macro expression for older versions of emacsen.
-
- * irchat-compat.el (defface): New macro for older versions of
- emacsen.
-
-1998-11-12 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-ctcp.el: Add CCL usability checking with `ccl-usable'.
-
-1998-11-11 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-version.el (irchat-make-user-agent-string):
- (irchat-make-version-string):
- Regexp fixed.
-
- * irchat-ctcp.el (irchat-ccl-quote-decode):
- (irchat-ccl-quote-encode): Check if module `pccl' exists.
-
- * sample.dot.liece: Renamed from sample.irchat3_vars.el.
-
- * irchat-version.el (liece-client-minor-version):
- Numbered as 1.2.3.3.
- (irchat-version-user-agent-style):
- Declaration revereted to `defvar' from `defcustom'.
-
- * Makefile: Removed `-lnsl'.
-\f
-1998-10-20 Daiki Ueno <daiki@kake.info.waseda.ac.jp>
-
- * irchat-nick.el (irchat-Nick-update): Bug fixed in splitting 353
- (NAMEREPLY) message.
-
- * irchat-inlines.el (list-to-assoclist): Rewritten.
-
-1998-10-08 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-xemacs.el (irchat-toolbar-spec-list): Replace
- `irchat-Command-push' and `irchat-Command-pop' with
- `irchat-Command-previous-channel' and `irchat-Command-next-channel'.
- (irchat-x-face-face-insert): Evaluate also when loaded.
-
-1998-10-07 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-crypt.el (base64-encode-string): Fixed autoload with
- `mel' to `mel-b' package.
- (base64-decode-string): Ditto.
-
-1998-10-06 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-xemacs.el (irchat-xemacs-splash-logo): Splash screen with
- "liece.xpm" on every loadup time.
-
- * irchat-version.el (liece-client-version): Numbered as 1.2.1.
-
- * irchat-x-face.el (irchat-x-face-face-insert): Display X-Face on
- each prefix line align middle.
-
- * irchat-debug.el: New file.
-
-1998-10-02 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat.el (irchat-Debug-mode): New major mode for
- `irchat-Command-debug'.
-
- * liece-faq.texinfo: New file.
-
- * irchat-commands.el (irchat-Client-query-map): Key binding for
- `irchat-Command-client-x-face-from-minibuffer' substituted with
- `irchat-Command-client-x-face-from-xbm-file'.
-
- * irchat-compat.el (replace-in-string): New function from XEmacs
- subr.el.
-
- * irchat-x-face.el: New file.
- (irchat-x-face-insert): Now works properly with GNU Emacs.
-
- * irchat-xemacs.el (irchat-x-face-insert): New function.
- (irchat-x-face-encode): Ditto.
-
- * irchat-ctcp.el (irchat-ctcp-x-face-msg): X-Face query support.
- Now it works only with X-Face utility.
-
- * irchat-version.el (liece-client-version-beta): New variable.
-
-1998-10-01 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat.el (irchat-clear-system): Restart now reworked.
-
- * irchat-make.el (config-irchat): Add check wheter APEL version is
- 9.0 or later.
-
- * irchat-ctcp.el (irchat-ctcp-version-msg): Rewritten with new
- style version string.
-
- * irchat-version.el (irchat-version-user-agent-style): New
- variable.
- (irchat-make-user-agent-string): New function.
- (irchat-make-client-version-string): Ditto.
- (irchat-make-version-string): Ditto.
-
- * irchat-make.el (config-irchat): Rewritten.
-
- * irchat-ctcp.el: Renamed from irchat-cta.el.
- (irchat-ccl-quote-cs): New coding system for file transfer.
- (irchat-ccl-quote-encode): New CCL program.
- (irchat-ccl-quote-decode): Ditto.
- (irchat-ctcp-msg): Hook checking code eliminated.
- (irchat-ctcp-client-msg): Ditto.
-\f
-1998-09-30 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-hilight.el (irchat-highlight-buffer):
- Add check whether there is point has
-
- * irchat-compat (irchat-get-text-property):
- Add signal handler for XEmacs extents.
-
- * irchat-commands.el: Require `irchat-dcc.el'.
-
- * Makefile: New rule for .texinfo to .info.
-
- * irchat-hilight.el (irchat-highlight-buffer): Bug fix for
- `irchat-highlight-pattern'.
-
-1998-09-29 Daiki Ueno <daiki@kiss.kake.info.waseda.ac.jp>
-
- * irchat-make.el (install-irchat): Fixed usage of function
- install-files.
-
- * irchat-nick.el: Do not require widget wid-edit.
-
- * irchat-make.el (irchat-modules-to-compile): Added
- irchat-channel, irchat-nick to module list.
-
- * irchat-hilight.el (irchat-highlight-insert-with-mouse-face):
- Addded check whether function widget-create is bounded.
-
- * irchat-compat.el: Require cl.
-
- * Makefile: Require cl. Machine specific option removed.
-
- * irchat-commands.el (irchat-Command-send-message):
- New signal handler for `encode-coding-string' with unknown coding
- system. This encoding is needed when `irchat-crypt-mode-active-p'
- is non nil.
-
- * irchat.el: Renamed from irchat-main.el.
-
- * irchat-main.el: Removed.
-
-1998-09-29 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-crypt.el (irchat-read-passphrase): New alias.
-
-1998-09-28 Daiki Ueno <daiki@dice.cache.waseda.ac.jp>
-
- * irchat-make.el: New file.
-
- * irchat-compat.el: New file.
-
- * irchat-ja.texinfo: New file.
-
- * setpath.el: Removed.
-
- * irchat-url.el (irchat-url-button-push): New handler.
-
- * irchat-main.el (irchat-Select-map): New keymap.
-
- * irchat-filter.el: Added autoloads for entry points of 000, 200,
- 300, 400, 500 message handlers.
-
- * irchat-misc.el (irchat-greet-author): Abolished.
-
- * irchat-channel.el: Splitted from irchat-commands.el.
-
- * irchat-nick.el: Ditto.
+++ /dev/null
-# -*- makefile -*-
-#
-# Makefile for liece
-#
-#
-
-PACKAGE = liece
-VERSION = 1.4
-
-EMACS = emacs
-XEMACS = xemacs
-FLAGS = -batch -q -no-site-file
-TAR = tar
-
-PREFIX = NONE
-LISPDIR = NONE
-PACKAGEDIR = NONE
-VERSION_SPECIFIC_LISPDIR = NONE
-
-GOMI = liece-setup.el *.elc
-
-all: elc
-
-elc:
- $(EMACS) $(FLAGS) -l ./liece-make.el -f autoload-liece \
- $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
- $(EMACS) $(FLAGS) -l ./liece-make.el -f compile-liece \
- $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
-
-install: elc
- $(EMACS) $(FLAGS) -l ./liece-make.el -f install-liece \
- $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
-
-package:
- $(XEMACS) $(FLAGS) -l ./liece-make.el -f autoload-liece \
- $(PREFIX) $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
- $(XEMACS) $(FLAGS) -l ./liece-make.el -f compile-liece-package \
- $(PACKAGEDIR)
-
-install-package: package
- $(XEMACS) $(FLAGS) -l ./liece-make.el -f install-liece-package \
- $(PACKAGEDIR)
-
-tag:
- sh -c 'cvs tag -RF liece-`echo $(VERSION) | \
- tr . _`-`date +%Y%m%d%H%m`'
-
-clean:
- -rm -f $(GOMI)
+++ /dev/null
-## Process this file with automake to produce Makefile.in
-## We do not use automake's emacs-lisp support.
-
-SOURCES = liece-clfns.el liece-handler.el gettext.el \
- liece-compat.el liece-version.el \
- liece-vars.el liece-globals.el liece-inlines.el \
- liece-filter.el liece-dcc.el liece-menu.el \
- liece-000.el liece-200.el liece-300.el liece-400.el liece-500.el \
- liece-nick.el liece-channel.el \
- liece-commands.el liece-ctcp.el \
- liece-handle.el liece-hilit.el liece-intl.el liece-mail.el \
- liece-minibuf.el liece-misc.el liece-url.el liece-message.el \
- liece-x-face.el liece-tcp.el liece-coding.el \
- queue-m.el liece.el \
- liece-window.el
-
-EXTRA_DIST = liece-make.el liece-config.el liece-modules.el \
- liece-emacs.el liece-xemacs.el \
- liece-q-ccl.el liece-q-el.el \
- bitmap-stipple.el \
- liece.xpm liece.xbm
-
-TARGETS = $(SOURCES:.el=.elc)
-
-if USE_CUSTOM_LISPDIR
-LISPDIR = $(lispdir)
-VERSION_SPECIFIC_LISPDIR = $(lispdir)/emu
-else
-LISPDIR = NONE
-VERSION_SPECIFIC_LISPDIR = NONE
-endif
-
-if USE_CUSTOM_PACKAGEDIR
-PACKAGEDIR = $(packagedir)
-else
-PACKAGEDIR = NONE
-endif
-
-EMACS_AUTOLOAD_FLAGS = -f autoload-liece
-
-if USE_PACKAGE
-EMACS_COMPILE_FLAGS = -f compile-liece-package $(PACKAGEDIR)
-EMACS_INSTALL_FLAGS = -f install-liece-package $(PACKAGEDIR)
-else
-EMACS_COMPILE_FLAGS = -f compile-liece \
- NONE $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
-EMACS_INSTALL_FLAGS = -f install-liece \
- NONE $(LISPDIR) $(VERSION_SPECIFIC_LISPDIR)
-endif
-
-
-all: $(TARGETS)
-
-$(TARGETS): liece-make.el liece-setup.el $(SOURCES)
- $(EMACS) -batch -q -no-site-file -l ./liece-make.el \
- $(EMACS_COMPILE_FLAGS)
-
-liece-setup.el:
- $(EMACS) -batch -q -no-site-file -l ./liece-make.el \
- $(EMACS_AUTOLOAD_FLAGS)
-
-install-exec-local: $(TARGETS)
- $(EMACS) -batch -q -no-site-file -l ./liece-make.el \
- $(EMACS_INSTALL_FLAGS)
-
-clean-local:
- -rm *.elc liece-setup.el
-
-.PHONY: update
+++ /dev/null
-;;; bitmap-stipple.el --- display bitmap file using stipple.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-05-30
-;; Keywords: bitmap, stipple
-
-;; This file is not part of any package.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(defun bitmap-stipple-xbm-file-to-stipple (file)
- "Convert xbm FILE into icon format and return the list of spec and buffers."
- (with-temp-buffer
- (erase-buffer)
- (let ((case-fold-search t) width height xbytes right margin)
- (insert-file-contents file)
- (goto-char (point-min))
- (or (re-search-forward "_width[\t ]+\\([0-9]+\\)" nil t)
- (error "!! Illegal xbm file format" (current-buffer)))
- (setq width (string-to-int (match-string 1))
- xbytes (/ (+ width 7) 8))
- (goto-char (point-min))
- (or (re-search-forward "_height[\t ]+\\([0-9]+\\)" nil t)
- (error "!! Illegal xbm file format" (current-buffer)))
- (setq height (string-to-int (match-string 1)))
-
- (goto-char (point-min))
- (re-search-forward "0x[0-9a-f][0-9a-f],")
- (delete-region (point-min) (match-beginning 0))
-
- (goto-char (point-min))
- (while (re-search-forward "[\n\r\t ,;}]" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (re-search-forward "0x" nil t)
- (replace-match "\\x" nil t))
- (goto-char (point-min))
- (insert "(" (number-to-string width) " " (number-to-string height) " \"")
- (goto-char (point-max))
- (insert "\")")
- (goto-char (point-min))
- (read (current-buffer)))))
-
-(defun bitmap-stipple-insert-pixmap (pixmap &optional center)
- "Insert PIXMAP in the current buffer.
-Optional argument CENTER specified, pixmap will be centered."
- (let (width height beg i)
- (or (facep 'bitmap-stipple-splash)
- (make-face 'bitmap-stipple-splash))
- (setq width (/ (car pixmap) (frame-char-width))
- height (/ (cadr pixmap) (frame-char-height)))
- (set-face-foreground 'bitmap-stipple-splash "red")
- (set-face-stipple 'bitmap-stipple-splash pixmap)
- (if center (insert-char ?\n height))
- (setq i height)
- (while (> i 0)
- (setq beg (point))
- (insert-char ? width)
- (set-text-properties beg (point) '(face bitmap-stipple-splash))
- (insert "\n")
- (decf i))))
-
-;;;###autoload
-(defun bitmap-stipple-insert-xbm-file (file)
- "Insert xbm FILE at point."
- (interactive "fxbm file: ")
- (save-excursion
- (bitmap-stipple-insert-pixmap
- (bitmap-stipple-xbm-file-to-stipple file))))
-
-(provide 'bitmap-stipple)
-
-;;; bitmap-stipple.el ends here
+++ /dev/null
-;;; gettext.el --- GNU gettext interface
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-09-10
-;; Keywords: i18n
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(require 'mcharset)
-
-(eval-and-compile
- (autoload 'mime-content-type-parameter "mime-parse")
- (autoload 'mime-read-Content-Type "mime-parse"))
-
-(defvar gettext-gmo-endian 1234)
-(defvar gettext-message-domain-to-catalog-alist nil)
-(defvar gettext-default-message-domain "emacs")
-(defvar gettext-default-mime-charset default-mime-charset)
-
-(defconst gettext-msgid-regexp "msgid\\s-*\"")
-(defconst gettext-msgstr-regexp "msgstr\\s-*\"")
-
-(defmacro gettext-hex-char-to-integer (character)
- `(if (and (>= ,character ?0) (<= ,character ?9))
- (- ,character ?0)
- (let ((ch (logior ,character 32)))
- (if (and (>= ch ?a) (<= ch ?f))
- (- ch (- ?a 10))
- (error "Invalid hex digit `%c'" ch)))))
-
-(defun gettext-hex-string-to-integer (hex-string)
- (let ((hex-num 0))
- (while (not (equal hex-string ""))
- (setq hex-num (+ (* hex-num 16)
- (gettext-hex-char-to-integer
- (string-to-char hex-string)))
- hex-string (substring hex-string 1)))
- hex-num))
-
-(defun gettext-gmo-read-32bit-word ()
- (let ((word (string-to-char-list
- (buffer-substring (point) (+ (point) 4)))))
- (forward-char 4)
- (apply #'format "%02x%02x%02x%02x"
- (mapcar (lambda (ch) (logand 255 ch))
- (if (= gettext-gmo-endian 1234)
- (nreverse word)
- word)))))
-
-(defmacro gettext-gmo-header-revision (header)
- `(aref header 0))
-
-(defmacro gettext-gmo-header-nn (header)
- `(aref header 1))
-
-(defmacro gettext-gmo-header-oo (header)
- `(aref header 2))
-
-(defmacro gettext-gmo-header-tt (header)
- `(aref header 3))
-
-(defmacro gettext-gmo-header-ss (header)
- `(aref header 4))
-
-(defmacro gettext-gmo-header-hh (header)
- `(aref header 5))
-
-(defmacro gettext-gmo-read-header ()
- (cons 'vector
- (make-list 6 '(gettext-hex-string-to-integer
- (gettext-gmo-read-32bit-word)))))
-
-(defun gettext-gmo-collect-strings (nn)
- (let (strings pos len off)
- (dotimes (i nn)
- (setq len (gettext-hex-string-to-integer
- (gettext-gmo-read-32bit-word))
- off (gettext-hex-string-to-integer
- (gettext-gmo-read-32bit-word))
- pos (point))
- (goto-char (1+ off))
- (push (buffer-substring (point) (+ (point) len))
- strings)
- (goto-char pos))
- (nreverse strings)))
-
-(defmacro gettext-parse-Content-Type (&optional header)
- (require 'path-util)
- (if (module-installed-p 'mime-parse)
- (list 'with-temp-buffer
- (list 'insert header)
- '(mime-content-type-parameter
- (mime-read-Content-Type)
- "charset"))
- 'gettext-default-mime-charset))
-
-(defun gettext-mapcar* (function &rest args)
- "Apply FUNCTION to successive cars of all ARGS.
-Return the list of results."
- (unless (memq nil args)
- (cons (apply function (mapcar #'car args))
- (apply #'gettext-mapcar* function
- (mapcar #'cdr args)))))
-
-(defun gettext-load-message-catalogue (file)
- (with-temp-buffer
- (let (header strings charset gettext-obarray)
- (as-binary-input-file
- (insert-file-contents file)
- (goto-char (point-min))
- (when (looking-at "\x95\x04\x12\xde")
- (setq gettext-gmo-endian 4321))
- (forward-char 4)
- (setq header (gettext-gmo-read-header)
- strings
- (gettext-mapcar* #'cons
- (progn
- (goto-char (1+ (gettext-gmo-header-oo header)))
- (gettext-gmo-collect-strings
- (gettext-gmo-header-nn header)))
- (progn
- (goto-char (1+ (gettext-gmo-header-tt header)))
- (gettext-gmo-collect-strings
- (gettext-gmo-header-nn header))))
- charset (or (gettext-parse-Content-Type
- (cdr (assoc "" strings)))
- 'x-ctext)
- gettext-obarray (make-vector
- (* 2 (gettext-gmo-header-nn header))
- 0)))
- (dolist (oott strings)
- (set (intern (car oott) gettext-obarray)
- (decode-mime-charset-string
- (cdr oott) charset)))
- gettext-obarray)))
-
-(defun gettext-load-portable-message-catalogue (file)
- (with-temp-buffer
- (let (strings charset msgstr msgid state gettext-obarray)
- (as-binary-input-file
- (insert-file-contents file)
- (goto-char (point-min))
- (while (not (eobp))
- (cond
- ((looking-at gettext-msgid-regexp)
- (if (eq state 'msgstr)
- (push (cons msgid msgstr)
- strings))
- (setq msgid (buffer-substring (match-end 0)
- (progn (end-of-line) (point))))
- (when (string-match "\"\\s-*$" msgid)
- (setq msgid (substring msgid 0 (match-beginning 0))))
- (setq state 'msgid))
- ((looking-at gettext-msgstr-regexp)
- (setq msgstr (buffer-substring (match-end 0)
- (progn (end-of-line) (point))))
- (when (string-match "\"\\s-*$" msgstr)
- (setq msgstr (substring msgstr 0 (match-beginning 0))))
- (setq state 'msgstr))
- ((looking-at "\\s-*\"")
- (let ((line (buffer-substring (match-end 0)
- (progn (end-of-line) (point)))))
- (when (string-match "\"\\s-*$" line)
- (setq line (substring line 0 (match-beginning 0))))
- (set state (concat (symbol-value state) line)))))
- (beginning-of-line 2))
- (if (eq state 'msgstr)
- (push (cons msgid msgstr)
- strings))
- ;; Remove quotations
- (erase-buffer)
- (goto-char (point-min))
- (insert "(setq strings '(\n")
- (dolist (oott strings)
- (insert (format "(\"%s\" . \"%s\")\n"
- (car oott) (cdr oott)))
- (insert "))"))
- (ignore-errors (eval-buffer))
- (setq charset (or (gettext-parse-Content-Type
- (cdr (assoc "" strings)))
- 'x-ctext)))
- (dolist (oott strings)
- (set (intern (car oott) gettext-obarray)
- (decode-mime-charset-string
- (cdr oott) charset)))
- gettext-obarray)))
-
-(unless (featurep 'i18n3)
- (eval-and-compile
- (defun dgettext (domain string)
- "Look up STRING in the default message domain and return its translation.
-\[XEmacs I18N level 3 emulating function]"
- (let ((oott (assoc domain gettext-message-domain-to-catalog-alist)))
- (when (stringp (cdr oott))
- (setcdr oott (gettext-load-message-catalogue
- (cdr oott))))
- (or (symbol-value
- (intern-soft string (or (cdr oott) (make-vector 1 0))))
- string))))
-
- (defun gettext (string)
- "Look up STRING in the default message domain and return its translation.
-\[XEmacs I18N level 3 emulating function]"
- (dgettext gettext-default-message-domain string))
-
- (defun bind-text-domain (domain pathname)
- "Associate a pathname with a message domain.
-Here's how the path to message files is constructed under SunOS 5.0:
- {pathname}/{LANG}/LC_MESSAGES/{domain}.mo
-\[XEmacs I18N level 3 emulating function]"
- (let* ((lang (getenv "LANG"))
- (file (concat domain ".mo"))
- (catalog (expand-file-name
- file (concat pathname "/" lang "/LC_MESSAGES"))))
- (when (file-exists-p catalog)
- ;;(file-exists-p (setq catalog (expand-file-name file pathname)))
- (push (cons domain catalog) gettext-message-domain-to-catalog-alist))))
-
- (defun set-domain (domain)
- "Specify the domain used for translating messages in this source file.
-The domain declaration may only appear at top-level, and should precede
-all function and variable definitions.
-
-The presence of this declaration in a compiled file effectively sets the
-domain of all functions and variables which are defined in that file.
-\[XEmacs I18N level 3 emulating function]"
- (setq gettext-default-message-domain domain)))
-
-(provide 'gettext)
-
-;;; gettext.el ends here
+++ /dev/null
-;;; liece-000.el --- Handler routines for 000 numeric reply.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-01-26
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-misc))
-
-(defvar liece-tmp-server-name)
-
-(defun* liece-handle-000-messages (number prefix rest)
- (setq liece-nick-accepted 'ok)
- (or (string-match "[^ ]* \\([^ :]*\\) *\\([^ :]*\\) *:\\(.*\\)" rest)
- (return-from liece-handle-000-messages))
- (let ((target1 (match-string 1 rest)) (target2 (match-string 2 rest))
- (msg (match-string 3 rest)))
- (cond
- ((string-equal target1 "")
- (liece-insert liece-000-buffer
- (concat liece-info-prefix msg "\n")))
- ((string-equal target2 "")
- (liece-insert liece-000-buffer
- (format "%s%s (%s)\n" liece-info-prefix msg target1)))
- (t
- (liece-insert liece-000-buffer
- (format "%s%s %s (%s)\n"
- liece-info-prefix target1 msg target2))))))
-
-(defun* liece-handle-001-message (prefix rest)
- "RPL_WELCOME \"Welcome to the Internet Relay Network <nick>\""
- (or (< 0 (length (setq rest (liece-split-line rest))))
- (return-from liece-handle-001-message))
- (let ((nick (car rest)))
- (setq liece-tmp-server-name prefix
- liece-nickname nick
- liece-real-nickname nick
- liece-my-userhost nil)
- (liece-send "USERHOST %s" liece-nickname)
- (liece-insert-info
- liece-000-buffer
- (format
- (_ "Welcome to the Internet Relay Chat world. Your nick is %s.\n")
- nick))))
-
-(defun liece-handle-002-message (prefix rest)
- "RPL_YOURHOST \"Your host is <host>, running version <version>\"."
- (cond
- ((string-match "running version \\(.*\\)" rest)
- (liece-insert-info liece-000-buffer
- (format (_ "Your server is %s (version %s).\n")
- liece-tmp-server-name (match-string 1 rest))))
- (t
- (liece-insert-info liece-000-buffer
- (format (_ "Your client version is %s.\n")
- (liece-version))))))
-
-(defun liece-handle-003-message (prefix rest)
- "RPL_CREATED \"This server was created <time>\"."
- (if (string-match "was created \\(.*\\)" rest)
- (liece-insert-info liece-000-buffer
- (format (_ "Your server was created %s\n")
- (match-string 1 rest)))))
-
-(defmacro char-list-to-string-alist (clist)
- `(mapcar
- (lambda (ch) (list (char-to-string ch)))
- ,clist))
-
-(defun* liece-handle-004-message (prefix rest)
- "RPL_MYINFO \"<umodes> <chnlmodes>\""
- (or (string-match "[^ ]* \\(.*\\)" rest)
- (return-from liece-handle-004-message))
- (let ((rest (match-string 1 rest)))
- (cond
- ((string-match "[^ ]* [^ ]* \\([^ ]+\\) \\(.*\\)" rest)
- (setq liece-supported-user-mode-alist
- (char-list-to-string-alist
- (string-to-char-list (match-string 1 rest)))
- liece-supported-channel-mode-alist
- (char-list-to-string-alist
- (string-to-char-list (match-string 2 rest)))))
- (t
- (liece-insert-info liece-000-buffer (concat rest "\n"))))))
-
-\f
-;; Undernet's MAP feature
-(defvar liece-undernet-map nil)
-
-(defun liece-handle-005-message (prefix rest)
- "RPL_MAP \"<server>\"."
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (push rest liece-undernet-map))
-
-(defun liece-handle-006-message (prefix rest)
- "RPL_MAPMORE \"<server> --> *more*\"."
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (if (string-match " --> \*more\*" rest)
- (setq rest (concat "[" (substring rest 0 (match-beginning 0)))) "]*")
- (push rest liece-undernet-map))
-
-(defun liece-handle-007-message (prefix rest)
- "RPL_MAPEND \"End of /MAP\"."
- (liece-reset-long-reply-count)
- (dolist (map liece-undernet-map)
- (liece-insert-info liece-000-buffer (concat map "\n")))
- (setq liece-undernet-map nil))
-
-\f
-;;; @ register message handlers
-;;;
-
-(eval-when-compile (require 'liece-handler))
-
-(liece-handler-define-backend "000")
-
-(defmacro liece-register-000-handler (num)
- `(progn
- (liece-handler-define-function
- ,(format "%03d" num) '(prefix require "000")
- ',(intern (format "liece-handle-%03d-message" num)))
- (defvar ,(intern (format "liece-%03d-hook" num)) nil)
- (defvar ,(intern (format "liece-after-%03d-hook" num)) nil)))
-
-(liece-register-000-handler 001)
-(liece-register-000-handler 002)
-(liece-register-000-handler 003)
-(liece-register-000-handler 004)
-(liece-register-000-handler 005)
-(liece-register-000-handler 006)
-(liece-register-000-handler 007)
-
-(provide 'liece-000)
-
-;;; liece-000.el ends here
+++ /dev/null
-;;; liece-200.el --- Handler routines for 200 numeric reply.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-misc)
- (require 'liece-commands))
-
-(defun* liece-handle-200-messages (number prefix rest)
- "200 replies"
- (or (string-match "[^ ]* \\([^ ]*\\) *\\([^ ]*\\) *:\\(.*\\)" rest)
- (return-from liece-handle-200-messages))
- (let ((target1 (match-string 1 rest)) (target2 (match-string 2 rest))
- (msg (match-string 3 rest)))
- (setq target1 (liece-channel-virtual target1)
- target2 (liece-channel-virtual target2))
- (cond ((string-equal target1 "")
- (liece-insert-info liece-200-buffer (concat msg "\n")))
- ((string-equal target2 "")
- (liece-insert-info
- liece-200-buffer (concat target1 " " msg "\n")))
- (t
- (liece-insert-info
- liece-200-buffer (concat target1 " " msg " (" target2 ")\n"))))))
-
-(defun* liece-handle-200-message (prefix rest)
- "RPL_TRACELINK \"Link <version & debug level> <destination> <next server>\""
- (or (string-match "Link \\([^ ]*\\)[ :]*\\([^ ]*\\)[ :]*\\([^ ]*\\)[ :]*\\([^ ]*\\)[ :]*\\([^ ]*\\)[ :]*\\([^ ]*\\)[ :]*\\(.*\\)" rest)
- (return-from liece-handle-200-message))
- (let ((version (match-string 1 rest)) (dest (match-string 2 rest))
- (next (match-string 3 rest)) (ver (match-string 4 rest))
- (sec (match-string 5 rest))
- (q1 (match-string 6 rest)) (q2 (match-string 7 rest)))
- (liece-insert-info liece-200-buffer
- (concat prefix
- " ("
- version (if ver (concat " " ver) "")
- ") --- " dest "\n"))
- (liece-insert-info liece-200-buffer
- (concat "\t[" (liece-convert-seconds sec) "]"
- (if (not (string= q1 "")) (concat " " q1) "")
- (if (not (string= q2 "")) (concat "/" q2) "")
- " (next " next ")\n"))))
-
-(defun* liece-handle-201-message (prefix rest)
- "RPL_TRACECONNECTING \"Try. <class> <server>\""
- (or (string-match "[^ ]* [^ ]* \\([0-9]*\\)[ :]*\\(.*\\)" rest)
- (return-from liece-handle-201-message))
- (let ((class (match-string 1 rest))
- (server (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (format (_ "%s Trying to connect to %s (class %s)\n")
- prefix server class))))
-
-(defun* liece-handle-202-message (prefix rest)
- "RPL_TRACEHANDSHAKE \"H.S. <class> <server>\""
- (or (string-match "[^ ]* [^ ]* \\([0-9]*\\)[ :]*\\(.*\\)" rest)
- (return-from liece-handle-202-message))
- (let ((class (match-string 1 rest)) (server (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (format (_ "%s Handshaking with %s (class: %s)\n")
- prefix server class))))
-
-(defun* liece-handle-203-message (prefix rest)
- "RPL_TRACEUNKNOWN \"???? <class> [<client IP address in dot form>]\""
- (or (string-match "[^ ]* [^ ]* \\([^ ]*\\)[ :]+\\(.*\\)" rest)
- (return-from liece-handle-203-message))
- (let ((class (match-string 1 rest)) (who (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Class " class ": unknown " who "\n"))))
-
-(defun* liece-handle-204-message (prefix rest)
- "RPL_TRACEOPERATOR \"Oper <class> <nick>\""
- (or (string-match "[^ ]* [^ ]* \\([^ ]*\\)[ :]+\\(.*\\)" rest)
- (return-from liece-handle-204-message))
- (let ((class (match-string 1 rest)) (who (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Class " class ": operator " who "\n"))))
-
-(defun* liece-handle-205-message (prefix rest)
- "RPL_TRACEUSER \"User <class> <nick>\""
- (or (string-match "[^ ]* [^ ]* \\([0-9]*\\)[ :]*\\(.*\\)" rest)
- (return-from liece-handle-205-message))
- (let ((hops (match-string 1 rest)) (where (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Class " hops ": user " where "\n"))))
-
-(defun* liece-handle-206-message (prefix rest)
- "RPL_TRACESERVER \"Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server>\""
- (or (string-match "Serv \\([^ ]*\\) \\(.*\\)" rest)
- (return-from liece-handle-206-message))
- (let ((class (match-string 1 rest)) (pars (match-string 2 rest)))
- (cond
- ((string-match "\\([0-9]*\\)S *\\([0-9]*\\)C *\\([^ ]*\\) *\\([^ ]*\\)[ :]*\\(.*\\)" pars)
- (let ((servers (match-string 1 pars)) (clients (match-string 2 pars))
- (next (match-string 3 pars)) (by (match-string 4 pars))
- (type (match-string 5 pars)))
-
- ;; This is automatic connection line
- (setq by (if (string-match "^AutoConn\\.!" by)
- "auto connection"
- (concat "by " by)))
-
- (liece-insert-info liece-200-buffer
- (concat prefix " --- " next "\n"))
- (liece-insert-info liece-200-buffer
- (concat "\t[" clients " clients, "
- servers " servers]"
- " Class " class ", Type " type " " by
- "\n"))))
- (t
- (liece-insert-info liece-200-buffer
- (format "Class %s: server %s --- %s\n"
- class prefix pars))))))
-
-(defun* liece-handle-207-message (prefix rest)
- "RPL_TRACESERVICE \"Service <class> <name> <type> <wants>\""
- (or (string-match "[^ ]* Service \\([0-9]*\\) \\(.*\\)" rest)
- (return-from liece-handle-207-message))
- (let ((class (match-string 1 rest)) (service (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Class " class ": service " service "\n"))))
-
-(defun liece-handle-208-message (prefix rest)
- "RPL_TRACENEWTYPE \"<newtype> 0 <client name>\"."
- (liece-insert-info liece-200-buffer
- (format "%s: RPL_TRACENEWTYPE: Why this?\n" prefix)))
-
-(defun* liece-handle-209-message (prefix rest)
- "RPL_TRACECLASS \"Class <class> <links>\""
- (or (string-match "[^ ]* Class \\([0-9]*\\) \\([0-9]*\\)" rest)
- (return-from liece-handle-209-message))
- (let ((class (match-string 1 rest)) (entries (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Class " class ": " entries
- "entries linked\n"))))
-
-(defun* liece-handle-211-message (prefix rest)
- "RPL_STATSLINKINF \"<linkname> <sendq> <sent messages> <sent bytes> <received messages> <received bytes> <time open>\""
- (or (string-match "\\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\)[ :]+\\(.*\\)" rest)
- (return-from liece-handle-211-message))
- (let ((link (match-string 2 rest)) (sendq (match-string 3 rest))
- (sendm (match-string 4 rest)) (sendb (match-string 5 rest))
- (rcvem (match-string 6 rest)) (rcveb (match-string 7 rest))
- (open (match-string 8 rest)))
- (liece-insert-info liece-200-buffer
- (format "%-35s %s: %5s%7s%10s%7s%10s %s\n"
- link prefix sendq sendm sendb
- rcvem rcveb open))))
-
-(defun* liece-handle-212-message (prefix rest)
- "RPL_STATSCOMMANDS \"<command> <count>\""
- (or (string-match "[^ ]* \\([^ ]*\\) \\([0-9]*\\)" rest)
- (return-from liece-handle-212-message))
- (let ((cmd (match-string 1 rest)) (times (match-string 2 rest)))
- (liece-insert-info liece-200-buffer
- (format "%s has been used %s times after startup\n"
- cmd times))))
-
-(defun* liece-handle-213-message (prefix rest)
- "RPL_STATSCLINE \"C <host> * <name> <port> <class>\""
- (or (string-match "[^ ]* C \\([^ ]*\\) \\* \\([^ ]*\\) \\([0-9]*\\) \\([0-9]*\\)" rest)
- (return-from liece-handle-213-message))
- (let ((canon (match-string 1 rest)) (name (match-string 2 rest))
- (port (match-string 3 rest)) (class (match-string 4 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Connect to " canon ":" port
- (if (not (string= class ""))
- " (Class " class ")" "")
- "\n"))
- (liece-insert-info liece-200-buffer
- (concat "\t[" name "]\n"))))
-
-(defun* liece-handle-214-message (prefix rest)
- "RPL_STATSNLINE \"N <host> * <name> <port> <class>\""
- (or (string-match "[^ ]* N \\([^ ]*\\) \\* \\([^ ]*\\) \\([0-9]*\\) \\([0-9]*\\)" rest)
- (return-from liece-handle-214-message))
- (let ((canon (match-string 1 rest)) (name (match-string 2 rest))
- (port (match-string 3 rest)) (class (match-string 4 rest)))
- (liece-insert-info liece-200-buffer
- (concat "Accept " canon ":" port
- (if (not (string= class ""))
- " (Class " class ")" "")
- "\n"))
- (liece-insert-info liece-200-buffer
- (concat "\t[" name "]\n"))))
-
-(defun* liece-handle-215-message (prefix rest)
- "RPL_STATSILINE \"I <host> * <host> <port> <class>\""
- (or (string-match "[^ ]* I \\([^ ]*\\) \\(.*\\) \\([^ ]*\\)" rest)
- (return-from liece-handle-215-message))
- (let ((domain (match-string 1 rest)) (passwd (match-string 2 rest))
- (redomain (match-string 3 rest)))
- (liece-insert-info liece-200-buffer
- (format "I:%s:%s:%s\n" domain passwd redomain))))
-
-(defun* liece-handle-216-message (prefix rest)
- "RPL_STATSKLINE \"K <host> * <username> <port> <class>\""
- (or (or (string-match
- "[^ ]* K \\([^ ]*\\) \\(.\\) \\([^ ]*\\) 0 -1" rest)
- (string-match
- "[^ ]* K \\([^ ]*\\) \\([^ ]*\\) \\([^ ]*\\) 0 [:]*-1" rest))
- (return-from liece-handle-216-message))
- (let ((host (match-string 1 rest)) (pass (match-string 2 rest))
- (user (match-string 3 rest)))
- (liece-insert-info liece-200-buffer
- (format "K:%s:%s:%s\n" host pass user))))
-
-(defun* liece-handle-217-message (prefix rest)
- "RPL_STATSQLINE \"Q %s %s %s %d %d\""
- (or (string-match
- "[^ ]* Q \\([^ ]*\\) \\(.\\) \\([^ ]*\\) \\(.*\\)" rest)
- (return-from liece-handle-217-message))
- (let ((reason (match-string 1 rest)) (star (match-string 2 rest))
- (host (match-string 3 rest)) (stuff (match-string 4 rest)))
- (liece-insert-info liece-200-buffer
- (format "Q:%s:%s:%s:%s\n" reason star host stuff))))
-
-(defun* liece-handle-218-message (prefix rest)
- "RPL_STATSYLINE \"Y <class> <ping frequency> <connect frequency> <max sendq>\""
- (or (string-match "[^ ]* Y " rest)
- (return-from liece-handle-218-message))
- (let* ((args (split-string (substring rest (match-end 0))))
- (class (pop args)) (pingfreq (pop args)) (confreq (pop args))
- (maxlinks (pop args)) (qlen (pop args)))
- (liece-insert-info liece-200-buffer
- (concat "Class " class ": \n"))
- (liece-insert-info liece-200-buffer
- (concat "\tPing frequency " pingfreq " (sec)\n"))
- (liece-insert-info liece-200-buffer
- (concat "\tConnection frequency " confreq " (sec)\n"))
- (liece-insert-info liece-200-buffer
- (concat "\tMaximum links " maxlinks "\n"))
- (when qlen
- (liece-insert-info liece-200-buffer
- (concat "\tMaximum amount of send buffer "
- qlen " (bytes)\n")))))
-
-(defun liece-handle-219-message (prefix rest)
- "RPL_ENDOFSTATS \"<stats letter> :End of /STATS report\"."
- nil)
-
-(defun liece-handle-221-message (prefix rest)
- "RPL_UMODEIS \"<user mode string>\"."
- (if (string-match "[^ ]* \\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (format (_ "Mode for you is %s\n")
- (match-string 1 rest)))))
-
-;;;
-;;; 230 series not implemented as 7/94
-;;;
-(defun liece-handle-231-message (prefix rest)
- nil)
-
-(defun liece-handle-232-message (prefix rest)
- nil)
-
-(defun liece-handle-233-message (prefix rest)
- nil)
-
-(defun liece-handle-234-message (prefix rest)
- nil)
-
-(defun liece-handle-235-message (prefix rest)
- nil)
-
-(defun liece-handle-241-message (prefix rest)
- "RPL_STATSLLINE \"L <hostmask> * <servername> <maxdepth>\"."
- (if (string-match "[^ ]* \\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (concat (match-string 1 rest) "\n"))))
-
-(defun liece-handle-242-message (prefix rest)
- "RPL_STATSUPTIME \":Server Up %d days %d:%02d:%02d\"."
- (if (string-match "[^ ]* :\\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (concat (match-string 1 rest) "\n"))))
-
-(defun liece-handle-243-message (prefix rest)
- "RPL_STATSOLINE \"O <hostmask> * <name>\"."
- (if (string-match "[^ ]* \\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (concat (match-string 1 rest) "\n"))))
-
-(defun liece-handle-244-message (prefix rest)
- "RPL_STATSHLINE \"H <hostmask> * <servername>\"."
- (if (string-match "[^ ]* \\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (concat (match-string 1 rest) "\n"))))
-
-(defun liece-handle-245-message (prefix rest)
- "RPL_STATSSLINE \"S <hostmask> * <servicename> <servicetype> <class>\"."
- (if (string-match "[^ ]* \\(.*\\)" rest)
- (liece-insert-info liece-200-buffer
- (concat (match-string 1 rest) "\n"))))
-
-(defun liece-handle-262-message (prefix rest)
- "RPL_ENDOFTRACE \"<nickname> <target> <version> :End of TRACE\"."
- nil)
-
-\f
-;;; @ register message handlers
-;;;
-
-(eval-when-compile (require 'liece-handler))
-
-(liece-handler-define-backend "200")
-
-(defmacro liece-register-200-handler (num)
- `(progn
- (liece-handler-define-function
- ,(number-to-string num) '(prefix rest "200")
- ',(intern (format "liece-handle-%03d-message" num)))
- (defvar ,(intern (format "liece-%03d-hook" num)) nil)
- (defvar ,(intern (format "liece-after-%03d-hook" num)) nil)))
-
-(liece-register-200-handler 200)
-(liece-register-200-handler 201)
-(liece-register-200-handler 202)
-(liece-register-200-handler 203)
-(liece-register-200-handler 204)
-(liece-register-200-handler 205)
-(liece-register-200-handler 206)
-(liece-register-200-handler 207)
-(liece-register-200-handler 208)
-(liece-register-200-handler 209)
-
-(liece-register-200-handler 211)
-(liece-register-200-handler 212)
-(liece-register-200-handler 213)
-(liece-register-200-handler 214)
-(liece-register-200-handler 215)
-(liece-register-200-handler 216)
-(liece-register-200-handler 217)
-(liece-register-200-handler 218)
-(liece-register-200-handler 219)
-
-(liece-register-200-handler 221)
-
-(liece-register-200-handler 231)
-(liece-register-200-handler 232)
-(liece-register-200-handler 233)
-(liece-register-200-handler 234)
-(liece-register-200-handler 235)
-
-(liece-register-200-handler 241)
-(liece-register-200-handler 242)
-(liece-register-200-handler 243)
-(liece-register-200-handler 244)
-(liece-register-200-handler 245)
-(liece-register-200-handler 262)
-
-(provide 'liece-200)
-
-;;; liece-200.el ends here
+++ /dev/null
-;;; liece-300.el --- Handler routines for 300 numeric reply.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-misc)
- (require 'liece-commands))
-
-(eval-and-compile
- (autoload 'liece-dcc-compare-hostnames "liece-dcc"))
-
-(defvar liece-recursing-whois nil)
-(defvar liece-recursing-whowas nil)
-
-(defun* liece-handle-300-messages (number prefix rest)
- "300 replies"
- (or (string-match "[^ ]* \\([^ ]*\\) *\\([^ ]*\\) *:\\(.*\\)" rest)
- (return-from liece-handle-300-messages))
- (let ((target1 (liece-channel-virtual (match-string 1 rest)))
- (target2 (liece-channel-virtual (match-string 2 rest)))
- (msg (match-string 3 rest)))
- (cond ((string= target1 "")
- (liece-insert-info liece-300-buffer (concat msg "\n")))
- ((string= target2 "")
- (liece-insert-info liece-300-buffer
- (format "%s (%s)\n" msg target1)))
- (t
- (liece-insert-info liece-300-buffer
- (format "%s %s (%s)\n" target1 msg target2))))))
-
-(defun liece-handle-301-message (prefix rest)
- "RPL_AWAY \"<nickname> :<away message>\"."
- (if (string-match "^[^ ]+ \\([^ ]+\\) +:\\(.*\\)" rest)
- (let ((who (match-string 1 rest)) (iswhat (match-string 2 rest)))
- (or liece-recursing-whois
- (liece-insert-info liece-300-buffer
- (concat who " is marked as being away, "
- "but left the message:\n"
- iswhat "\n"))))))
-
-(defun liece-handle-302-message (prefix rest)
- "RPL_USERHOST \":[<reply>{<space><reply>}]\"."
- (while (string-match
- "^[^ ]* :[ ]*\\([^*=]+\\)\\([*]*\\)=\\([+-]\\)\\([^ ]+\\)" rest)
- (let ((nick (match-string 1 rest)) (oper (match-string 2 rest))
- (away (match-string 3 rest)) (who (match-string 4 rest))
- (end (match-end 4)))
- (if (liece-nick-equal nick liece-real-nickname)
- (setq liece-my-userhost who))
- (liece-insert-info liece-300-buffer
- (format "Nick %s is %s [%s%s, %s%s]\n"
- nick who
- (if (string= oper "") "Not ") "operator"
- (if (string= away "+") "Not ") "away"))
- (setq rest (concat " :" (substring rest end nil))))))
-
-(defun liece-303-display-friends (nicks)
- (let ((on (filter-elements nick nicks
- (not (string-list-member-ignore-case nick liece-friends-last))))
- (off (filter-elements nick liece-friends-last
- (not (string-list-member-ignore-case nick nicks)))))
- (setq liece-friends-last nicks)
- (if on
- (liece-insert-info liece-300-buffer
- (format (_ "Following people are now on: %s\n")
- (mapconcat 'identity on " "))))
- (if off
- (liece-insert-info liece-300-buffer
- (format (_ "Following people are now off: %s\n")
- (mapconcat 'identity off " "))))))
-
-(defun* liece-handle-303-message (prefix rest)
- "RPL_ISON \":[<nickname> {<space><nickname>}]\""
- (or (string-match "[^ ]+ :\\(.*\\)" rest)
- (return-from liece-handle-303-message))
- (setq rest (match-string 1 rest))
- (or (string= rest "")
- (setq rest (substring rest 0 -1)))
- (let ((nicks (split-string rest)))
- (when (and (null nicks) (null liece-friends))
- (liece-insert-info liece-300-buffer
- (_ "No one you requested is on now.\n"))
- (return-from liece-handle-303-message))
- (dolist (nick nicks)
- (when (and (string-list-member-ignore-case
- nick liece-current-chat-partners)
- (get (intern nick liece-obarray) 'part))
- (liece-insert-change (liece-pick-buffer nick)
- (format (_ "%s has come back\n") nick))
- (put (intern nick liece-obarray) 'part nil)))
- (unless liece-friends
- (liece-insert-info liece-300-buffer
- (format (_ "Following people are on: %s\n") rest))
- (return-from liece-handle-303-message))
- (if (fboundp liece-display-friends-function)
- (funcall liece-display-friends-function nicks))))
-
-(defun* liece-handle-305-message (prefix rest)
- "RPL_UNAWAY \":You are no longer marked as being away\""
- (or (string-equal liece-away-indicator "A")
- (return-from liece-handle-305-message))
- (setq liece-away-indicator "-")
- (liece-maybe-poll)
- (when (string-match "[^:]:\\(.*\\)" rest)
- (setq rest (match-string 1 rest))
- (liece-insert-info liece-300-buffer
- (format "%s (%s)\n"
- rest (funcall liece-format-time-function
- (current-time))))))
-
-(defun liece-handle-306-message (prefix rest)
- "RPL_NOWAWAY \":You have been marked as being away\"."
- (setq liece-away-indicator "A")
- (if (string-match "[^:]:\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (format "%s (%s)\n"
- (match-string 1 rest)
- (funcall liece-format-time-function
- (current-time))))))
-
-(defun liece-handle-311-message (prefix rest)
- "RPL_WHOISUSER \"<nickname> <user> <host> * :<real name>\"."
- (and (string-match "[^ ]+ \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) :\\(.*\\)" rest)
- (not liece-recursing-whois)
- (liece-insert-info liece-300-buffer
- (format "%s is %s (%s@%s)\n"
- (match-string 1 rest) ; nick
- (match-string 5 rest) ; realname
- (match-string 2 rest) ; username
- (match-string 3 rest) ; machine
- ))))
-
-(defun* liece-handle-312-message (prefix rest)
- "RPL_WHOISSERVER \"<nickname> <server> :<server info>\""
- (or (string-match "^[^ ]+ \\(\\([^ ]+\\) \\)?\\([^ ]+\\) :\\(.*\\)" rest)
- (return-from liece-handle-312-message))
- (let ((who (match-string 2 rest))
- (server (match-string 3 rest))
- (real (match-string 4 rest)))
- (if (and liece-dcc-resolve-server
- (not (liece-dcc-compare-hostnames server (liece-server-host)))
- (not liece-recursing-whois)
- (not liece-recursing-whowas))
- (progn
- (setq liece-recursing-whois t)
- (liece-send "WHOIS %s %s" server who))
- (setq liece-recursing-whois nil)
- (liece-insert-info liece-300-buffer
- (format "on via server %s (%s)\n" server real)))))
-
-(defun liece-handle-313-message (prefix rest)
- "RPL_WHOISOPERATOR \"<nickname> :is an IRC operator\"."
- (if (string-match "^[^ ]+ \\([^ ]+\\) :\\(.*\\)" rest)
- (or liece-recursing-whois
- (liece-insert-info liece-300-buffer
- (concat (match-string 2 rest)
- " is an IRC operator\n")))))
-
-(defun liece-handle-316-message (prefix rest)
- "RPL_WHOISCHANOP."
- (cond ((string-match "^\\([^ ]+\\) :\\(.*\\)" rest)
- (if (not liece-recursing-whois)
- (liece-insert-info liece-300-buffer
- (concat "Status: "
- (match-string 2 rest) "\n"))))
- ((string-match "^\\([^ ]+\\) \\([^ ]+\\) :\\(.*\\)" rest)
- (if (not liece-recursing-whois)
- (liece-insert-info liece-300-buffer
- (concat "Status: "
- (match-string 3 rest) "\n"))))))
-
-(defun* liece-handle-319-message (prefix rest)
- "RPL_WHOISCHANNELS \"<nickname> :{[@|+]<channel><space>}\""
- (or (string-match "^\\([^ ]+\\) \\([^ ]+\\) :\\(.*\\)" rest)
- (return-from liece-handle-319-message))
- (let ((chnls (split-string (match-string 3 rest)))
- isonchnls flag)
- (dolist (chnl chnls)
- (if (and (or (eq ?@ (string-to-char chnl))
- (eq ?+ (string-to-char chnl)))
- (liece-channel-p (substring chnl 1)))
- (progn
- (setq flag (substring chnl 0 1)
- chnl (substring chnl 1)))
- (setq flag ""))
- (push (concat flag (liece-channel-virtual chnl)) isonchnls))
- (if (not liece-recursing-whois)
- (liece-insert-info liece-300-buffer
- (format (_ "Channels: %s\n")
- (mapconcat (function identity)
- (nreverse isonchnls) " "))))))
-
-(defun liece-handle-314-message (prefix rest)
- "RPL_WHOWASUSER \"<nickname> <user> <host> * :<real name>\"."
- (if (string-match
- "[^ ]+ \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) :\\(.*\\)"
- rest)
- (let ((nick (match-string 1 rest)) (username (match-string 2 rest))
- (machine (match-string 3 rest)) (chnl (match-string 4 rest))
- (realname (match-string 5 rest)))
- (setq liece-recursing-whowas t)
- (liece-insert-info liece-300-buffer
- (format "%s [%s] was %s (%s@%s)\n"
- nick
- (if (string= chnl "*") "Private" chnl)
- realname username machine)))))
-
-(defun liece-handle-315-message (prefix rest)
- "RPL_ENDOFWHO."
- (if (zerop liece-long-reply-count)
- (liece-insert-info liece-300-buffer
- (concat "No matches found"
- (if liece-who-expression
- (concat ": " liece-who-expression)
- "")
- "\n")))
- (setq liece-who-expression nil)
- (liece-reset-long-reply-count))
-
-(defun liece-handle-317-message (prefix rest)
- "RPL_WHOISIDLE \"<nickname> <integer> :seconds idle\"."
- (cond ((string-match "^[^ ]+ [^ ]+ \\([0-9]*\\) :\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (concat "Idle for "
- (liece-convert-seconds
- (match-string 1 rest))
- "\n")))
- ((string-match "^[^ ]+ \\([0-9]*\\) :\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (concat "Idle for "
- (liece-convert-seconds
- (match-string 1 rest))
- "\n")))))
-
-(defun liece-handle-318-message (prefix rest)
- "RPL_ENDOFWHOIS \"<nickname> :End of /WHOIS list\"."
- nil)
-
-(defun liece-handle-321-message (prefix rest)
- "RPL_LISTSTART \"Channel :Users Name\"."
- (liece-insert-info liece-300-buffer
- (format "%-10s%6s %s\n"
- (_ "Channel") (_ "Users") (_ "Topic"))))
-
-(defun* liece-handle-322-message (prefix rest)
- "RPL_LIST \"<channel> <# visible> :<topic>\""
- (or (string-match "^\\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) :\\(.*\\)" rest)
- (return-from liece-handle-322-message))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (let ((chnl (match-string 2 rest))
- (users (match-string 3 rest))
- (topic (match-string 4 rest)))
- (when (or (string= liece-channel-filter (downcase chnl))
- (string= liece-channel-filter "")
- (and (string= liece-channel-filter "0")
- (string= chnl "*")))
- (setq chnl (liece-channel-virtual chnl))
- (put (intern chnl liece-obarray) 'topic topic)
- (liece-insert-info (append (liece-pick-buffer chnl) liece-300-buffer)
- (format "%-10s%6s user%s%s%s\n"
- (if (string= chnl "*") "Priv" chnl)
- users
- (if (> (string-to-int users) 1) "s" "")
- (if (string= "" topic) "" ": ")
- topic)))))
-
-(defun liece-handle-323-message (prefix rest)
- "RPL_LISTEND \":End of /LIST\"."
- (liece-reset-long-reply-count))
-
-(defun liece-handle-324-message (prefix rest)
- "RPL_CHANNELMODEIS \"<channel> <mode> <mode params>\"."
- (if (string-match "[^ ]* \\([^ ]*\\) +\\+\\([^ ]*\\)\\( *[^ ]*\\)" rest)
- (let ((chnl (match-string 1 rest))
- (mode (match-string 2 rest))
- (param (match-string 3 rest)))
- (setq chnl (liece-channel-virtual chnl))
- (put (intern chnl liece-obarray) 'mode mode)
- (liece-insert-info (append (liece-pick-buffer chnl)
- liece-300-buffer)
- (format (_ "Mode for %s is %s%s\n")
- chnl mode param))
- (liece-set-channel-indicator))))
-
-(defun liece-handle-331-message (prefix rest)
- "RPL_NOTOPIC \"<channel> :No topic is set\"."
- (if (string-match "[^ ]* \\([^ ]*\\) \\(.*\\)" rest)
- (let ((chnl (match-string 1 rest)))
- (setq chnl (liece-channel-virtual chnl))
- (put (intern chnl liece-obarray) 'topic nil)
- (liece-insert-info (append (liece-pick-buffer chnl)
- liece-300-buffer)
- (_ "No topic is set\n"))
- (liece-set-channel-indicator))))
-
-(defun liece-handle-332-message (prefix rest)
- "RPL_TOPIC \"<channel> :<topic>\"."
- (if (string-match "[^ ]* \\([^ ]*\\) +:\\(.*\\)" rest)
- (let ((chnl (liece-channel-virtual (match-string 1 rest)))
- (topic (match-string 2 rest)))
- (liece-channel-set-topic topic chnl)
- (liece-insert-info (liece-pick-buffer chnl)
- (format (_ "Topic: %s\n") topic))
- (liece-insert-info liece-300-buffer
- (format (_ "Topic for %s: %s\n") chnl topic))
- (liece-set-channel-indicator))))
-
-(defun liece-handle-333-message (prefix rest)
- "RPL_TOPICWHOTIME <channel> <nickname> <time>."
- (if (string-match "[^ ]* \\([^ ]*\\) +\\([^ ]*\\) +\\([^ ]*\\)" rest)
- (let ((chnl (liece-channel-virtual (match-string 1 rest)))
- (nick (match-string 2 rest))
- (time (funcall liece-format-time-function
- (liece-seconds-to-time
- (string-to-int (match-string 3 rest))))))
- (liece-insert-info (liece-pick-buffer chnl)
- (format (_ "Topic set by %s at %s\n")
- nick time))
- (liece-insert-info liece-300-buffer
- (format (_ "Topic for %s set by %s at %s\n")
- chnl nick time))
- (liece-set-channel-indicator))))
-
-(defun liece-handle-341-message (prefix rest)
- "RPL_INVITING \"<channel> <nickname>\"."
- (if (string-match "^\\([^ ]+\\) +\\([^ ]+\\) +\\([-#&0-9+][^ ]*\\)" rest)
- (let ((nick (match-string 2 rest))
- (chnl (liece-channel-virtual (match-string 3 rest))))
- (liece-insert-info (liece-pick-buffer chnl)
- (format (_ "Inviting user %s\n") nick))
- (liece-insert-info liece-300-buffer
- (format (_ "Inviting user %s to channel %s\n")
- nick chnl)))))
-
-(defun liece-handle-346-message (prefix rest)
- "RPL_INVITELIST \"<channel> <inviteid>\"."
- (when (string-match "[^ ]* \\([^ ]*\\) \\([^ ]*\\)" rest)
- (let* ((regexp (match-string 2 rest))
- (chnl (liece-channel-virtual (match-string 1 rest))))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (or (> liece-polling 0)
- (liece-channel-add-invite regexp chnl)))))
-
-(defun liece-handle-347-message (prefix rest)
- "RPL_ENDOFINVITELIST \"<channel> :End of Channel Invite List\"."
- (when (string-match "[^ ]* \\([^ ]*\\)" rest)
- (let* ((chnl (liece-channel-virtual (match-string 1 rest)))
- (invites (liece-channel-get-invites chnl)))
- (liece-reset-long-reply-count)
- (liece-insert-info liece-300-buffer
- (concat "Following users are invited to " chnl
- ": \n"))
- (dolist (invite invites)
- (liece-insert-info liece-300-buffer
- (concat "\t" invite "\n"))))))
-
-(defun liece-handle-348-message (prefix rest)
- "RPL_EXCEPTLIST \"<channel> <exceptid>\"."
- (when (string-match "[^ ]* \\([^ ]*\\) \\([^ ]*\\)" rest)
- (let* ((regexp (match-string 2 rest))
- (chnl (liece-channel-virtual (match-string 1 rest))))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (or (> liece-polling 0)
- (liece-channel-add-exception regexp chnl)))))
-
-(defun liece-handle-349-message (prefix rest)
- "RPL_ENDOFEXCEPTLIST \"<channel> :End of Channel Exception List\"."
- (when (string-match "[^ ]* \\([^ ]*\\)" rest)
- (let* ((chnl (liece-channel-virtual (match-string 1 rest)))
- (exceptions (liece-channel-get-exceptions chnl)))
- (liece-reset-long-reply-count)
- (liece-insert-info liece-300-buffer
- (concat "Following users are welcome to " chnl
- ": \n"))
- (dolist (exception exceptions)
- (liece-insert-info liece-300-buffer
- (concat "\t" exception "\n"))))))
-
-(defun liece-handle-351-message (prefix rest)
- "RPL_VERSION \"<version>.<debuglevel> <server> :<comments>\"."
- (if (string-match "[^ ]+ \\([^ ]+\\) :*\\([^ ]+\\)[ :]*\\(.*\\)" rest)
- (liece-insert-info
- liece-300-buffer
- (format (_ "Machine %s is running IRC version %s (%s)\n")
- (match-string 2 rest) ; machine
- (match-string 1 rest) ; version
- (match-string 3 rest) ; comments
- ))))
-
-(defun liece-handle-352-message (prefix rest)
- "RPL_WHOREPLY \"<channel> <user> <host> <server> <nickname> <H|G>[*][@|+] :<hopcount> <real name>\"."
- (if (string-match "\\([^ ]*\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\) :[0-9]* ?\\(.*\\)" rest)
- (let ((chnl (liece-channel-virtual (match-string 1 rest)))
- (user (match-string 2 rest)) (host (match-string 3 rest))
- (nick (match-string 5 rest)) (oper (match-string 6 rest))
- (name (match-string 7 rest)))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (liece-nick-set-user-at-host nick (concat user "@" host))
- (liece-insert-info liece-300-buffer
- (format "%3s %10s %9s %-29s %s\n"
- oper (if (memq (aref chnl 0) '(?* ?0))
- "Private" chnl)
- nick
- (concat "(" user "@"
- (liece-clean-hostname host)
- ")")
- name)))))
-
-(defvar liece-353-names nil)
-
-(defmacro liece-353-scan-channels (chnl)
- `(or (string-assoc-ignore-case ,chnl liece-channel-alist)
- (push (list ,chnl) liece-channel-alist)))
-
-(defun liece-handle-353-message (prefix rest)
- "RPL_NAMREPLY \"<channel> :[[@|+]<nick> [[@|+]<nick> [...]]]\"."
- (when (string-match "[^ =*@]?[=*@] \\([^ ]*\\) :\\(.*\\)" rest)
- (let ((chnl (liece-channel-virtual (match-string 1 rest)))
- (users (delete "" (split-string (match-string 2 rest)))))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (or (> liece-polling 0)
- (setq liece-353-names
- (append (nreverse users) liece-353-names )))
- (liece-353-scan-channels chnl))))
-
-(defun liece-handle-361-message (prefix rest)
- "RPL_KILLDONE."
- (if (string-match "[^ ]+ \\([^ ]+\\) +:\\(.*\\)" rest)
- (let ((who (match-string 1 rest))
- (message (match-string 2 rest)))
- (liece-insert-info liece-300-buffer
- (format (_ "You just killed %s. %s\n")
- who message)))))
-
-(defstruct liece-364-link from to hop info)
-(defvar liece-364-links nil)
-
-(defun liece-handle-364-message (prefix rest)
- "RPL_LINKS \"<mask> <server> :<hopcount> <server info>\"."
- (if (string-match
- "[^ ]+ \\([^ ]+\\) +\\([^ ]*\\) +:\\(\\(.*\\) +\\(.*\\)\\)" rest)
- (let ((from (match-string 1 rest)) (to (match-string 2 rest))
- (hop (string-to-int (match-string 4 rest)))
- (info (match-string 5 rest)) link)
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (setq rest (match-string 3 rest)
- link (make-liece-364-link
- :from from :to to :hop hop :info info))
- (push link liece-364-links))))
-
-(defun liece-handle-365-message (prefix rest)
- "RPL_ENDOFLINKS \"<mask> :End of /LINKS list\"."
- (liece-reset-long-reply-count)
- (dolist (link liece-364-links)
- (liece-insert-info liece-300-buffer
- (concat (liece-364-link-from link)
- " --"
- (number-to-string (liece-364-link-hop link))
- "-- "
- (liece-364-link-to link) "\n")))
- (setq liece-364-links nil))
-
-(defun liece-handle-366-message (prefix rest)
- "RPL_ENDOFNAME \"<channel> :End of /NAMES list\"."
- (when (string-match "[^ ]* \\([^ ]*\\)" rest)
- (let ((level (- liece-polling 1))
- (users (length liece-353-names))
- (names (mapconcat #'identity liece-353-names " "))
- (chnl (liece-channel-virtual (match-string 1 rest))))
- (liece-reset-long-reply-count)
- (setq liece-polling (max 0 level))
- (liece-insert-info (append (liece-pick-buffer chnl)
- liece-300-buffer)
- (format "%-10s%6d user%s: %s\n"
- (if (memq chnl '(?* ?0))
- "Private"
- chnl)
- users (if (= users 1) "" "s") names))
- (and liece-353-names
- (liece-channel-member chnl liece-current-channels)
- (liece-nick-update chnl liece-353-names))
- (setq liece-353-names nil))))
-
-(defun liece-handle-367-message (prefix rest)
- "RPL_BANLIST \"<channel> <banid>\"."
- (when (string-match "[^ ]* \\([^ ]*\\) \\([^ ]*\\)" rest)
- (let* ((regexp (match-string 2 rest))
- (chnl (liece-channel-virtual (match-string 1 rest))))
- (liece-increment-long-reply-count)
- (liece-check-long-reply-count)
- (or (> liece-polling 0)
- (liece-channel-add-ban regexp chnl)))))
-
-(defun liece-handle-368-message (prefix rest)
- "RPL_ENDOFBANLIST \"<channel> :End of channel ban list\"."
- (when (string-match "[^ ]* \\([^ ]*\\)" rest)
- (let* ((chnl (liece-channel-virtual (match-string 1 rest)))
- (bans (liece-channel-get-bans chnl)))
- (liece-reset-long-reply-count)
- (liece-insert-info liece-300-buffer
- (concat "Following users are banned on " chnl
- ": \n"))
- (dolist (ban bans)
- (liece-insert-info liece-300-buffer
- (concat "\t" ban "\n"))))))
-
-(defun liece-handle-369-message (prefix rest)
- "RPL_ENDOFWHOWAS \"<nickname> :End of WHOWAS\"."
- (setq liece-recursing-whowas nil))
-
-(defun liece-handle-371-message (prefix rest)
- "RPL_INFO \":<string>\"."
- (if (string-match "^\\([^ ]+\\) +:?\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (concat (match-string 2 rest) "\n"))))
-
-(defun liece-handle-372-message (prefix rest)
- "RPL_MOTD \":- <text>\"."
- (if (string-match "^\\([^ ]+\\) +:?\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (concat (match-string 2 rest) "\n"))))
-
-(defun liece-handle-381-message (prefix rest)
- "RPL_YOUREOPER \":You are now an IRC operator\"."
- (if (string-match "^\\([^ ]+\\) +:\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (format "You are now an IRC operator (%s)\n"
- (match-string 2 rest)))))
-
-(defun liece-handle-382-message (prefix rest)
- "RPL_REHASHING \"<config file> :Rehashing\"."
- (if (string-match "^\\([^ ]+\\) +:\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (concat (match-string 2 rest) " "
- (match-string 1 rest) "\n"))))
-
-(defun liece-handle-391-message (prefix rest)
- "RPL_TIME \"<server> :<string showing server's local time>\"."
- (if (string-match "^\\([^ ]+\\) +\\(.*\\)" rest)
- (liece-insert-info liece-300-buffer
- (format (_ "Server time is %s\n")
- (match-string 2 rest)))))
-
-\f
-;;; @ register message handlers
-;;;
-
-(eval-when-compile (require 'liece-handler))
-
-(liece-handler-define-backend "300")
-
-(defmacro liece-register-300-handler (num)
- `(progn
- (liece-handler-define-function
- ,(number-to-string num) '(prefix rest "300")
- ',(intern (format "liece-handle-%03d-message" num)))
- (defvar ,(intern (format "liece-%03d-hook" num)) nil)
- (defvar ,(intern (format "liece-after-%03d-hook" num)) nil)))
-
-(liece-register-300-handler 301)
-(liece-register-300-handler 302)
-(liece-register-300-handler 303)
-(liece-register-300-handler 305)
-(liece-register-300-handler 306)
-
-(liece-register-300-handler 311)
-(liece-register-300-handler 312)
-(liece-register-300-handler 313)
-(liece-register-300-handler 314)
-(liece-register-300-handler 315)
-(liece-register-300-handler 316)
-(liece-register-300-handler 317)
-(liece-register-300-handler 318)
-(liece-register-300-handler 319)
-
-(liece-register-300-handler 321)
-(liece-register-300-handler 322)
-(liece-register-300-handler 323)
-(liece-register-300-handler 324)
-
-(liece-register-300-handler 331)
-(liece-register-300-handler 332)
-(liece-register-300-handler 333)
-
-(liece-register-300-handler 341)
-(liece-register-300-handler 348)
-(liece-register-300-handler 349)
-
-(liece-register-300-handler 351)
-(liece-register-300-handler 352)
-(liece-register-300-handler 353)
-
-(liece-register-300-handler 361)
-(liece-register-300-handler 364)
-(liece-register-300-handler 365)
-(liece-register-300-handler 366)
-(liece-register-300-handler 367)
-(liece-register-300-handler 368)
-(liece-register-300-handler 369)
-
-(liece-register-300-handler 371)
-(liece-register-300-handler 372)
-
-(liece-register-300-handler 381)
-(liece-register-300-handler 382)
-
-(liece-register-300-handler 391)
-
-(provide 'liece-300)
-
-;;; liece-300.el ends here
+++ /dev/null
-;;; liece-400.el --- Handler routines for 400 numeric reply.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-misc))
-
-(defun* liece-handle-400-messages (number prefix rest)
- "400 replies -- ERRORS"
- (or (string-match "[^ ]* \\([^ ]*\\) *\\([^ ]*\\) *:\\(.*\\)" rest)
- (return-from liece-handle-400-messages))
- (let ((target1 (match-string 1 rest)) (target2 (match-string 2 rest))
- (msg (match-string 3 rest)))
- (setq target1 (liece-channel-virtual target1)
- target2 (liece-channel-virtual target2))
- (cond ((string= target1 "")
- (liece-insert-error liece-400-buffer
- (concat msg "\n")))
- ((string= target2 "")
- (liece-insert-error liece-400-buffer
- (concat msg " (" target1 ")\n")))
- (t
- (liece-insert-error liece-400-buffer
- (format"%s %s (%s)\n" target1 msg target2))))))
-
-(defun liece-handle-401-message (prefix rest)
- "ERR_NOSUCHNICK \"<nickname> :No such nick/channel\"."
- (if (string-match "[^ ]+ \\([^ ]+\\)" rest)
- (let ((name (match-string 1 rest)))
- (liece-nick-change name nil)
- (liece-send "WHOWAS %s" name))))
-
-(defun liece-handle-406-message (prefix rest)
- "ERR_WASNOSUCHNICK \"<nickname> :There was no such nickname\"."
- (if (string-match "[^ ]+ \\([^ ]+\\)" rest)
- (let ((nick (match-string 1 rest)))
- (liece-nick-change nick nil)
- (liece-message (_ "No such user %s") nick))))
-
-(defun liece-handle-412-message (prefix rest)
- "ERR_NOTEXTTOSEND \":No text to send\"."
- (liece-message (_ "No text to send")))
-
-(defun liece-iterate-nick (nick)
- (let* ((fmt (format "%s_" nick))
- (new (substring fmt 0 (min 9 (length fmt)))))
- (if (string= nick new)
- (liece-iterate-nick (format "_%s" nick))
- new)))
-
-(defun liece-handle-432-message (prefix rest)
- "ERR_ERRONEUSNICKNAME \"<nickname> :Erroneous nickname\"."
- (let ((nick (cond ((string-match "^[^ ]+ +\\([^ ]+\\)" rest)
- (match-string 1 rest))
- ((string-match "^ *\\([^ ]+\\)" rest)
- (match-string 1 rest)))))
- (with-current-buffer liece-command-buffer
- (if (eq liece-nick-accepted 'ok)
- (setq liece-real-nickname liece-nickname-last))
- (liece-message
- (_ "Erroneous nickname %s. Choose a new one with %s.")
- nick (substitute-command-keys "\\[liece-command-nickname]"))
- (liece-beep))))
-
-(defun liece-handle-433-message (prefix rest)
- "ERR_NICKNAMEINUSE \"<nickname> :Nickname is already in use\"."
- (let ((nick (cond ((string-match "^[^ ]+ +\\([^ ]+\\)" rest)
- (match-string 1 rest))
- ((string-match "^ *\\([^ ]+\\)" rest)
- (match-string 1 rest)))))
- (cond
- ((and (not (eq liece-nick-accepted 'ok))
- liece-auto-iterate-nick)
- (liece-send "NICK %s" (liece-iterate-nick nick))
- (setq liece-nick-accepted 'sent))
- (t
- (if (eq liece-nick-accepted 'ok)
- (setq liece-real-nickname liece-nickname-last))
- (with-current-buffer liece-command-buffer
- (liece-message
- (_ "Nickname %s already in use. Choose a new one with %s.")
- nick (substitute-command-keys "\\[liece-command-nickname]"))
- (liece-beep))))))
-
-(defun liece-handle-442-message (prefix rest)
- "ERR_NOTONCHANNEL \"<channel> :You're not on that channel\"."
- (if (string-match "[^ ]+ \\([^ ]+\\) +:\\(.*\\)" rest)
- (let* ((chnl (liece-channel-virtual (match-string 1 rest)))
- (rest (match-string 2 rest)))
- (if (liece-channel-member chnl liece-current-channels)
- (liece-channel-part chnl)
- (liece-message (_ "You're not on channel %s") chnl)))))
-
-(defun liece-handle-443-message (prefix rest)
- "ERR_USERONCHANNEL \"<channel> <nickname> :is already on channel\"."
- (if (string-match "[^ ]+ \\([^ ]+\\) \\([^ ]+\\)" rest)
- (let ((chnl (match-string 1 rest))
- (rest (match-string 2 rest)))
- (when (prog1 (liece-channel-p chnl)
- (setq chnl (liece-channel-virtual chnl)))
- (or (liece-channel-member chnl liece-current-channels)
- (liece-channel-join chnl)))
- (liece-message (_ "You're already on channel %s") chnl))))
-
-(defun liece-handle-464-message (prefix rest)
- "ERR_PASSWDMISMATCH \":Password incorrect\"."
- (liece-message
- (_ "Password incorrect from %s. Try again with password.") prefix)
- (setq liece-reconnect-with-password t))
-
-(defun liece-handle-482-message (prefix rest)
- "ERR_CHANOPRIVSNEEDED \"<channel> :You're not channel operator\"."
- (liece-message (_ "You are not a channel operator")))
-
-\f
-;;; @ register message handlers
-;;;
-
-(eval-when-compile (require 'liece-handler))
-
-(liece-handler-define-backend "400")
-
-(defmacro liece-register-400-handler (num)
- `(progn
- (liece-handler-define-function
- ,(number-to-string num) '(prefix require "400")
- ',(intern (format "liece-handle-%03d-message" num)))
- (defvar ,(intern (format "liece-%03d-hook" num)) nil)
- (defvar ,(intern (format "liece-after-%03d-hook" num)) nil)))
-
-(liece-register-400-handler 401)
-(liece-register-400-handler 406)
-
-(liece-register-400-handler 412)
-
-(liece-register-400-handler 432)
-(liece-register-400-handler 433)
-
-(liece-register-400-handler 442)
-(liece-register-400-handler 443)
-
-(liece-register-400-handler 464)
-
-(liece-register-400-handler 482)
-
-(provide 'liece-400)
-
-;;; liece-400.el ends here
+++ /dev/null
-;;; liece-500.el --- Handler routines for 500 numeric reply.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-misc))
-
-(defun* liece-handle-500-messages (number prefix rest)
- (or (string-match "[^ ]* \\([^ :]*\\) *\\([^ :]*\\) *:\\(.*\\)" rest)
- (return-from liece-handle-500-messages))
- (let ((target1 (match-string 1 rest)) (target2 (match-string 2 rest))
- (msg (match-string 3 rest)))
- (cond ((string-equal target1 "")
- (liece-insert-error liece-500-buffer (concat msg "\n")))
- ((string-equal target2 "")
- (liece-insert-error liece-500-buffer
- (concat msg " (" target1 ")\n")))
- (t
- (liece-insert-error liece-500-buffer
- (format "%s %s (%s)\n"
- target1 msg target2))))))
-
-(provide 'liece-500)
-
-;;; liece-500.el ends here
+++ /dev/null
-;;; liece-channel.el --- Various facility for channel operation.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-05-05
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'liece-inlines))
-
-(eval-when-compile (require 'liece-clfns))
-
-(defconst liece-channel-regexp "[+&#!]")
-(defconst liece-channel-modeless-regexp "[+!]")
-
-(defvar liece-default-channel-representation-format "%s+%s")
-
-(defconst liece-dcc-channel-representation-format "=%s")
-
-(define-widget 'liece-channel-push-button 'push-button
- "A channel button."
- :action 'liece-channel-push-button-action)
-
-(defun liece-channel-push-button-action (widget &optional event)
- (let ((chnl (liece-channel-virtual (widget-value widget))))
- (if (or (liece-channel-member chnl liece-current-channels)
- (y-or-n-p (format "Do you really join %s? " chnl)))
- (liece-command-join chnl))))
-
-;;; Reader conventions
-(defun liece-channel-p (chnl)
- (string-match
- (eval-when-compile
- (concat "^" liece-channel-regexp))
- chnl))
-
-(defun liece-channel-modeless-p (chnl)
- (string-match
- (eval-when-compile
- (concat "^" liece-channel-modeless-regexp))
- chnl))
-
-(defalias 'liece-channel-equal 'string-equal-ignore-case)
-
-(defun liece-channel-member (chnl chnls)
- "Return non-nil if CHNL is member of CHNLS."
- (member-if
- (lambda (item)
- (and (stringp item) (liece-channel-equal chnl item)))
- chnls))
-
-(defun liece-channel-unread-p (chnl)
- "Return non-nil if CHNL is unread channel."
- (member-if
- (lambda (item)
- (and (stringp item) (liece-channel-equal chnl item)))
- liece-channel-unread-list))
-
-(defun liece-channel-get-nicks (&optional chnl)
- "Return CHNL or current channels's members as list."
- (get (intern (or chnl liece-current-channel) liece-obarray) 'nick))
-
-(defun liece-channel-get-operators (&optional chnl)
- "Return CHNL or current channels's operators as list."
- (get (intern (or chnl liece-current-channel) liece-obarray) 'oper))
-
-(defun liece-channel-get-voices (&optional chnl)
- "Return CHNL or current channels's voices as list."
- (get (intern (or chnl liece-current-channel) liece-obarray) 'voice))
-
-(defun liece-channel-get-topic (&optional chnl)
- "Return CHNL or current channels's topic."
- (get (intern (or chnl liece-current-channel) liece-obarray) 'topic))
-
-(defun liece-channel-get-modes (&optional chnl)
- "Return CHNL or current channels's mode."
- (get (intern (or chnl liece-current-channel) liece-obarray)
- 'mode))
-
-(defun liece-channel-get-bans (&optional chnl)
- "Return CHNL or current channels's ban list."
- (get (intern (or chnl liece-current-channel) liece-obarray)
- 'ban))
-
-(defun liece-channel-get-invites (&optional chnl)
- "Return CHNL or current channels's invite list."
- (get (intern (or chnl liece-current-channel) liece-obarray)
- 'invite))
-
-(defun liece-channel-get-exceptions (&optional chnl)
- "Return CHNL or current channels's exception list."
- (get (intern (or chnl liece-current-channel) liece-obarray)
- 'exception))
-
-;;; Internal functions
-(defun liece-channel-remove (chnl chnls)
- "Remove CHNL from CHNLS."
- (remove-if
- (lambda (item)
- (and (stringp item) (liece-channel-equal chnl item)))
- chnls))
-
-(defun liece-channel-delete (chnl chnls)
- "Delete CHNL from CHNLS."
- (delete-if
- (lambda (item)
- (and (stringp item) (liece-channel-equal chnl item)))
- chnls))
-
-(defmacro liece-channel-set-topic (topic &optional chnl)
- "Set CHNL or current channels's topic."
- `(put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'topic ,topic))
-
-(defmacro liece-channel-add-mode (mode &optional chnl)
- "Add MODE as char to CHNL."
- `(let ((modes (string-to-char-list (or (liece-channel-get-modes ,chnl)
- ""))))
- (or (memq ,mode modes)
- (push ,mode modes))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'mode (mapconcat #'char-to-string modes ""))))
-
-(defmacro liece-channel-remove-mode (mode &optional chnl)
- "Remove MODE as char to CHNL."
- `(let ((modes (string-to-char-list (or (liece-channel-get-modes ,chnl)
- ""))))
- (delq ,mode modes)
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'mode (mapconcat #'char-to-string modes ""))))
-
-(defmacro liece-channel-set-mode (val mode &optional chnl)
- "Set character VAL as channel MODE into the CHNL."
- `(if val
- (liece-channel-add-mode ,mode ,chnl)
- (liece-channel-remove-mode ,mode ,chnl)))
-
-(defmacro liece-channel-add-ban (pattern &optional chnl)
- "Add ban PATTERN as char to CHNL."
- `(let ((patterns (liece-channel-get-bans ,chnl)))
- (or (string-list-member-ignore-case ,pattern patterns)
- (push ,pattern patterns))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'ban patterns)))
-
-(defmacro liece-channel-remove-ban (pattern &optional chnl)
- "Remove ban PATTERN as char to CHNL."
- `(let ((patterns (remove-if (lambda (elm) (string-equal ,pattern elm))
- (liece-channel-get-bans ,chnl))))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'ban patterns)))
-
-(defmacro liece-channel-set-ban (chnl pattern val)
- "Set ban PATTERN as char to CHNL."
- `(if val
- (liece-channel-add-ban ,pattern ,chnl)
- (liece-channel-remove-ban ,pattern ,chnl)))
-
-(defmacro liece-channel-add-exception (pattern &optional chnl)
- "Add exception PATTERN as char to CHNL."
- `(let ((patterns (liece-channel-get-exceptions ,chnl)))
- (or (string-list-member-ignore-case ,pattern patterns)
- (push ,pattern patterns))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'exception patterns)))
-
-(defmacro liece-channel-remove-exception (pattern &optional chnl)
- "Remove exception PATTERN as char to CHNL."
- `(let ((patterns (remove-if (lambda (elm) (string-equal ,pattern elm))
- (liece-channel-get-exceptions ,chnl))))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'exception patterns)))
-
-(defmacro liece-channel-set-exception (chnl pattern val)
- "Set exception PATTERN as char to CHNL."
- `(if val
- (liece-channel-add-exception ,pattern ,chnl)
- (liece-channel-remove-exception ,pattern ,chnl)))
-
-(defmacro liece-channel-add-invite (pattern &optional chnl)
- "Add invite PATTERN as char to CHNL."
- `(let ((patterns (liece-channel-get-invites ,chnl)))
- (or (string-list-member-ignore-case ,pattern patterns)
- (push ,pattern patterns))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'invite patterns)))
-
-(defmacro liece-channel-remove-invite (pattern &optional chnl)
- "Remove invite PATTERN as char to CHNL."
- `(let ((patterns (remove-if (lambda (elm) (string-equal ,pattern elm))
- (liece-channel-get-invites ,chnl))))
- (put (intern (or ,chnl liece-current-channel) liece-obarray)
- 'invite patterns)))
-
-(defmacro liece-channel-set-invite (chnl pattern val)
- "Set invite PATTERN as char to CHNL."
- `(if val
- (liece-channel-add-invite ,pattern ,chnl)
- (liece-channel-remove-invite ,pattern ,chnl)))
-
-(defun liece-channel-virtual (chnl)
- "Convert channel name into internal representation.
-\(For example if CHNL is a string \"#...:*\", it will be converted into
-\"%...\"\)"
- (let ((mapping liece-channel-conversion-map) match)
- (while mapping
- (if (string-equal-ignore-case (caar mapping) chnl)
- (setq match (cdar mapping)))
- (pop mapping))
- (if match
- match
- (save-match-data
- (cond
- ((and (string-match "^[#+]\\(.*\\):\\(.*\\)$" chnl)
- (string= (match-string 2 chnl)
- liece-channel-conversion-default-mask))
- (if (eq ?+ (aref chnl 0))
- (concat "-" (match-string 1 chnl))
- (concat "%" (match-string 1 chnl))))
- ((string= "" chnl) chnl)
-; ((eq ?! (aref chnl 0))
-; (concat "!" (substring chnl (1+ liece-channel-id-length))))
- (t chnl))))))
-
-(defun liece-channel-real (chnl)
- "Convert channel name into external representation.
-\(For example if CHNL is a string \"%...\", it will be converted into
-\"#...:*\"\)"
- (let ((mapping liece-channel-conversion-map) match)
- (while mapping
- (if (string-equal-ignore-case (cdar mapping) chnl)
- (setq match (caar mapping)))
- (pop mapping))
- (cond
- (match match)
- ((eq ?% (aref chnl 0))
- (concat "#" (substring chnl 1) ":"
- liece-channel-conversion-default-mask))
- ((eq ?- (aref chnl 0))
- (concat "+" (substring chnl 1) ":"
- liece-channel-conversion-default-mask))
- (t chnl))))
-
-;;;###liece-autoload
-(defun liece-command-toggle-channel-buffer-mode ()
- "Toggle visibility of channel buffer."
- (interactive)
- (if (get-buffer liece-channel-buffer)
- (setq liece-channel-buffer-mode (not liece-channel-buffer-mode)))
- (liece-configure-windows))
-
-(defmacro liece-channel-buffer-create (chnl)
- "Create channel buffer of CHNL."
- `(with-current-buffer
- (liece-get-buffer-create (format liece-channel-buffer-format ,chnl))
- (let (buffer-read-only)
- (liece-insert-info (current-buffer)
- (concat (funcall liece-format-time-function
- (current-time))
- " Created.\n")))
- (unless (eq major-mode 'liece-channel-mode)
- (liece-channel-mode))
- (set-alist 'liece-channel-buffer-alist ,chnl (current-buffer))
- (current-buffer)))
-
-(defun liece-channel-join-internal (item chnls &optional hints)
- (let (binding inserted)
- (if (liece-channel-member item hints)
- (do ((hint hints (cdr hint)) (chnl chnls (cdr chnl)))
- ((not (or hint chnl)))
- (if (and (car hint) (liece-channel-equal (car hint) item))
- (push item binding)
- (push (car chnl) binding)))
- (do ((hint hints (cdr hint)) (chnl chnls (cdr chnl)))
- ((not (or hint chnl)))
- (if (and (not inserted)
- (not (or (car hint) (car chnl))))
- (progn
- (push item binding)
- (setq inserted t))
- (push (car chnl) binding))))
- (or (liece-channel-member item binding)
- (push item binding))
- (nreverse binding)))
-
-(defun liece-channel-join (chnl &optional nosw)
- "Initialize channel variables of CHNL.
-If NOSW is non-nil do not switch to newly created channel."
- (let ((cbuf (cdr (string-assoc-ignore-case chnl liece-channel-buffer-alist)))
- (nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist))))
- (or cbuf
- (setq cbuf (liece-channel-buffer-create chnl)))
- (or nbuf
- (setq nbuf (liece-nick-buffer-create chnl)))
- (if (liece-channel-p (liece-channel-real chnl))
- (setq liece-current-channels
- (liece-channel-join-internal
- chnl liece-current-channels liece-default-channel-binding))
- (setq liece-current-chat-partners
- (liece-channel-join-internal chnl liece-current-chat-partners
- liece-default-partner-binding)))
- (unless nosw
- (liece-switch-to-channel chnl)
- (setq liece-channel-buffer cbuf
- liece-nick-buffer nbuf))
- (liece-channel-change)))
-
-(defun liece-channel-part-internal (item chnls &optional hints)
- (if hints
- (mapcar
- (lambda (chnl)
- (if (and chnl (liece-channel-equal item chnl)) nil chnl))
- chnls)
- (liece-channel-remove item chnls)))
-
-(defun liece-channel-part (chnl &optional nosw)
- "Finalize channel variables of CHNL.
-If NOSW is non-nil do not switch to newly created channel."
- (cond
- ((eq liece-command-buffer-mode 'chat)
- (setq liece-current-chat-partners
- (liece-channel-part-internal chnl liece-current-chat-partners
- liece-default-partner-binding))
- (unless nosw
- (liece-channel-switch-to-last liece-current-chat-partners)))
- (t
- (setq liece-current-channels
- (liece-channel-part-internal chnl liece-current-channels
- liece-default-channel-binding))
- (unless nosw
- (liece-channel-switch-to-last liece-current-channels)))))
-
-(defun liece-channel-last (chnls)
- (car (last (delq nil (copy-sequence chnls)))))
-
-(defmacro liece-channel-switch-to-last (chnls)
- `(let ((chnl (liece-channel-last ,chnls)))
- (if chnl
- (liece-switch-to-channel chnl))
- (liece-channel-change)))
-
-(defun liece-channel-change ()
- (let ((chnls (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels))
- (string "")
- chnl)
- (with-current-buffer liece-channel-list-buffer
- (let ((n 1) buffer-read-only)
- (erase-buffer)
- (dolist (chnl chnls)
- (when chnl
- (setq chnl (liece-channel-virtual chnl)
- string (format "%s,%d:%s" string n chnl))
- (liece-channel-list-add-button n chnl))
- (incf n))))
- (if (string-equal string "")
- (if (eq liece-command-buffer-mode 'chat)
- (setq liece-channels-indicator "No partner")
- (setq liece-channels-indicator "No channel"))
- (setq liece-channels-indicator (substring string 1)))
- (liece-set-channel-indicator)
- (setq chnl (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- liece-current-channel))
- (when chnl
- (save-excursion
- (run-hook-with-args 'liece-redisplay-buffer-functions chnl)))
- (liece-redisplay-unread-mark)
- (liece-configure-windows)))
-
-(defsubst liece-channel-set-operator-1 (chnl user val)
- (let* ((chnl (intern chnl liece-obarray)) (opers (get chnl 'oper)))
- (if val
- (or (string-list-member-ignore-case user opers)
- (put chnl 'oper (cons user opers)))
- (if (string-list-member-ignore-case user opers)
- (put chnl 'oper (string-list-remove-ignore-case user opers))))))
-
-(defsubst liece-channel-set-voice-1 (chnl user val)
- (let* ((chnl (intern chnl liece-obarray)) (voices (get chnl 'voice)))
- (if val
- (or (string-list-member-ignore-case user voices)
- (put chnl 'voice (cons user voices)))
- (if (string-list-member-ignore-case user voices)
- (put chnl 'voice (string-list-remove-ignore-case user voices))))))
-
-(defun liece-channel-set-operator (chnl user val)
- (let ((nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist)))
- (xuser user))
- (liece-channel-set-operator-1 chnl user val)
- (liece-channel-set-voice-1 chnl user val)
- (setq user (concat (if val "@" " ") user)
- xuser (concat (if val "[ +]" "@") (regexp-quote xuser)))
- (with-current-buffer nbuf
- (let (buffer-read-only)
- (goto-char (point-min))
- (liece-nick-replace xuser user nil t)))))
-
-(defun liece-channel-set-voice (chnl user val)
- (let ((nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist)))
- (xuser user))
- (liece-channel-set-voice-1 chnl user val)
- (setq user (concat (if val "+" " ") user)
- xuser (concat (if val " " "\\+") (regexp-quote xuser)))
- (with-current-buffer nbuf
- (let (buffer-read-only)
- (goto-char (point-min))
- (liece-nick-replace xuser user nil t)))))
-
-(defun liece-channel-prepare-partner (join-channel-var)
- (setq liece-current-chat-partner
- (or liece-current-chat-partner join-channel-var))
- (let ((liece-command-buffer-mode 'chat))
- (liece-channel-join join-channel-var t))
- (liece-channel-change))
-
-(defun liece-channel-buffer-invisible-p (chnl mode)
- (let ((cbuf (liece-pick-buffer chnl)))
- (or (liece-frozen (car cbuf))
- (and (eq mode 'chat)
- (not (and (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- (string-equal-ignore-case
- chnl liece-current-chat-partner))))
- (not (and (eq liece-command-buffer-mode 'channel)
- liece-current-channel
- (string-equal-ignore-case
- chnl liece-current-channel))))))
-
-(defun liece-channel-prepare-representation (chnl &optional method name)
- (cond
- ((eq method 'dcc)
- (format liece-dcc-channel-representation-format chnl))
- (name
- (format liece-default-channel-representation-format name chnl))
- (t chnl)))
-
-(defun liece-channel-parse-representation (str)
- (cond
- ((string-match
- (format
- (regexp-quote liece-dcc-channel-representation-format)
- "\\([^ ]+\\)")
- str)
- (vector 'dcc nil (match-string 1 str)))
- ((string-match
- (format
- (regexp-quote liece-default-channel-representation-format)
- "\\([^ ]+\\)" "\\([^ ]+\\)")
- str)
- (vector 'irc (match-string 1 str) (match-string 2 str)))
- (t (vector 'irc nil str))))
-
-(defun liece-channel-list-add-button (n chnl)
- (insert (format "%2d: " n))
- (if liece-highlight-mode
- (let ((st (point)))
- (insert chnl)
- (liece-widget-convert-button
- 'liece-channel-push-button st (point) chnl))
- (insert chnl))
- (insert "\n"))
-
-(defun liece-channel-add-buttons (start end)
- (save-excursion
- (goto-char start)
- (while (re-search-forward
- (eval-when-compile
- (concat "\\(^\\(" liece-time-prefix-regexp "\\)?"
- "[][=<>(-][][=<>(-]?\\|\\s-+[+@]?\\)"
- "\\([&#!%][^ :]*\\)"))
- end t)
- ;;(re-search-forward "\\s-+\\(\\)\\([-+]\\S-*\\)" end t)
- (let* ((chnl-start (match-beginning 3))
- (chnl-end (match-end 3))
- (chnl (buffer-substring chnl-start chnl-end)))
- (when liece-highlight-mode
- (liece-widget-convert-button
- 'liece-channel-push-button chnl-start chnl-end chnl))))))
-
-;;;###liece-autoload
-(defun liece-channel-redisplay-buffer (chnl)
- (let ((buffer
- (cdr (string-assoc-ignore-case
- chnl liece-channel-buffer-alist)))
- (window (liece-get-buffer-window liece-channel-buffer)))
- (when (liece-channel-unread-p chnl)
- (setq liece-channel-unread-list
- (delete chnl liece-channel-unread-list))
- (run-hook-with-args 'liece-channel-read-functions chnl))
- (and buffer window
- (with-current-buffer buffer
- (set-window-buffer window buffer)
- (unless (liece-frozen buffer)
- (set-window-point window (point-max)))
- (setq liece-channel-buffer buffer)))))
-
-;;;###liece-autoload
-(defun liece-channel-list-redisplay-buffer (chnl)
- (let ((window (liece-get-buffer-window liece-channel-list-buffer)))
- (when window
- (save-selected-window
- (select-window window)
- (goto-char (point-min))
- (search-forward chnl nil t)
- (set-window-point window (match-beginning 0))
- (when liece-highlight-mode
- (let ((overlay (make-overlay (point)(match-end 0))))
- (liece-map-overlays
- (lambda (ovl)
- (if (overlay-get ovl 'liece-channel)
- (delete-overlay ovl))))
- (overlay-put overlay 'face 'underline)
- (overlay-put overlay 'liece-channel t)))))))
-
-(provide 'liece-channel)
-
-;;; liece-channel.el ends here
+++ /dev/null
-;;; liece-clfns.el --- compiler macros for emulating cl functions
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 2000-03-19
-;; Keywords: cl, compile
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-
-;; This file is borrowed from `gnus-clfns.el' from T-gnus.
-;; Avoid cl runtime functions for FSF Emacsen.
-
-;;; Code:
-
-(defun liece-clfns-subr-fboundp (symbol)
- "Return t if SYMBOL's function definition is a basic function."
- (and (fboundp symbol)
- (or (subrp (symbol-function symbol))
- (string-equal (symbol-file symbol) "subr"))))
-
-(if (featurep 'xemacs)
- nil
- (require 'cl)
-
- (define-compiler-macro last (&whole form x &optional n)
- (if (liece-clfns-subr-fboundp 'last)
- form
- (if n
- `(let* ((x ,x) (n ,n) (m 0) (p x))
- (while (consp p)
- (incf m)
- (pop p))
- (if (<= n 0)
- p
- (if (< n m)
- (nthcdr (- m n) x)
- x)))
- `(let ((x ,x))
- (while (consp (cdr x))
- (pop x))
- x))))
-
- (define-compiler-macro remq (&whole form elt list)
- (if (liece-clfns-subr-fboundp 'remq)
- form
- `(let ((elt ,elt)
- (list ,list))
- (if (memq elt list)
- (delq elt (copy-sequence list))
- list))))
-
- (define-compiler-macro member-if (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'member-if)
- form
- `(let ((fn ,pred)
- (seq ,list))
- (while (and seq (not (funcall fn (car seq))))
- (pop seq))
- seq)))
-
- (define-compiler-macro member-if-not (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'member-if-not)
- form
- `(let ((fn ,pred)
- (seq ,list))
- (while (and seq (funcall fn (car seq)))
- (pop seq))
- seq)))
-
- (define-compiler-macro delete-if (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'delete-if)
- form
- `(let* ((fn ,pred) (seq ,list) (p seq))
- (while (and p (not (funcall fn (car p))))
- (pop p))
- (if p (delq (car p) seq)))))
-
- (define-compiler-macro remove-if (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'remove-if)
- form
- `(let* ((fn ,pred) (seq (copy-sequence ,list)) (p seq))
- (while (and p (not (funcall fn (car p))))
- (pop p))
- (if p (delq (car p) seq) seq))))
-
- (define-compiler-macro remove-if-not (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'remove-if-not)
- form
- `(let* ((fn ,pred) (seq (copy-sequence ,list)) (p seq))
- (while (and p (funcall fn (car p)))
- (pop p))
- (if p (delq (car p) seq) seq))))
-
- (define-compiler-macro assoc-if (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'assoc-if)
- form
- `(let ((fn ,pred) (seq ,list))
- (while (and seq (not (funcall fn (caar seq))))
- (pop seq))
- (car seq))))
-
- (define-compiler-macro rassoc-if (&whole form pred list)
- (if (liece-clfns-subr-fboundp 'rassoc-if)
- form
- `(let ((fn ,pred) (seq ,list))
- (while (and seq (not (funcall fn (cdar seq))))
- (pop seq))
- (car seq)))))
-
-(provide 'liece-clfns)
-
-;;; liece-clfns.el ends here
+++ /dev/null
-;;; liece-coding.el --- Converting string with apropriate coding system.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-06-02
-;; Keywords: IRC, liece, coding-system, MULE
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'poem)
-(require 'mcharset)
-
-(eval-when-compile (require 'liece-compat))
-
-(defgroup liece-coding nil
- "Code conversion group"
- :tag "Coding"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-mime-charset-for-write 'iso-2022-jp-2
- "Charset used in any transferred messages."
- :type 'mime-charset
- :group 'liece-coding)
-
-(defcustom liece-mime-charset-for-read 'x-ctext
- "Charset used in any transferred messages."
- :type 'mime-charset
- :group 'liece-coding)
-
-(static-when (featurep 'xemacs)
- (define-obsolete-variable-alias 'liece-default-mime-charset
- 'liece-mime-charset-for-write)
- (define-obsolete-variable-alias 'liece-default-mime-charset-for-read
- 'liece-mime-charset-for-read))
-
-(defcustom liece-detect-coding-system nil
- "Whether use coding system auto detection."
- :type 'boolean
- :group 'liece-coding)
-
-(defcustom liece-detect-coding-region-function
- (function liece-detect-coding-region)
- "User customizable `detect-coding-region'."
- :type 'function
- :group 'liece-coding)
-
-(defcustom liece-detect-coding-string-function
- (function liece-detect-coding-string)
- "User customizable detect-coding-string."
- :type 'function
- :group 'liece-coding)
-
-(defcustom liece-decode-coding-string-function
- (function decode-coding-string)
- "User customizable `decode-coding-string'."
- :type 'function
- :group 'liece-coding)
-
-(defun liece-coding-encode-charset-region (start end &optional lbt)
- (encode-mime-charset-region start end liece-mime-charset-for-write lbt))
-
-(defun liece-coding-decode-charset-region (start end)
- (let ((cs (if (and liece-detect-coding-system
- (fboundp liece-detect-coding-region-function))
- (funcall liece-detect-coding-region-function start end)
- (mime-charset-to-coding-system liece-mime-charset-for-read))))
- (decode-coding-region start end cs)))
-
-(defun liece-detect-coding-region (start end)
- (let ((cs (detect-coding-region start end)))
- (if (listp cs)
- (setq cs (car cs)))
- (if (featurep 'xemacs)
- (eval '(setq cs (coding-system-name cs))))
- cs))
-
-(defun liece-coding-encode-charset-string (str &optional lbt)
- (encode-mime-charset-string str liece-mime-charset-for-write lbt))
-
-(eval-and-compile
- (when (fboundp 'detect-coding-string)
- (defun liece-detect-coding-string (str)
- (let ((cs (detect-coding-string str)))
- (if (listp cs)
- (setq cs (car cs)))
- (static-if (fboundp 'coding-system-name)
- (coding-system-name cs)
- cs)))))
-
-(defun liece-coding-decode-charset-string (str)
- (let ((cs (or (and liece-detect-coding-system
- (fboundp liece-detect-coding-string-function)
- (funcall liece-detect-coding-string-function str))
- (mime-charset-to-coding-system liece-mime-charset-for-read))))
- (funcall liece-decode-coding-string-function str cs)))
-
-(provide 'liece-coding)
-
-;;; liece-coding.el ends here
+++ /dev/null
-;;; liece-commands.el --- Interactive commands in command buffer.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-12-24
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-misc))
-
-(require 'liece-channel)
-(require 'liece-nick)
-(require 'liece-coding)
-(require 'liece-intl)
-(require 'liece-minibuf)
-
-(autoload 'liece-dcc-chat-send "liece-dcc")
-(autoload 'liece-window-configuration-pop "liece-window")
-
-(autoload 'liece-command-ctcp-version "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-userinfo "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-clientinfo "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-ping "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-time "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-x-face "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-comment "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-help "liece-ctcp" nil t)
-
-(defun liece-command-poll-names ()
- "Handler for polling NAMES."
- (when (liece-server-opened)
- (setq liece-polling
- (+ liece-polling
- (length liece-channel-alist)))
- (dolist (chnl liece-channel-alist)
- (liece-send "NAMES %s" (car chnl)))))
-
-(defun liece-command-poll-friends ()
- "Handler for polling ISON."
- (and liece-friends
- (liece-server-opened)
- (liece-send "ISON %s" (mapconcat 'identity liece-friends " "))))
-
-(defun liece-command-find-timestamp ()
- "Find recent timestamp in dialogue buffer."
- (interactive)
- (save-excursion
- (let ((range "")
- (regexp (concat "^\\(" liece-time-prefix-regexp "\\)?"
- (regexp-quote liece-timestamp-prefix))))
- (unless (eq 'liece-dialogue-mode (derived-mode-class major-mode))
- (set-buffer liece-dialogue-buffer)
- (goto-char (point-max)))
- (if (re-search-backward regexp (point-min) t)
- (setq range (concat (buffer-substring (match-end 0)
- (line-end-position))
- " --- ")))
- (if (re-search-forward regexp (point-max) t)
- (setq range (concat range (buffer-substring (match-end 0)
- (line-end-position)))))
- (liece-message range))))
-
-(defun liece-command-keepalive ()
- "Handler for polling server connection."
- (if (not (liece-server-opened))
- (liece)
- (liece-ping-if-idle)))
-
-(defvar liece-last-timestamp-time nil "Last time timestamp was inserted.")
-(defvar liece-last-timestamp-no-cons-p nil "Last timestamp was no-cons.")
-
-(defun liece-command-timestamp-if-interval-expired (&optional no-cons)
- "If interval timer has expired, insert timestamp into dialogue buffer.
-And save variables into `liece-variable-file' if there are variables to save.
-Optional argument NO-CONS specifies timestamp format is cons cell."
- (interactive)
- (when (and (not (and no-cons
- liece-last-timestamp-no-cons-p))
- (numberp liece-timestamp-interval)
- (> liece-timestamp-interval 0)
- (or (null liece-last-timestamp-time)
- (> (liece-time-difference liece-last-timestamp-time
- (current-time))
- liece-timestamp-interval)))
- (if liece-save-variables-are-dirty
- (liece-command-save-vars))
- (liece-command-timestamp)
- (setq liece-last-timestamp-no-cons-p no-cons)))
-
-(defun liece-command-timestamp ()
- "Insert timestamp into dialogue buffer."
- (interactive)
- (let ((stamp (format liece-timestamp-format
- (funcall liece-format-time-function (current-time))))
- (liece-timestamp-interval 0))
- (liece-insert liece-D-buffer (concat stamp "\n"))
- (setq liece-last-timestamp-time (current-time))))
-
-(defun liece-command-point-back-to-command-buffer ()
- "Set point back to command buffer."
- (interactive)
- (let ((win (liece-get-buffer-window liece-command-buffer)))
- (if win (select-window win))))
-
-(defun liece-command-send-message (message)
- "Send MESSAGE to current chat partner of current channel."
- (if (string-equal message "")
- (progn (liece-message (_ "No text to send")) nil)
- (let ((addr (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- liece-current-channel))
- repr method name target)
- (cond
- ((eq liece-command-buffer-mode 'chat)
- (or liece-current-chat-partner
- (error
- (substitute-command-keys
- "Type \\[liece-command-join] to start private conversation")))
- (setq repr (liece-channel-parse-representation
- liece-current-chat-partner)
- method (aref repr 0)
- name (aref repr 1)
- target (aref repr 2))
- (cond ((eq method 'dcc)
- (liece-dcc-chat-send target message))
- ((eq method 'irc)
- (liece-send "PRIVMSG %s :%s"
- liece-current-chat-partner message)))
- (liece-own-private-message message))
- (t
- (or liece-current-channel
- (error
- (substitute-command-keys
- "Type \\[liece-command-join] to join a channel")))
- (liece-send
- "PRIVMSG %s :%s"
- (liece-channel-real liece-current-channel) message)
- (liece-own-channel-message message))))))
-
-(defun liece-command-enter-message ()
- "Enter the current line as an entry in the IRC dialogue."
- (interactive)
- (beginning-of-line)
- (liece-command-send-message
- (buffer-substring (point)(progn (end-of-line) (point))))
- (liece-next-line 1))
-
-(defun liece-dialogue-enter-message ()
- "Ask for a line as an entry in the IRC dialogue on the current channel."
- (interactive)
- (let (message)
- (while (not (string-equal (setq message (read-string "> ")) ""))
- (liece-command-send-message message))))
-
-(defun liece-command-inline ()
- "Send current line as a message to the IRC server."
- (interactive)
- (beginning-of-line)
- (liece-send (buffer-substring (point)(progn (end-of-line) (point))))
- (liece-next-line 1))
-
-(defun liece-command-join-channel (join-channel-var key)
- "Join a JOIN-CHANNEL-VAR with KEY."
- (let ((nicks liece-nick-alist) nick)
- (while (and nicks
- (not (and
- (car nick)
- (liece-channel-equal join-channel-var (car nick)))))
- (setq nick (pop nicks)))
- (when nicks
- (setq join-channel-var
- (or (car (get (intern (car nick) liece-obarray) 'chnl))
- join-channel-var)))
- (if (liece-channel-member join-channel-var liece-current-channels)
- (progn
- (setq liece-current-channel join-channel-var)
- (liece-switch-to-channel liece-current-channel)
- (liece-channel-change))
- (liece-send "JOIN %s %s" (liece-channel-real join-channel-var) key))))
-
-(defun liece-command-join-partner (join-channel-var)
- "Join a JOIN-CHANNEL-VAR."
- (if (liece-channel-member join-channel-var liece-current-chat-partners)
- (progn
- (setq liece-current-chat-partner join-channel-var)
- (liece-switch-to-channel liece-current-chat-partner))
- (setq liece-current-chat-partner join-channel-var)
- (liece-channel-join liece-current-chat-partner))
- (liece-channel-change))
-
-(defun liece-command-join (join-channel-var &optional key)
- "Join a JOIN-CHANNEL-VAR with KEY.
-If user nickname is given join the same set of channels as the specified user.
-If command-buffer is in chat-mode, start private conversation
-with specified user."
- (interactive
- (let (join-channel-var key (completion-ignore-case t))
- (setq join-channel-var
- (if (numberp current-prefix-arg)
- current-prefix-arg
- (liece-channel-virtual
- (if (eq liece-command-buffer-mode 'chat)
- (liece-minibuffer-completing-read
- (_ "Start private conversation with: ")
- liece-nick-alist nil nil nil nil liece-privmsg-partner)
- (liece-minibuffer-completing-read
- (_ "Join channel: ")
- (append liece-channel-alist liece-nick-alist)
- nil nil nil nil liece-default-channel-candidate)))))
- (if (and current-prefix-arg
- (not (numberp current-prefix-arg)))
- (setq key
- (if (eq current-prefix-arg '-)
- (read-string
- (format (_ "Key for channel %s: ") join-channel-var))
- (let ((passwd-echo ?*))
- (read-passwd
- (format (_ "Key for channel %s: ") join-channel-var))))))
- (list join-channel-var key)))
- (let ((real-chnl (liece-channel-real join-channel-var)))
- (if (numberp join-channel-var)
- (liece-switch-to-channel-no join-channel-var)
- (setq liece-default-channel-candidate nil)
- (if (liece-channel-p real-chnl)
- (liece-toggle-command-buffer-mode 'channel)
- (liece-toggle-command-buffer-mode 'chat))
- (if (eq liece-command-buffer-mode 'chat)
- (liece-command-join-partner join-channel-var)
- (if (null key)
- (setq key (get (intern join-channel-var liece-obarray) 'key)))
- (put (intern join-channel-var liece-obarray) 'key key)
- (if (null key)
- (setq key ""))
- (liece-command-join-channel join-channel-var key))
- (force-mode-line-update))))
-
-(defun liece-command-part (part-channel-var &optional part-msg)
- "Part a PART-CHANNEL-VAR with PART-MSG."
- (interactive
- (let (part-channel-var
- (completion-ignore-case t)
- (part-msg "bye..."))
- (setq part-channel-var
- (liece-channel-virtual
- (if (eq liece-command-buffer-mode 'chat)
- (liece-minibuffer-completing-read
- (_ "End private conversation with: ")
- (list-to-alist liece-current-chat-partners)
- nil nil nil nil liece-current-chat-partner)
- (liece-minibuffer-completing-read
- (_ "Part channel: ")
- (list-to-alist liece-current-channels)
- nil nil nil nil liece-current-channel))))
- (when current-prefix-arg
- (setq part-msg (read-string (_ "Part Message: "))))
- (list part-channel-var part-msg)))
- (let ((real-chnl (liece-channel-real part-channel-var)))
- (if (liece-channel-p real-chnl)
- (progn
- (if (liece-channel-member part-channel-var liece-current-channels)
- (setq liece-current-channel part-channel-var))
- (liece-send "PART %s :%s" real-chnl part-msg)
- (setq liece-default-channel-candidate part-channel-var))
- (setq liece-current-chat-partners
- (liece-channel-remove part-channel-var
- liece-current-chat-partners)
- liece-current-chat-partner
- (car liece-current-chat-partners))
- (liece-set-channel-indicator)
- (liece-channel-part part-channel-var))))
-
-(defun liece-command-kill (kill-nickname-var &optional timeout silent)
- "Ignore messages from KILL-NICKNAME-VAR.
-Username can be given as case insensitive regular expression of form
-\".*@.*\.sub.domain\".
-If already ignoring him/her, toggle.
-If `liece-variables-file' is defined and the file is writable,
-settings are updated automatically for future sessions.
-Optional argument TIMEOUT says expiration.
-If SILENT is non-nil, don't notify current status."
- (interactive
- (let (kill-nickname-var timeout (completion-ignore-case t))
- (setq kill-nickname-var (completing-read
- (_ "Ignore nickname or regexp: ")
- (append liece-nick-alist
- liece-kill-nickname)))
- (or (string-equal "" kill-nickname-var)
- (string-assoc-ignore-case kill-nickname-var liece-kill-nickname)
- (setq timeout (string-to-int (read-from-minibuffer
- (_ "Timeout [RET for none]: ")))))
- (list kill-nickname-var timeout)))
- ;; empty, just list them
- (if (string-equal "" kill-nickname-var)
- (with-current-buffer liece-dialogue-buffer
- (let ((ignores liece-kill-nickname) (time (current-time))
- buffer-read-only expire expiretime)
- (goto-char (point-max))
- (liece-insert-info liece-D-buffer (_ "Currently ignoring:"))
- (dolist (ignore ignores)
- (setq expiretime (if (cdr ignore)
- (/ (liece-time-difference time (cdr ignore))
- 60))
- expire (cond ((not expiretime) "")
- ((>= expiretime 0)
- (format (_ " (%d min)") expiretime))
- ((< expiretime 0)
- (_ " expired"))))
- (liece-insert liece-D-buffer
- (concat " " (car ignore) expire "\n")))))
- ;; else not empty, check if exists
- (let ((ignore
- (string-assoc-ignore-case
- kill-nickname-var liece-kill-nickname)))
- (if ignore
- (when (setq ignore (string-assoc-ignore-case
- (car ignore) liece-kill-nickname))
- (setq liece-kill-nickname
- (delq ignore liece-kill-nickname))
- (liece-insert-info liece-D-buffer
- (format (_ "No longer ignoring: %s.\n")
- (car ignore))))
- ;; did not find, add to ignored ones
- (let ((expire-time (if (> timeout 0)
- (liece-time-add (current-time)
- (* timeout 60)))))
- (and silent (> timeout 0)
- (setcar (cdr (cdr expire-time)) -1))
- (setq liece-kill-nickname
- (cons (cons kill-nickname-var expire-time)
- liece-kill-nickname))
- (unless silent
- (liece-insert-info liece-D-buffer
- (format (_ "Ignoring %s") kill-nickname-var))
- (liece-insert-info liece-D-buffer
- (if (> timeout 0)
- (format " for %d minutes.\n" timeout)
- (format ".\n")))))))
- (setq liece-save-variables-are-dirty t)))
-
-(defun liece-command-kick (nick &optional msg)
- "Kick this NICK out with MSG."
- (interactive
- (let ((completion-ignore-case t)
- (nicks (liece-channel-get-nicks)) nick msg)
- (setq nick (completing-read
- (_ "Kick out nickname: ")
- (list-to-alist nicks)))
- (if current-prefix-arg
- (setq msg (concat " :" (read-string (_ "Kick Message: ")))))
- (list nick msg)))
- (liece-send "KICK %s %s%s"
- (liece-channel-real liece-current-channel)
- nick (or msg "")))
-
-(defun liece-command-ban (ban)
- "BAN this user out."
- (interactive
- (let* ((completion-ignore-case t)
- (nicks (liece-channel-get-nicks))
- (uahs (mapcar
- (function
- (lambda (nick)
- (list
- (concat nick "!" (liece-nick-get-user-at-host nick)))))
- nicks))
- ban nick msg)
- (setq ban (liece-minibuffer-completing-read
- (_ "Ban pattern: ") uahs nil nil nil nil
- (concat nick "!" (liece-nick-get-user-at-host nick))))
- (list ban)))
- (liece-send "MODE %s :+b %s"
- (liece-channel-real liece-current-channel) ban))
-
-(defun liece-command-ban-kick (ban nick &optional msg)
- "BAN kick this NICK out with MSG."
- (interactive
- (let* ((completion-ignore-case t)
- (nicks (liece-channel-get-nicks))
- (uahs (mapcar
- (function
- (lambda (nick)
- (list
- (concat nick "!" (liece-nick-get-user-at-host nick)))))
- nicks))
- ban nick msg)
- (setq nick (completing-read (_ "Kick out nickname: ")
- (list-to-alist nicks))
- ban (liece-minibuffer-completing-read
- (_ "Ban pattern: ") uahs nil nil nil nil
- (concat nick "!" (liece-nick-get-user-at-host nick))))
- (if current-prefix-arg
- (setq msg (concat " :" (read-string (_ "Kick Message: "))))
- (setq msg ""))
- (list ban nick msg)))
- (liece-send "MODE %s :+b %s"
- (liece-channel-real liece-current-channel) ban)
- (liece-send "KICK %s %s%s"
- (liece-channel-real liece-current-channel)
- nick (or msg "")))
-
-(defun liece-command-list (&optional channel)
- "List the given CHANNEL and its topics.
-If you enter only Control-U as argument, list the current channel.
-With - as argument, list all channels."
- (interactive
- (if (or current-prefix-arg (null liece-current-channel))
- (if (eq current-prefix-arg '-)
- (list current-prefix-arg))
- (let ((completion-ignore-case t) channel)
- (setq channel (liece-minibuffer-completing-read
- (_ "LIST channel: ")
- liece-channel-alist nil nil nil nil liece-current-channel))
- (unless (string-equal "" channel)
- (list channel)))))
-
- (cond ((not channel)
- (if liece-current-channel
- (liece-send "LIST %s"
- (liece-channel-real liece-current-channel))))
- ((and (eq channel '-)
- (y-or-n-p (_ "Do you really query LIST without argument?")))
- (liece-send "LIST"))
- ((not (string-equal channel ""))
- (liece-send "LIST %s" (liece-channel-real channel))
- )))
-
-(defun liece-command-lusers ()
- "List the number of users and servers."
- (interactive)
- (liece-send "LUSERS"))
-
-(defun liece-command-modec (chnl change)
- "Send a MODE command to this CHNL.
-Argument CHANGE ."
- (interactive
- (let ((completion-ignore-case t)
- (chnl liece-current-channel)
- liece-minibuffer-complete-function prompt)
- (if current-prefix-arg
- (setq chnl
- (liece-minibuffer-completing-read
- (_ "Channel/User: ")
- (append liece-channel-alist liece-nick-alist)
- nil nil nil nil liece-current-channel)))
- (cond
- ((liece-channel-p (liece-channel-real chnl))
- (setq prompt (format
- (_ "Mode for channel %s [%s]: ")
- chnl (or (liece-channel-get-modes chnl) ""))
- liece-minibuffer-complete-function
- (function liece-minibuffer-complete-channel-modes)))
- (t
- (setq prompt (format
- (_ "Mode for user %s [%s]: ")
- chnl (or (liece-nick-get-modes chnl) ""))
- liece-minibuffer-complete-function
- (function liece-minibuffer-complete-user-modes))))
- (list chnl (read-from-minibuffer prompt nil liece-minibuffer-map))))
- (liece-send "MODE %s %s" (liece-channel-real chnl) change))
-
-(defun liece-command-mode+o (opers)
- "Send a MODE +o OPERS command."
- (interactive
- (let ((opers (liece-channel-get-operators)) oper
- (nicks (liece-channel-get-nicks))
- (completion-ignore-case t))
- (setq nicks (filter-elements
- nick nicks
- (not (liece-nick-member nick opers)))
- opers (liece-minibuffer-completing-read-multiple
- (_ "Assign operational privilege to: ") (list-to-alist nicks)))
- (list opers)))
- (let (ops)
- (dolist (oper opers)
- (push oper ops)
- (when (= (length ops) liece-compress-mode-length)
- (liece-send "MODE %s +%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "o" liece-compress-mode-length)
- (string-join ops " "))
- (setq ops nil)))
- (if ops
- (liece-send "MODE %s +%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "o" (length ops))
- (string-join ops " ")))))
-
-(defun liece-command-mode-o (opers)
- "Send a MODE -o OPERS command."
- (interactive
- (let ((completion-ignore-case t)
- (opers (liece-channel-get-operators)) oper nicks)
- (setq nicks (liece-minibuffer-completing-read-multiple
- (_ "Divest operational privilege from: ") (list-to-alist opers)))
- (list nicks)))
- (let (ops)
- (dolist (oper opers)
- (push oper ops)
- (when (= (length ops) liece-compress-mode-length)
- (liece-send "MODE %s -%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "o" liece-compress-mode-length)
- (string-join ops " "))
- (setq ops nil)))
- (if ops
- (liece-send "MODE %s -%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "o" (length ops))
- (string-join ops " ")))))
-
-(defun liece-command-mode+v (voices)
- "Send a MODE +v VOICES command."
- (interactive
- (let ((voices (append (liece-channel-get-voices)
- (liece-channel-get-operators)))
- voice
- (nicks (liece-channel-get-nicks))
- (completion-ignore-case t)
- (count 0))
- (setq nicks (filter-elements nick nicks
- (not (string-assoc-ignore-case nick voices)))
- voices (liece-minibuffer-completing-read-multiple
- (_ "Allow to speak: ") (list-to-alist nicks)))
- (list voices)))
- (let (vcs)
- (dolist (voice voices)
- (push voice vcs)
- (when (= (length vcs) liece-compress-mode-length)
- (liece-send "MODE %s +%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "v" liece-compress-mode-length)
- (string-join vcs " "))
- (setq vcs nil)))
- (if vcs
- (liece-send "MODE %s +%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "v" (length vcs))
- (string-join vcs " ")))))
-
-(defun liece-command-mode-v (voices)
- "Send a MODE -v VOICES command."
- (interactive
- (let ((completion-ignore-case t)
- (voices (liece-channel-get-voices)) voice nicks)
- (setq nicks (liece-minibuffer-completing-read-multiple
- (_ "Forbid to speak: ") (list-to-alist voices)))
- (list nicks)))
- (let (vcs)
- (dolist (voice voices)
- (push voice vcs)
- (when (= (length vcs) liece-compress-mode-length)
- (liece-send "MODE %s -%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "v" liece-compress-mode-length)
- (string-join vcs " "))
- (setq vcs nil)))
- (if vcs
- (liece-send "MODE %s -%s %s"
- (liece-channel-real liece-current-channel)
- (string-times "v" (length vcs))
- (string-join vcs " ")))))
-
-(defun liece-command-message (address message)
- "Send ADDRESS a private MESSAGE."
- (interactive
- (let ((completion-ignore-case t) address)
- (setq address
- (liece-channel-virtual
- (liece-minibuffer-completing-read
- (_ "Private message to: ")
- (append liece-nick-alist liece-channel-alist)
- nil nil nil nil liece-privmsg-partner)))
- (list address
- (read-string
- (format
- (_ "Private message to %s: ")
- address)))))
- (if (funcall liece-message-empty-predicate message)
- (progn (liece-message (_ "No text to send")) nil)
- (let ((chnl (liece-channel-real address)))
- (liece-send "PRIVMSG %s :%s" chnl message)
- (if (liece-channel-p chnl)
- (liece-own-channel-message message
- (liece-channel-virtual address))
- (liece-own-private-message message address)))))
-
-(defun liece-command-mta-private (partner)
- "Send a private message (current line) to PARTNER."
- (interactive
- (let ((completion-ignore-case t))
- (setq liece-privmsg-partner
- (liece-channel-virtual
- (liece-minibuffer-completing-read
- (_ "To whom: ")
- (append liece-nick-alist liece-channel-alist)
- nil nil nil nil liece-privmsg-partner)))
- (list liece-privmsg-partner)))
- (let ((message (buffer-substring (progn (beginning-of-line) (point))
- (progn (end-of-line) (point)))))
- (if (> (length message) 0)
- (progn
- (liece-command-message liece-privmsg-partner message)
- (liece-next-line 1))
- (liece-message (_ "No text to send")))))
-
-(defun liece-command-names (&optional expr)
- "List the nicknames of the current IRC users on given EXPR.
-With an Control-U as argument, only the current channel is listed.
-With - as argument, list all channels."
- (interactive
- (if (or current-prefix-arg (null liece-current-channel))
- (if (eq current-prefix-arg '-)
- (list current-prefix-arg))
- (let ((completion-ignore-case t) expr)
- (setq expr (liece-minibuffer-completing-read
- (_ "Names on channel: ")
- liece-channel-alist nil nil nil nil liece-current-channel))
- (unless (string-equal "" expr)
- (list expr)))))
- (when (or (and (eq expr '-)
- (y-or-n-p
- (_ "Do you really query NAMES without argument?")))
- (not (or expr
- (if liece-current-channel
- (setq expr (liece-channel-real
- liece-current-channel))))))
- (setq expr ""))
- (when expr
- (liece-send "NAMES %s" expr)))
-
-(defun liece-command-nickname (nick)
- "Set your nickname to NICK."
- (interactive "sEnter your nickname: ")
- (let ((nickname (truncate-string nick liece-nick-max-length)))
- (if (zerop (length nickname))
- (liece-message (_ "illegal nickname \"%s\"; not changed") nickname)
- (liece-send "NICK %s" nick))))
-
-(defun liece-command-who (&optional expr)
- "Lists tue users that match the given expression EXPR.
-If you enter only Control-U as argument, list the current channel.
-With - as argument, list all users."
- (interactive
- (if (or current-prefix-arg (null liece-current-channel))
- (if (eq current-prefix-arg '-)
- (list current-prefix-arg))
- (let ((completion-ignore-case t) expr)
- (setq expr (completing-read
- (_ "WHO expression: ")
- (append liece-channel-alist liece-nick-alist)))
- (unless (string-equal "" expr)
- (list expr)))))
- (when (or (and (eq expr '-)
- (y-or-n-p
- (_ "Do you really query WHO without argument?")))
- (not (or expr
- (if liece-current-channel
- (setq expr (liece-channel-real
- liece-current-channel))))))
- (setq expr ""))
- (when expr
- (liece-send "WHO %s" expr)
- (setq liece-who-expression expr)))
-
-(defun liece-command-finger (finger-nick-var &optional server)
- "Get information about a specific user FINGER-NICK-VAR.
-If called with optional argument SERVER or any prefix argument,
-query information to the foreign server."
- (interactive
- (let (finger-nick-var (completion-ignore-case t))
- (setq finger-nick-var
- (completing-read (_ "Finger whom: ") liece-nick-alist))
- (list finger-nick-var (and current-prefix-arg finger-nick-var))))
- (if server
- (liece-send "WHOIS %s %s" server finger-nick-var)
- (liece-send "WHOIS %s" finger-nick-var)))
-
-(defun liece-command-topic (topic)
- "Change TOPIC of the current channel."
- (interactive
- (list (read-from-minibuffer
- "Topic: " (cons (or (liece-channel-get-topic) "") 0))))
- (liece-send "TOPIC %s :%s"
- (liece-channel-real liece-current-channel) topic))
-
-(defun liece-command-invite (&optional invite-nick-var invite-channel-var)
- "Invite INVITE-NICK-VAR to INVITE-CHANNEL-VAR."
- (interactive
- (let ((completion-ignore-case t) invite-channel-var invite-nick-var)
- (if current-prefix-arg
- (setq invite-channel-var
- (liece-channel-virtual
- (completing-read
- (_ "Invite channel: ")
- (list-to-alist liece-current-channels)))))
- (setq invite-nick-var
- (completing-read
- (_ "Invite whom: ")
- liece-nick-alist))
- (list invite-nick-var invite-channel-var)))
- (or invite-channel-var
- (setq invite-channel-var liece-current-channel))
- (liece-send "INVITE %s %s"
- invite-nick-var (liece-channel-real invite-channel-var)))
-
-(defun liece-command-away (awaymsg)
- "Mark/unmark yourself as being away.
-Leave message AWAYMSG."
- (interactive "sAway message: ")
- (liece-send "AWAY :%s" awaymsg)
- (setq liece-away-message awaymsg))
-
-(defun liece-command-scroll-down (lines)
- "Scroll LINES down dialogue buffer from command buffer."
- (interactive "P")
- (let ((other-window-scroll-buffer
- (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer)))
- (when (liece-get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window-down lines)
- (beginning-of-buffer
- (message "Beginning of buffer"))))))
-
-(defun liece-command-scroll-up (lines)
- "Scroll LINES up dialogue buffer from command buffer."
- (interactive "P")
- (let* ((other-window-scroll-buffer
- (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer)))
- (when (liece-get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window lines)
- (end-of-buffer
- (message "End of buffer"))))))
-
-(defun liece-command-nick-scroll-down (lines)
- "Scroll LINES down nick buffer from command buffer."
- (interactive "P")
- (let ((other-window-scroll-buffer liece-nick-buffer))
- (when (liece-get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window-down lines)
- (beginning-of-buffer
- (message "Beginning of buffer"))))))
-
-(defun liece-command-nick-scroll-up (lines)
- "Scroll LINES up nick buffer from command buffer."
- (interactive "P")
- (let* ((other-window-scroll-buffer liece-nick-buffer))
- (when (liece-get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window lines)
- (end-of-buffer
- (message "End of buffer"))))))
-
-(defun liece-command-freeze (&optional arg)
- "Prevent automatic scrolling of the dialogue window.
-If prefix argument ARG is non-nil, toggle frozen status."
- (interactive "P")
- (liece-freeze (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer)
- (if arg (prefix-numeric-value arg))))
-
-(defun liece-command-own-freeze (&optional arg)
- "Prevent automatic scrolling of the dialogue window.
-The difference from `liece-command-freeze' is that your messages are hidden.
-If prefix argument ARG is non-nil, toggle frozen status."
- (interactive "P")
- (liece-own-freeze (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer)
- (if arg (prefix-numeric-value arg))))
-
-(defun liece-command-beep (&optional arg)
- "Toggle the automatic beep notice when the channel message is received."
- (interactive "P")
- (liece-set-beep (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer)
- (if arg (prefix-numeric-value arg))))
-
-(defun liece-command-quit (&optional arg)
- "Quit IRC.
-If prefix argument ARG is non-nil, leave signoff message."
- (interactive "P")
- (when (and (liece-server-opened)
- (y-or-n-p (_ "Quit IRC? ")))
- (message "")
- (let ((quit-string
- (if arg (read-string (_ "Signoff message: "))
- (or liece-signoff-message
- (product-name (product-find 'liece-version))))))
- (liece-close-server quit-string))
- (liece-clear-system)
- (if liece-save-variables-are-dirty
- (liece-command-save-vars))
- (if (interactive-p)
- (liece-window-configuration-pop))
- (run-hooks 'liece-exit-hook)))
-
-(defun liece-command-generic (message)
- "Enter a generic IRC MESSAGE, which is sent to the server.
-A ? lists the useful generic messages."
- (interactive "sIRC command (? to help): ")
- (if (string-equal message "?")
- (with-output-to-temp-buffer "*IRC Help*"
- (princ "The following generic IRC messages may be of interest to you:
-TOPIC <new topic> set the topic of your channel
-INVITE <nickname> invite another user to join your channel
-LINKS lists the currently reachable IRC servers
-SUMMON <user@host> invites an user not currently in IRC
-USERS <host> lists the users on a host
-AWAY <reason> marks you as not really actively using IRC
- (an empty reason clears it)
-WALL <message> send to everyone on IRC
-NAMES <channel> lists users per channel
-"))
- (liece-send "%s" message)))
-
-(defun liece-command-irc-compatible ()
- "If entered at column 0, allow you to enter a generic IRC message."
- (interactive)
- (if (zerop (current-column))
- (call-interactively (function liece-command-generic))
- (self-insert-command 1)))
-
-(defun liece-command-exec (command)
- "Execute COMMAND, stdout to dialogue."
- (interactive "sShell command: ")
- (shell-command command t)
- (let ((opoint (point)))
- (while (< (point) (mark))
- (liece-command-enter-message)
- (set-buffer liece-command-buffer))
- (push-mark opoint t)))
-
-(defun liece-command-yank-send (&optional arg)
- "Send message from yank buffer.
-Prefix argument ARG is regarded as distance from yank pointer."
- (interactive)
- (when (y-or-n-p (_ "Really SEND from Yank Buffer?"))
- (save-restriction
- (narrow-to-region (point) (point))
- (insert (car kill-ring-yank-pointer))
- (goto-char (point-min))
- (while (eobp)
- (liece-command-enter-message)
- (set-buffer liece-command-buffer)))))
-
-(defun liece-command-complete ()
- "Complete word before point from userlist."
- (interactive)
- (let ((completion-ignore-case t)
- (alist (if liece-current-channel
- (list-to-alist (liece-channel-get-nicks))
- liece-nick-alist))
- candidate completion all)
- (setq candidate (current-word)
- completion (try-completion candidate alist)
- all (all-completions candidate alist))
- (liece-minibuffer-finalize-completion completion candidate all)))
-
-(defun liece-command-load-vars ()
- "Load configuration from liece-variables-file."
- (interactive)
- (let ((nick liece-real-nickname))
- (unwind-protect
- (liece-read-variables-files)
- (setq liece-real-nickname nick)
- (liece-command-reconfigure-windows))))
-
-(defun liece-command-save-vars ()
- "Save current settings to `liece-variables-file'."
- (interactive)
- (let* ((output-buffer
- (find-file-noselect
- (expand-file-name liece-variables-file)))
- output-marker p)
- (save-excursion
- (set-buffer output-buffer)
- (goto-char (point-min))
- (cond ((re-search-forward "^;; Saved Settings *\n" nil 'move)
- (setq p (match-beginning 0))
- (goto-char p)
- (or (re-search-forward
- "^;; End of Saved Settings *\\(\n\\|\\'\\)" nil t)
- (error
- (concat "can't find END of saved state in "
- liece-variables-file)))
- (delete-region p (match-end 0)))
- (t
- (goto-char (point-max))
- (insert "\n")))
- (setq output-marker (point-marker))
- (let ((print-readably t)
- (print-escape-newlines t)
- (standard-output output-marker))
- (princ ";; Saved Settings\n")
- (dolist (var liece-saved-forms)
- (if (symbolp var)
- (prin1 (list 'setq var
- (let ((val (symbol-value var)))
- (if (memq val '(t nil))
- val
- (list 'quote val)))))
- (setq var (eval var))
- (cond ((eq (car-safe var) 'progn)
- (while (setq var (cdr var))
- (prin1 (car var))
- (princ "\n")
- (if (cdr var) (princ " "))))
- (var
- (prin1 "xx")(prin1 var))))
- (if var (princ "\n")))
- (princ "\n")
- (princ ";; End of Saved Settings\n")))
- (set-marker output-marker nil)
- (save-excursion
- (set-buffer output-buffer)
- (save-buffer)))
- (setq liece-save-variables-are-dirty nil))
-
-(defun liece-command-reconfigure-windows ()
- "Rearrange window splitting."
- (interactive)
- (let ((command-window (liece-get-buffer-window liece-command-buffer))
- (dialogue-window (liece-get-buffer-window liece-dialogue-buffer))
- (obuffer (current-buffer)))
- (if (and command-window dialogue-window)
- (let ((ch (window-height command-window))
- (dh (window-height dialogue-window)))
- (delete-window command-window)
- (pop-to-buffer liece-dialogue-buffer)
- (enlarge-window (+ ch dh (- dh))))
- (pop-to-buffer liece-dialogue-buffer))
- (liece-configure-windows)
- (if liece-one-buffer-mode
- (pop-to-buffer liece-dialogue-buffer)
- (pop-to-buffer obuffer))))
-
-(defun liece-command-end-of-buffer ()
- "Get end of the dialogue buffer."
- (interactive)
- (let (buffer window)
- (setq buffer (if liece-channel-buffer-mode
- liece-channel-buffer
- liece-dialogue-buffer))
- (or (setq window (liece-get-buffer-window buffer))
- (setq window (liece-get-buffer-window liece-dialogue-buffer)
- buffer liece-dialogue-buffer))
- (when window
- (save-selected-window
- (select-window window)
- (goto-char (point-max))))))
-
-(defun liece-command-private-conversation (arg)
- "Toggle between private conversation mode and channel mode.
-User can then join and part to a private conversation as he would
-join or part to a channel.
-
-If there are no private conversations or argument is given user is
-prompted the partner/channel (return as partner/channel means toggle
-mode, the current channel and current chat partner are not altered)
-Argument ARG is prefix argument of toggle status."
- (interactive
- (let ((completion-ignore-case t))
- (list
- (if current-prefix-arg
- ;; prefixed, ask where to continue
- (if (eq liece-command-buffer-mode 'chat)
- (liece-minibuffer-completing-read
- (_ "Return to channel: ")
- (append liece-channel-alist liece-nick-alist)
- nil nil nil nil liece-current-channel)
- (completing-read
- (_ "Start private conversation with: ")
- liece-nick-alist nil nil))
- ;; no prefix, see if going to chat
- (if (eq liece-command-buffer-mode 'channel)
- ;; and if we have chat partner, select that
- (if liece-current-chat-partner
- liece-current-chat-partner
- (completing-read
- (_ "Start private conversation with: ")
- liece-nick-alist )))))))
-
- (liece-toggle-command-buffer-mode)
- (if (and arg (not (string-equal arg "")))
- (liece-command-join arg))
- (liece-set-channel-indicator)
- ;; refresh mode line
- (force-mode-line-update))
-
-(defun liece-command-next-channel ()
- "Select next channel or chat partner, and *DONT* rotate list."
- (interactive)
- (let ((rest (copy-sequence
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels)))
- (chnl (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- liece-current-channel)))
- (liece-switch-to-channel
- (or (cadr (liece-channel-member chnl (delq nil rest)))
- (car (delq nil rest))
- chnl))))
-
-(defun liece-command-previous-channel ()
- "Select previous channel or chat partner, and *DONT* rotate list."
- (interactive)
- (let ((rest
- (reverse
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels)))
- (chnl
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- liece-current-channel)))
- (liece-switch-to-channel
- (or (cadr (liece-channel-member chnl (delq nil rest)))
- (car (delq nil rest))
- chnl))))
-
-(defun liece-command-unread-channel ()
- "Select unread channel or chat partner."
- (interactive)
- (let ((chnl (car liece-channel-unread-list)))
- (if chnl
- (liece-switch-to-channel chnl)
- (liece-message (_ "No unread channel or chat partner.")))))
-
-(defun liece-command-push ()
- "Select next channel or chat partner, and rotate list."
- (interactive)
- (let* ((rest
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels))
- (temp (car (last rest)))
- (len (length rest)))
- (unwind-protect
- (while (< 1 len)
- (setcar (nthcdr (1- len) rest) (nth (- len 2) rest))
- (decf len))
- (when rest
- (setcar rest temp)))
- (liece-channel-change)))
-
-(defun liece-command-pop ()
- "Select previous channel or chat partner, and rotate list."
- (interactive)
- (let* ((rest
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels))
- (temp (car rest))
- (len (length rest)))
- (unwind-protect
- (dotimes (i len)
- (setcar (nthcdr i rest) (nth (1+ i) rest)))
- (when rest
- (setcar (last rest) temp)))
- (liece-channel-change)))
-
-(defvar liece-redisplay-buffer-functions
- '(liece-channel-redisplay-buffer
- liece-nick-redisplay-buffer
- liece-channel-list-redisplay-buffer))
-
-(defun liece-switch-to-channel (chnl)
- "Switch the current channel to CHNL."
- (if (liece-channel-p (liece-channel-real chnl))
- (progn
- (liece-toggle-command-buffer-mode 'channel)
- (setq liece-current-channel chnl)
- (liece-set-channel-indicator))
- (liece-toggle-command-buffer-mode 'chat)
- (setq liece-current-chat-partner chnl)
- (liece-set-channel-indicator))
- (save-excursion
- (run-hook-with-args 'liece-redisplay-buffer-functions chnl)))
-
-(defun liece-switch-to-channel-no (num)
- "Switch the current channel to NUM."
- (let* ((mode liece-command-buffer-mode)
- (chnls (if (eq mode 'chat)
- liece-current-chat-partners
- liece-current-channels)))
- (if (and (integerp num)
- (stringp (nth num chnls)))
- (let ((chnl (nth num chnls)))
- (if (eq mode 'chat)
- (progn
- (liece-toggle-command-buffer-mode 'chat)
- (setq liece-current-chat-partner chnl)
- (liece-set-channel-indicator))
- (liece-toggle-command-buffer-mode 'channel)
- (setq liece-current-channel chnl)
- (liece-set-channel-indicator))
- (save-excursion
- (run-hook-with-args 'liece-redisplay-buffer-functions chnl)))
- (message "Invalid channel!"))))
-
-(defun liece-command-ping ()
- "Send PING to server."
- (interactive)
- (if (stringp liece-server-name)
- (liece-send "PING %s" liece-server-name)))
-
-(defun liece-command-ison (nicks)
- "IsON users NICKS."
- (interactive
- (let (nicks (completion-ignore-case t))
- (setq nicks (liece-minibuffer-completing-read-multiple
- "IsON" liece-nick-alist))
- (list nicks)))
- (liece-send "ISON :%s" (mapconcat #'identity nicks " ")))
-
-(defun liece-command-activate-friends (nicks)
- "Register NICKS to the frinends list."
- (interactive
- (let (nicks (completion-ignore-case t))
- (setq nicks
- (liece-minibuffer-completing-read-multiple
- (_ "Friend")
- (filter-elements nick liece-nick-alist
- (not (string-list-member-ignore-case
- (car nick) liece-friends)))))
- (list nicks)))
- (setq liece-friends (append nicks liece-friends)))
-
-(defun liece-command-deactivate-friends ()
- "Clear current friends list."
- (interactive)
- (setq liece-friends nil))
-
-(defun liece-command-display-friends ()
- "Display status of the friends."
- (interactive)
- (with-output-to-temp-buffer " *IRC Friends*"
- (set-buffer standard-output)
- (insert "Friends status: \n\n")
- (dolist (friend liece-friends)
- (if (string-list-member-ignore-case friend liece-friends-last)
- (insert "+ " friend "\n")
- (insert "- " friend "\n")))))
-
-(defun liece-command-userhost (nicks)
- "Ask for the hostnames of NICKS."
- (interactive
- (let (nicks (completion-ignore-case t))
- (setq nicks (liece-minibuffer-completing-read-multiple
- (_ "Userhost nick")
- (list-to-alist liece-nick-alist)))
- (list nicks)))
- (liece-send "USERHOST :%s" (mapconcat 'identity nicks ",")))
-
-(defun liece-command-show-last-kill ()
- "Dig last kill from KILL and show it."
- (interactive)
- (liece-insert-info
- (append liece-D-buffer liece-O-buffer)
- (save-excursion
- (set-buffer liece-KILLS-buffer)
- (goto-char (point-max))
- (forward-line -1)
- (concat (buffer-substring (point) (point-max)) "\n"))))
-
-(defun liece-command-toggle-private ()
- "Toggle private mode / channel mode."
- (interactive)
- (case (prog1 liece-command-buffer-mode
- (liece-toggle-command-buffer-mode))
- (chat
- (if liece-current-channel
- (liece-switch-to-channel liece-current-channel))
- (setq liece-command-buffer-mode-indicator "Channels"))
- (channel
- (if liece-current-chat-partner
- (liece-switch-to-channel liece-current-chat-partner))
- (setq liece-command-buffer-mode-indicator "Partners")))
- (liece-channel-change))
-
-(defun liece-command-tag-region (start end)
- "Move current region between START and END to `kill-ring'."
- (interactive
- (if (region-active-p)
- (list (region-beginning)(region-end))
- (list (line-beginning-position)(line-end-position))))
- (static-if (fboundp 'extent-property)
- (kill-ring-save start end)
- (let ((start (set-marker (make-marker) start))
- (end (set-marker (make-marker) end))
- (inhibit-read-only t)
- buffer-read-only
- buffer-undo-list)
- (liece-remove-properties-region start end)
- (kill-ring-save start end)
- (push nil buffer-undo-list)
- (undo))))
-
-(provide 'liece-commands)
-
-;;; liece-commands.el ends here
+++ /dev/null
-;;; liece-compat.el --- Provide compatibility for various emacsen.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-12-19
-;; Keywords: IRC, liece, APEL
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(require 'pcustom)
-
-(eval-when-compile (require 'wid-edit))
-
-(eval-and-compile (autoload 'widget-convert-button "wid-edit"))
-
-(defalias 'liece-widget-convert-button 'widget-convert-button)
-(defalias 'liece-widget-button-click 'widget-button-click)
-
-(defun-maybe region-active-p ()
- "Return non-nil if the region is active.
-If `zmacs-regions' is true, this is equivalent to `region-exists-p'.
-Otherwise, this function always returns false.
-\[XEmacs emulating function]"
- (static-if (and (boundp 'transient-mark-mode) (boundp 'mark-active))
- (and transient-mark-mode mark-active)))
-
-(defun liece-map-overlays (function)
- "Map FUNCTION over the extents which overlap the current buffer."
- (let* ((overlayss (overlay-lists))
- (buffer-read-only nil)
- (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
- (dolist (overlay overlays)
- (funcall function overlay))))
-
-(defun liece-kill-all-overlays ()
- "Delete all overlays in the current buffer."
- (liece-map-overlays #'delete-overlay))
-
-(defmacro liece-get-buffer-window (buffer)
- "Traverse all frames and return a window currently displaying BUFFER."
- `(get-buffer-window ,buffer t))
-
-(static-if (fboundp 'window-displayed-height)
- (defalias 'liece-window-height 'window-displayed-height)
- (defalias 'liece-window-height 'window-height))
-
-(defalias 'liece-mode-line-buffer-identification 'identity)
-
-(defun liece-suppress-mode-line-format ()
- "Remove unnecessary information from `mode-line-format'."
- (let ((value (rassq 'mode-line-modified mode-line-format)))
- (if value
- (setq mode-line-format (delq value (copy-sequence mode-line-format)))
- mode-line-format)))
-
-(defun liece-locate-data-directory (name &optional dir-list)
- "Locate a directory in a search path DIR-LIST (a list of directories)."
- (let ((dir-list
- (or dir-list
- (cons data-directory
- (mapcar (lambda (path) (concat path "etc/"))
- load-path))))
- dir)
- (while dir-list
- (if (and (car dir-list)
- (file-directory-p
- (setq dir (concat
- (file-name-directory
- (directory-file-name (car dir-list)))
- name "/"))))
- (setq dir-list nil)
- (setq dir-list (cdr dir-list))))
- dir))
-
-(defvar-maybe completion-display-completion-list-function
- 'display-completion-list)
-
-(defalias-maybe 'easy-menu-add-item 'ignore)
-
-;; from XEmacs's minibuf.el
-(defun-maybe temp-minibuffer-message (m)
- (let ((savemax (point-max)))
- (save-excursion
- (goto-char (point-max))
- (message nil)
- (insert m))
- (let ((inhibit-quit t))
- (sit-for 2)
- (delete-region savemax (point-max)))))
-
-;; from XEmacs's subr.el
-(defun-maybe replace-in-string (str regexp newtext &optional literal)
- "Replace all matches in STR for REGEXP with NEWTEXT string,
- and returns the new string.
-Optional LITERAL non-nil means do a literal replacement.
-Otherwise treat \\ in NEWTEXT string as special:
- \\& means substitute original matched text,
- \\N means substitute match for \(...\) number N,
- \\\\ means insert one \\."
- (let ((rtn-str "")
- (start 0)
- (special)
- match prev-start)
- (while (setq match (string-match regexp str start))
- (setq prev-start start
- start (match-end 0)
- rtn-str
- (concat
- rtn-str
- (substring str prev-start match)
- (cond (literal newtext)
- (t (mapconcat
- (lambda (c)
- (if special
- (progn
- (setq special nil)
- (cond ((eq c ?\\) "\\")
- ((eq c ?&)
- (substring str
- (match-beginning 0)
- (match-end 0)))
- ((and (>= c ?0) (<= c ?9))
- (if (> c (+ ?0 (length
- (match-data))))
- ;; Invalid match num
- (error "Invalid match num: %c" c)
- (setq c (- c ?0))
- (substring str
- (match-beginning c)
- (match-end c))))
- (t (char-to-string c))))
- (if (eq c ?\\) (progn (setq special t) nil)
- (char-to-string c))))
- newtext ""))))))
- (concat rtn-str (substring str start))))
-
-(provide 'liece-compat)
-
-;;; liece-compat.el ends here
+++ /dev/null
-;;; liece-config.el --- Installation settings.
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-04-12
-;; Revised: 1999-04-12
-;; Keywords: IRC, liece, APEL
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(setq load-path (cons (expand-file-name "../apel") load-path))
-
-(defvar default-load-path load-path)
-
-(and (expand-file-name "../../site-lisp/apel" data-directory)
- (setq load-path (cons
- (expand-file-name "../../site-lisp/apel" data-directory)
- load-path )))
-
-(when (and (boundp 'LISPDIR) LISPDIR)
- (or (member LISPDIR default-load-path)
- (setq default-load-path (cons LISPDIR default-load-path)) )
- (or (member LISPDIR load-path) (setq load-path (cons LISPDIR load-path)))
- (or (member (expand-file-name "apel" LISPDIR) load-path)
- (setq load-path (cons (expand-file-name "apel" LISPDIR) load-path))))
-
-(setq load-path (cons (expand-file-name ".") load-path))
-
-(defvar VERSION_SPECIFIC_LISPDIR nil)
-(if (and VERSION_SPECIFIC_LISPDIR
- (null (member VERSION_SPECIFIC_LISPDIR load-path)) )
- (setq load-path (cons VERSION_SPECIFIC_LISPDIR load-path)) )
-
-(require 'install)
-
-
-;;; @ Please specify prefix of install directory.
-;;;
-
-;; Please specify install path prefix.
-;; If it is omitted, shared directory (maybe /usr/local is used).
-(defvar PREFIX install-prefix)
-;;(setq PREFIX "~/")
-
-\f
-
-;;; @ optional settings
-;;;
-
-(defvar VERSION_SPECIFIC_LISPDIR
- (install-detect-elisp-directory PREFIX nil 'version-specific))
-
-;; It is generated by automatically. Please set variable `PREFIX'.
-;; If you don't like default directory tree, please set it.
-(defvar LISPDIR (install-detect-elisp-directory PREFIX))
-;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
-
-(defvar PACKAGEDIR
- (if (boundp 'early-packages)
- (let ((dirs (append (if early-package-load-path
- early-packages)
- (if late-package-load-path
- late-packages)
- (if last-package-load-path
- last-packages)))
- dir)
- (while (not (file-exists-p (setq dir (car dirs))))
- (setq dirs (cdr dirs)) )
- dir )))
-
-(defconst liece-config-info-file-regexp
- (concat "^liece-faq\\.info\\(-[0-9]+\\)?$"))
-
-;;; liece-config.el ends here
+++ /dev/null
-;;; liece-ctcp.el --- CTCP handlers and commands.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece, CTCP
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'liece-inlines))
-
-(require 'liece-handler)
-
-(require 'pccl)
-
-(if-broken ccl-usable
- (require 'liece-q-el)
- (require 'liece-q-ccl))
-
-(require 'liece-x-face)
-
-(autoload 'liece-ctcp-dcc-message "liece-dcc")
-
-(eval-and-compile
- (defconst liece-ctcp-supported-symbols
- '(version userinfo clientinfo ping time x-face comment help)))
-
-(defun liece-ctcp-make-menu-command-wrapper (symbol)
- (fset (intern (format "liece-menu-callback-ctcp-%s" symbol))
- `(lambda ()
- (interactive)
- (dolist (nick liece-nick-region-nicks)
- (funcall (symbol-function
- (intern (format "liece-command-ctcp-%s" ',symbol)))
- nick)))))
-
-(dolist (symbol liece-ctcp-supported-symbols)
- (liece-ctcp-make-menu-command-wrapper symbol))
-
-(defvar liece-ctcp-message
- (eval-when-compile
- (concat liece-client-prefix "%s(%s) = %s"))
- "Message in which info of other clients is displayed.")
-
-(defvar liece-ctcp-buffer (append liece-D-buffer liece-O-buffer))
-
-(defvar liece-ctcp-ping-time '(0 0 0))
-
-(defvar liece-ctcp-last-command nil
- "The last command executed.")
-
-(defvar liece-ctcp-last-nick nil
- "The last nick being queried.")
-
-(defconst liece-ctcp-error-message "Unrecognized command: '%s'"
- "Error message given to anyone asking wrong CLIENT data.")
-
-(defun liece-ctcp-last-nick-maybe-change (prefix rest)
- (if (equal prefix liece-ctcp-last-nick)
- (setq liece-ctcp-last-nick rest))
- nil)
-
-(defun liece-ctcp-last-nick-maybe-reset (prefix rest)
- (if (equal prefix liece-ctcp-last-nick)
- (setq liece-ctcp-last-nick nil)))
-
-(add-hook 'liece-nick-hook 'liece-ctcp-last-nick-maybe-change t)
-(add-hook 'liece-quit-hook 'liece-ctcp-last-nick-maybe-reset)
-
-(defcustom liece-ctcp-file-save-directory liece-directory
- "Directory to save received files."
- :type 'directory
- :group 'liece-ctcp)
-
-(liece-handler-define-backend "ctcp-message")
-
-(defmacro liece-register-ctcp-message-handler (name)
- `(liece-handler-define-function
- ,name '(from chnl data "ctcp-message")
- ',(intern (format "liece-ctcp-%s-message" name))))
-
-(liece-register-ctcp-message-handler "version")
-(liece-register-ctcp-message-handler "userinfo")
-(liece-register-ctcp-message-handler "clientinfo")
-(liece-register-ctcp-message-handler "ping")
-(liece-register-ctcp-message-handler "time")
-(liece-register-ctcp-message-handler "file")
-(liece-register-ctcp-message-handler "x-face")
-(liece-register-ctcp-message-handler "comment")
-(liece-register-ctcp-message-handler "help")
-(liece-register-ctcp-message-handler "action")
-(liece-register-ctcp-message-handler "dcc")
-(liece-register-ctcp-message-handler "errmsg")
-
-(defun* liece-ctcp-message (from chnl rest)
- (or (string-match "^\\([^\001]*\\)\001\\([^\001]*\\)\001" rest)
- (return-from liece-ctcp-message))
- (let (hook after-hook data message)
- (setq data (match-string 2 rest)
- rest (concat
- (match-string 1 rest)
- (substring rest (match-end 0))))
- (if (string-match "^\\([^ ]*\\) *:?" data)
- (setq message (downcase (match-string 1 data))
- data (substring data (match-end 0)))
- (setq message "errmsg"
- data (_ "Couldn't figure out what was said.")))
- (setq hook
- (intern-soft
- (concat "liece-ctcp-" message "-hook"))
- after-hook
- (intern-soft
- (concat "liece-after-ctcp-" message "-hook")))
- (if (run-hook-with-args-until-success hook from chnl data)
- (return-from liece-ctcp-message rest))
- (let ((func
- (liece-handler-find-function
- message '(from chnl data) "ctcp-message")))
- (if func
- (funcall func from chnl data)
- (liece-ctcp-messages message from chnl data))
- (run-hook-with-args after-hook from chnl data))
- rest))
-
-(defun liece-ctcp-messages (message from chnl rest)
- (liece-send "NOTICE %s :\001ERRMSG %s :%s\001"
- from (upcase message)
- (format liece-ctcp-error-message
- (upcase message)))
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert (upcase message) from chnl rest))
-
-(defun liece-ctcp-action-message (from chnl rest)
- "CTCP ACTION handler."
- (let ((liece-message-target (liece-channel-virtual chnl))
- (liece-message-speaker from)
- (liece-message-type 'action))
- (liece-display-message rest)))
-
-(defun liece-ctcp-insert (message from &optional chnl rest)
- (if (or (null chnl)
- (liece-nick-equal chnl liece-real-nickname))
- (liece-message "%s query from %s." message from)
- (liece-message "%s query from %s (%s)." message from chnl)
- (liece-insert-client
- (liece-pick-buffer chnl)
- (format "%s query from %s%s\n"
- message from (if rest (concat ":" rest) "")))))
-
-(defun liece-ctcp-version-message (from chnl rest)
- "CTCP VERSION handler."
- (liece-send "NOTICE %s :\001VERSION %s :\001"
- from (liece-version))
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "VERSION" from chnl rest))
-
-(defun liece-ctcp-userinfo-message (from chnl rest)
- "CTCP USERINFO handler."
- (liece-send "NOTICE %s :\001USERINFO %s\001"
- from liece-ctcp-userinfo)
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "USERINFO" from chnl))
-
-(defun liece-ctcp-clientinfo-message (from chnl rest)
- "CTCP CLIENTINFO handler."
- (liece-send "NOTICE %s :\001CLIENTINFO %s\001"
- from
- (eval-when-compile
- (mapconcat
- (lambda (symbol) (upcase (symbol-name symbol)))
- liece-ctcp-supported-symbols " ")))
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "CLIENTINFO" from chnl))
-
-(defvar liece-ctcp-help-message
- "This is a help message for CTCP requests.
-\"VERSION\" gives version of this client.
-\"USERINFO\" gives user supplied information if any.
-\"CLIENTINFO\" gives commands this client knows.
-\"PING\" returns the arguments it receives.
-\"TIME\" tells you the time on the user's host.
-\"FILE\" send a small file via IRC messages.
-\"X-FACE\" gives you user supplied X-Face.
-\"COMMENT\" returns string sent by other person.
-\"HELP\" gives this help message"
- "Help message for CTCP requests.")
-
-(defun liece-ctcp-help-message (from chnl rest)
- "CTCP HELP handler."
- (liece-send
- "NOTICE %s :\001HELP %s\001"
- from (liece-quote-encode-string liece-ctcp-help-message))
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "HELP" from chnl))
-
-(defun liece-ctcp-comment-message (from chnl rest)
- "CTCP COMMENT handler."
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "COMMENT" from chnl))
-
-(defun liece-ctcp-ping-message (from chnl rest)
- "CTCP PING handler."
- (liece-send "NOTICE %s :\001PING %s\001" from rest)
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "PING" from chnl))
-
-(defun liece-ctcp-time-message (from chnl rest)
- "CTCP TIME handler."
- (liece-send "NOTICE %s :\001TIME %s\001"
- from (funcall liece-format-time-function
- (current-time)))
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "TIME" from chnl))
-
-(defun liece-ctcp-x-face-message (from chnl rest)
- "CTCP X-FACE handler."
- (liece-send "NOTICE %s :\001X-FACE %s\001"
- from liece-ctcp-x-face)
- (setq chnl (liece-channel-virtual chnl))
- (liece-ctcp-insert "X-FACE" from chnl))
-
-(liece-handler-define-backend "ctcp-notice")
-
-(defmacro liece-register-ctcp-notice-handler (name)
- `(liece-handler-define-function
- ,name '(prefix rest "ctcp-notice")
- ',(intern (format "liece-ctcp-%s-notice" name))))
-
-(liece-register-ctcp-notice-handler "version")
-(liece-register-ctcp-notice-handler "userinfo")
-(liece-register-ctcp-notice-handler "clientinfo")
-(liece-register-ctcp-notice-handler "ping")
-(liece-register-ctcp-notice-handler "time")
-(liece-register-ctcp-notice-handler "file")
-(liece-register-ctcp-notice-handler "x-face")
-(liece-register-ctcp-notice-handler "comment")
-(liece-register-ctcp-notice-handler "help")
-(liece-register-ctcp-notice-handler "dcc")
-(liece-register-ctcp-notice-handler "errmsg")
-
-(defun* liece-ctcp-notice (prefix rest)
- (or (string-match "^\\([^\001]*\\)\001\\([^\001]*\\)\001" rest)
- (return-from liece-ctcp-notice))
- (let (hook after-hook data message)
- (setq data (match-string 2 rest)
- rest (concat
- (match-string 1 rest)
- (substring rest (match-end 0))))
- (if (string-match "^\\([^ ]*\\) *:?" data)
- (setq message (downcase (match-string 1 data))
- data (substring data (match-end 0)))
- (setq message "errmsg"
- data (_ "Couldn't figure out what was said.")))
- (setq hook
- (intern-soft
- (concat "liece-ctcp-" message "-notice-hook"))
- after-hook
- (intern-soft
- (concat "liece-after-ctcp-" message "-notice-hook")))
- (if (run-hook-with-args-until-success hook prefix data)
- (return-from liece-ctcp-notice rest))
- (let ((func
- (liece-handler-find-function
- message '(prefix data) "ctcp-notice")))
- (if func
- (funcall func prefix data)
- (liece-ctcp-notices message prefix data)))
- (run-hook-with-args after-hook prefix data)
- rest))
-
-(defun liece-ctcp-notices (message prefix rest)
- (liece-message
- (_ "Unknown ctcp notice \":%s %s %s\"")
- prefix (upcase message) rest))
-
-(liece-handler-define-backend "ctcp-file")
-
-(defmacro liece-register-file-handler (name)
- `(liece-handler-define-function
- ,name '(prefix name data "ctcp-file")
- ',(intern (format "liece-file-%s" name))))
-
-(liece-register-file-handler "start")
-(liece-register-file-handler "cont")
-(liece-register-file-handler "end")
-
-(defun* liece-ctcp-file-notice (prefix rest)
- (when liece-file-accept
- (multiple-value-bind (message name data)
- (liece-split-line rest)
- (setq message (downcase message))
- (let ((hook
- (intern-soft
- (concat "liece-file-" message "-hook")))
- (after-hook
- (intern-soft
- (concat "liece-after-file-" message "-hook")))
- func)
- (if (run-hook-with-args-until-success hook prefix name)
- (return-from liece-ctcp-file-notice))
- (setq func (liece-handler-find-function
- message '(prefix name data) 'ctcp-file))
- (if func
- (funcall func prefix name data)
- (liece-file-notices message prefix name data))
- (run-hook-with-args after-hook prefix name)))))
-
-(defun liece-file-notices (message prefix name data)
- (liece-message
- (_ "Unknown FILE message \":%s %s %s %s\"")
- prefix (upcase message) name data))
-
-(defun liece-file-start (prefix name data)
- "CTCP FILE start handler."
- (save-excursion
- (set-buffer
- (liece-get-buffer-create
- (format " *ctcp-file:%s*" name)))
- (buffer-disable-undo)
- (set-buffer-multibyte nil)
- (erase-buffer)
- (insert data)))
-
-(defun liece-file-cont (prefix name data)
- "CTCP FILE cont handler."
- (save-excursion
- (set-buffer
- (liece-get-buffer-create
- (format " *ctcp-file:%s*" name)))
- (goto-char (point-max))
- (insert data)))
-
-(defun liece-file-end (prefix name data)
- "CTCP FILE cont handler."
- (save-excursion
- (set-buffer
- (liece-get-buffer-create
- (format " *ctcp-file:%s*" name)))
- (goto-char (point-max))
- (insert data)
- (liece-quote-decode-region (point-min)(point-max))
- (goto-char (point-min))
- (when (or (null liece-file-confirm-save)
- (y-or-n-p "Save file? "))
- (or (file-directory-p liece-ctcp-file-save-directory)
- (make-directory liece-ctcp-file-save-directory))
- (write-region-as-binary
- (point-min)(point-max)
- (expand-file-name
- (file-name-nondirectory
- (concat name "-" prefix))
- liece-ctcp-file-save-directory))
- (kill-buffer (current-buffer)))))
-
-(defun liece-ctcp-version-insert (buffer prefix name
- &optional version environment)
- (or (listp buffer)
- (setq buffer (list buffer)))
- (liece-insert buffer
- (concat (format liece-ctcp-message
- "VERSION" prefix "")
- name "\n"))
- (when version
- (liece-insert buffer
- (concat (format liece-ctcp-message
- "VERSION" prefix "")
- "\t" version
- (if environment
- (concat " " environment))
- "\n"))))
-
-(defun liece-ctcp-version-notice (prefix rest)
- "CTCP VERSION reply handler."
- (if (null rest)
- (liece-message (_ "Empty CLIENT version notice from \"%s\".") prefix)
- (cond
- ((string-match "^\\([^:]*\\):\\([^:]+\\):?\\([^:]*\\)" rest)
- (liece-ctcp-version-insert liece-ctcp-buffer
- prefix (match-string 1 rest)
- (match-string 2 rest)
- (match-string 3 rest)))
- ((string-match "^\\([^:]*\\):\\(.*\\)" rest)
- (liece-ctcp-version-insert liece-ctcp-buffer
- prefix (match-string 1 rest)))
- (t
- (liece-ctcp-version-insert liece-ctcp-buffer prefix rest)))))
-
-(defun liece-ctcp-clientinfo-notice (prefix rest)
- "CTCP CLIENTINFO reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "CLIENTINFO" prefix rest)))
-
-(defun liece-ctcp-userinfo-notice (prefix rest)
- "CTCP USERINFO reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "USERINFO" prefix rest)))
-
-(defun liece-ctcp-help-notice (prefix rest)
- "CTCP HELP reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "HELP" prefix rest)))
-
-(defun liece-ctcp-x-face-notice (prefix rest)
- "CTCP X-FACE reply handler."
- (let ((buffer liece-ctcp-buffer))
- (liece-insert buffer
- (format liece-ctcp-message
- "X-FACE" prefix ""))
- (if (and liece-use-x-face
- (string-match "[^ \t]" rest))
- (liece-x-face-insert
- buffer (replace-in-string rest "[ \t\r\n]+" "") prefix)
- (liece-insert buffer rest))
- (let (liece-display-time)
- (liece-insert buffer "\n"))))
-
-(defun liece-ctcp-errmsg-notice (prefix rest)
- "CTCP ERRMSG reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "ERRMSG" prefix rest)))
-
-(defun liece-ctcp-comment-notice (from rest)
- "CTCP COMMENT reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "COMMENT" from rest))
- (liece-message "COMMENT query from %s." from))
-
-(defmacro liece-ctcp-prepare-ping-seconds (timenow)
- `(format (_ "%d sec")
- (+ (* 65536 (- (car ,timenow) (car liece-ctcp-ping-time)))
- (- (cadr ,timenow) (cadr liece-ctcp-ping-time)))))
-
-(defun liece-ctcp-ping-notice (from rest)
- "CTCP PING reply handler."
- (let ((timenow (current-time)))
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "PING" from
- (liece-ctcp-prepare-ping-seconds timenow)))))
-
-(defun liece-ctcp-time-notice (from rest)
- "CTCP TIME reply handler."
- (liece-insert liece-ctcp-buffer
- (format (concat liece-ctcp-message "\n")
- "TIME" from rest)))
-
-(defmacro liece-complete-client ()
- '(let ((completion-ignore-case t) (nick liece-ctcp-last-nick))
- (liece-minibuffer-completing-read
- (_ "Whose client: ") liece-nick-alist nil nil nil nil
- (if nick (liece-channel-virtual nick)))))
-
-(defun liece-minibuffer-complete-client-query ()
- (let* ((alist
- (eval-when-compile
- (list-to-alist
- (mapcar
- (lambda (symbol) (downcase (symbol-name symbol)))
- liece-ctcp-supported-symbols))))
- (candidate (liece-minibuffer-prepare-candidate))
- (completion (try-completion candidate alist))
- (all (all-completions candidate alist)))
- (liece-minibuffer-finalize-completion completion candidate all)))
-
-(defmacro liece-complete-query ()
- '(let ((completion-ignore-case t)
- (liece-minibuffer-complete-function
- (function liece-minibuffer-complete-client-query)))
- (read-from-minibuffer
- (_ "Which query: ") liece-ctcp-last-command
- liece-minibuffer-map)))
-
-(defun liece-ctcp-make-command-wrapper (symbol)
- (fset (intern (format "liece-command-ctcp-%s" symbol))
- `(lambda (client)
- (interactive (list (liece-complete-client)))
- (setq client (liece-channel-real client)
- liece-ctcp-last-nick client
- ,@(if (eq symbol 'ping)
- '(liece-ctcp-ping-time
- (current-time))))
- (liece-send "PRIVMSG %s :\001%s\001"
- client (upcase (symbol-name ',symbol))))))
-
-(dolist (symbol liece-ctcp-supported-symbols)
- (liece-ctcp-make-command-wrapper symbol))
-
-(defun liece-command-ctcp-action (&optional arg)
- "Send CTCP action."
- (interactive
- (if current-prefix-arg
- (list current-prefix-arg)))
- (let ((completion-ignore-case t)
- (liece-message-type 'action)
- message)
- (if arg
- (setq liece-privmsg-partner
- (liece-channel-virtual
- (liece-minibuffer-completing-read
- (_ "To whom: ")
- (append liece-nick-alist liece-channel-alist)
- nil nil nil nil liece-privmsg-partner))))
- (beginning-of-line)
- (setq message (buffer-substring (point)(progn (end-of-line)(point))))
- (if (string= message "")
- (setq message (read-string "Action: "))
- (liece-next-line 1))
- (liece-send "PRIVMSG %s :\001ACTION %s\001"
- (if arg
- liece-privmsg-partner
- (liece-channel-real liece-current-channel))
- message)
- (if arg
- (liece-own-private-message message)
- (liece-own-channel-message message))))
-
-(define-obsolete-function-alias 'liece-command-send-action
- 'liece-command-ctcp-action)
-
-;;;###liece-autoload
-(defun liece-command-ctcp-generic (nick command)
- "Ask about someones client clientinfo."
- (interactive (list (liece-complete-client) (liece-complete-query)))
- (setq nick (liece-channel-real nick)
- liece-ctcp-last-nick nick
- liece-ctcp-last-command command)
- (if (string-equal-ignore-case liece-ctcp-last-command "ping")
- (setq liece-ctcp-ping-time (current-time)))
- (liece-send "PRIVMSG %s :\001%s\001" nick command))
-
-;;;###liece-autoload
-(defun liece-command-ctcp-userinfo-from-minibuffer (info)
- "Ask about someones client clientinfo."
- (interactive
- (list (read-from-minibuffer "New userinfo: " liece-ctcp-userinfo)))
- (setq liece-ctcp-userinfo info))
-
-;;;###liece-autoload
-(defun liece-command-ctcp-x-face-from-xbm-file (file)
- (interactive "fXBM File: ")
- (let (data)
- (and (file-exists-p file) (file-readable-p file)
- (setq data (liece-x-face-encode file))
- (setq liece-ctcp-x-face
- (replace-in-string (cadr (nth 3 data)) "[ \t\n]" "")))))
-
-;;;###liece-autoload
-(defun liece-command-send-file (file to)
- "Send a file to given user."
- (interactive "fFile name: \nsTo whom: ")
- (save-excursion
- (set-buffer (liece-get-buffer-create (format " *ctcp-file:%s*" file)))
- (buffer-disable-undo)
- (set-buffer-multibyte nil)
- (erase-buffer)
- (insert-file-contents-as-binary file)
- (liece-quote-encode-region (point-min)(point-max))
- (goto-char (point-min))
- (let ((bound (min (point-max) (+ 80 (point))))
- (liece-mime-charset-for-write 'binary))
- (liece-send
- "NOTICE %s :\001FILE START %s :%s\001"
- to file (buffer-substring (point) bound))
- (goto-char bound)
- (while (not (eobp))
- (if (= 1 (mod (point) 800))
- (sit-for 1))
- (setq bound (min (point-max) (+ 80 (point))))
- (liece-send "NOTICE %s :\001FILE CONT %s :%s\001"
- to file (buffer-substring (point) bound))
- (goto-char bound)))
- (liece-send "NOTICE %s :\001FILE END %s : \001" to file)
- (kill-buffer (current-buffer))))
-
-(provide 'liece-ctcp)
-
-;;; liece-ctcp.el ends here
+++ /dev/null
-;;; liece-dcc.el --- DCC handlers and commands.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece, DCC
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-intl)
- (require 'liece-inlines)
- (require 'liece-channel))
-
-(eval-when-compile (require 'queue-m))
-
-(require 'liece-coding)
-(require 'liece-misc)
-(require 'liece-minibuf)
-
-(defvar liece-dcc-requests (queue-create))
-(defvar liece-dcc-receive-direct t)
-(defvar liece-dcc-process-alist nil)
-
-(defconst liece-dcc-acceptable-messages '("SEND" "CHAT"))
-
-(defstruct liece-dcc-object type from host port file size)
-
-(defun liece-dcc-enqueue-request (type &rest args)
- (let ((request (apply #'make-liece-dcc-object :type type args)))
- (inline (queue-enqueue liece-dcc-requests request))))
-
-(defun liece-dcc-dequeue-request (&optional type)
- (when (or (not type)
- (eq (liece-dcc-object-type
- (queue-first liece-dcc-requests))
- type))
- (inline (queue-dequeue liece-dcc-requests))))
-
-(defmacro liece-dcc-add-to-process-alist (process type &rest args)
- `(push (cons (process-name ,process)
- (make-liece-dcc-object :type ,type ,@args))
- liece-dcc-process-alist))
-
-(defmacro liece-dcc-get-process-object (process)
- `(cdr (assoc (process-name ,process) liece-dcc-process-alist)))
-
-(defmacro liece-dcc-message (&rest msg)
- `(message "DCC %s" (format ,@msg)))
-
-(defun* liece-ctcp-dcc-message (from chnl rest)
- (cond
- ((string-match "^SEND +" rest)
- (multiple-value-bind (filename host port size)
- (split-string (substring rest (match-end 0)))
- (setq filename (file-name-nondirectory filename))
- (liece-insert-dcc
- (append liece-O-buffer liece-D-buffer)
- (format (_ "SEND request from %s: %s (%s bytes)\n")
- from filename size))
- (liece-dcc-enqueue-request
- 'send :from from :host host :port port :file filename :size size)
- (when liece-dcc-receive-direct
- (liece-insert-dcc
- (append liece-O-buffer liece-D-buffer)
- (format (_ "SEND applied autoreceive: %s (%s bytes)\n")
- filename size))
- (liece-command-dcc-receive))))
- ((string-match "^CHAT [^ ]+ +" rest)
- (multiple-value-bind (host port)
- (split-string (substring rest (match-end 0)))
- (liece-dcc-enqueue-request 'chat :from from :host host :port port)
- (liece-insert-dcc
- (append liece-O-buffer liece-D-buffer)
- (concat "CHAT request from " from "\n"))))))
-
-(defun liece-command-dcc-send (filename towhom)
- "Send file to user."
- (interactive
- (list (expand-file-name
- (read-file-name
- (_ "File to send: ")
- default-directory nil))
- (liece-minibuffer-completing-read
- (_ "To whom: ")
- (append liece-nick-alist liece-channel-alist)
- nil nil nil nil liece-privmsg-partner)))
-
- (setq liece-privmsg-partner towhom)
- (let (process)
- (setq process (start-process
- liece-dcc-program nil liece-dcc-program
- "send" (int-to-string liece-dcc-port) filename))
- (set-process-filter process #'liece-dcc-send-filter)
- (set-process-sentinel process #'liece-dcc-sentinel))
- (or (zerop liece-dcc-port)
- (incf liece-dcc-port)))
-
-(defun liece-dcc-sentinel (process output)
- (let* ((object (liece-dcc-get-process-object process))
- (type (liece-dcc-object-type object)))
- (if (null object)
- (delete-process process)
- (if (string-match "^finished" output)
- (cond
- ((eq type 'send)
- (liece-dcc-message (_ "Sent file to %s: %s (%s bytes)")
- (liece-dcc-object-from object)
- (liece-dcc-object-file object)
- (liece-dcc-object-size object)))
- ((eq type 'receive)
- (liece-dcc-message (_ "Received file from %s: %s (%s bytes)")
- (liece-dcc-object-from object)
- (liece-dcc-object-file object)
- (liece-dcc-object-size object)))
- ((eq type 'chat)
- (liece-dcc-message (_ "Chat connection with %s finished")
- (liece-dcc-object-from object))))
- (liece-dcc-message
- (_ "%s error (%s %s %s) is %s\n")
- (capitalize (downcase (prin1-to-string
- (liece-dcc-object-type object))))
- (or (liece-dcc-object-file object) "")
- (cond ((eq type 'send) "to")
- ((eq type 'receive) "from")
- ((eq type 'chat) "with"))
- (liece-dcc-object-from object)
- (substring output 0 (1- (length output))))))))
-
-(defun liece-dcc-send-filter (process output)
- (if (string-match "DCC send +" output)
- (multiple-value-bind (filename port host size)
- (split-string (substring output (match-end 0)))
- (setq filename (file-name-nondirectory filename))
- (liece-send "PRIVMSG %s :\001DCC SEND %s %s %s %s\001"
- liece-privmsg-partner filename host port size)
- (liece-dcc-message (_ "Sending file to %s: %s (%s bytes)")
- liece-privmsg-partner filename size)
- (liece-dcc-add-to-process-alist process 'send
- :host host
- :port port
- :from liece-privmsg-partner
- :file filename
- :size size))
- (liece-dcc-message (_ "send error to %s: %s")
- liece-privmsg-partner
- (substring output 0 (1- (length output))))))
-
-(defmacro liece-dcc-prepare-directory ()
- '(or (file-directory-p (expand-file-name liece-dcc-directory))
- (and (y-or-n-p (_ "DCC directory does not exist. Create it? "))
- (make-directory (expand-file-name liece-dcc-directory)))))
-
-(defun liece-command-dcc-receive (&optional number)
- "Receive next file from list."
- (interactive "P")
- (let ((object (liece-dcc-dequeue-request 'send)))
- (if (not object)
- (liece-message (_ "DCC No send request has been arrived."))
- (liece-dcc-message (_ "Getting file from %s: %s (%s bytes)")
- (liece-dcc-object-from object)
- (liece-dcc-object-file object)
- (liece-dcc-object-size object))
- (liece-dcc-prepare-directory)
- (let ((file
- (expand-file-name
- (liece-dcc-object-file object)
- liece-dcc-directory))
- process)
- (setq process
- (start-process
- liece-dcc-program nil liece-dcc-program
- "receive"
- (liece-dcc-object-host object)
- (liece-dcc-object-port object)
- (liece-dcc-object-size object)
- (expand-file-name
- (liece-dcc-object-file object)
- liece-dcc-directory)))
- (set-process-filter process #'liece-dcc-receive-filter)
- (set-process-sentinel process #'liece-dcc-sentinel)
- (liece-dcc-add-to-process-alist
- process 'receive
- :from (liece-dcc-object-from object)
- :host (liece-dcc-object-host object)
- :port (liece-dcc-object-port object)
- :file file
- :size (liece-dcc-object-size object))))))
-
-(defun liece-dcc-receive-filter (process output)
- (liece-dcc-message "%s" (substring output 0 (1- (length output)))))
-
-(defun liece-command-dcc-chat-listen (towhom)
- (interactive
- (list (liece-minibuffer-completing-read
- (_ "With whom: ")
- (append liece-nick-alist liece-channel-alist)
- nil nil nil nil liece-privmsg-partner)))
- (setq liece-privmsg-partner towhom)
- (let (process)
- (as-binary-process
- (setq process
- (start-process
- liece-dcc-program nil
- liece-dcc-program "chat" "listen"
- (int-to-string liece-dcc-port)))
- (set-process-buffer
- process
- (liece-get-buffer-create (format " DCC:%s" (process-id process))))
- (set-process-filter process 'liece-dcc-chat-listen-filter)
- (set-process-sentinel process 'liece-dcc-sentinel)))
- (unless (zerop liece-dcc-port)
- (setq liece-dcc-port (1+ liece-dcc-port))))
-
-(defun liece-dcc-chat-listen-filter (process output)
- (cond
- ((string-match "DCC chat +" output)
- (multiple-value-bind (host port)
- (split-string (substring output (match-end 0)))
- (liece-send "PRIVMSG %s :\001DCC CHAT chat %s %s\001"
- liece-privmsg-partner host port)
- (liece-dcc-message (_ "Ringing user %s")
- liece-privmsg-partner)
- (liece-dcc-add-to-process-alist
- process 'chat :from liece-privmsg-partner)))
- ((string-match "^DCC chat established" output)
- (set-process-filter process 'liece-dcc-chat-filter)
- (let* ((object (liece-dcc-get-process-object process))
- (nick (liece-dcc-object-from object)))
- (setq nick (liece-channel-prepare-representation nick 'dcc))
- (liece-channel-prepare-partner nick)
- (liece-dcc-message (_ "Chat connection established with: %s")
- nick))
- (message ""))
- (t
- (liece-dcc-message (_ "listen error to %s: %s")
- liece-privmsg-partner
- (substring output 0 (1- (length output)))))))
-
-(defun liece-command-dcc-chat-connect (&optional number)
- (interactive "P")
- (let* ((object (liece-dcc-dequeue-request 'chat))
- (nick (liece-dcc-object-from object))
- process)
- (if (not object)
- (liece-message (_ "DCC No chat request has been arrived."))
- (liece-dcc-message (_ "Connecting to: %s") nick)
- (setq liece-privmsg-partner nick)
- (as-binary-process
- (setq process
- (start-process liece-dcc-program nil
- liece-dcc-program "chat" "connect"
- (liece-dcc-object-host object)
- (liece-dcc-object-port object)))
- (set-process-buffer
- process
- (liece-get-buffer-create
- (format " DCC:%s" (process-id process))))
- (set-process-filter process #'liece-dcc-chat-connect-filter)
- (set-process-sentinel process #'liece-dcc-sentinel)
- (liece-dcc-add-to-process-alist
- process 'chat :from liece-privmsg-partner)))))
-
-(defun liece-dcc-chat-connect-filter (process output)
- (if (string-match "^DCC chat established" output)
- (let* ((object (liece-dcc-get-process-object process))
- (nick (liece-dcc-object-from object)))
- (set-process-filter process #'liece-dcc-chat-filter)
- (setq nick (liece-channel-prepare-representation nick 'dcc))
- (liece-channel-prepare-partner nick)
- (liece-dcc-message (_ "Chat connection established with: %s")
- nick)
- (message ""))
- (liece-dcc-message
- (_ "connect error to %s: %s")
- liece-privmsg-partner
- (substring output 0 (1- (length output))))))
-
-(defun liece-dcc-chat-filter (process output)
- (save-match-data
- (with-current-buffer (process-buffer process)
- (let* ((object (liece-dcc-get-process-object process))
- (nick (liece-channel-prepare-representation
- (liece-dcc-object-from object) 'dcc)))
- (goto-char (point-max))
- (insert output)
- (goto-char (point-min))
- (while (search-forward "\n\n" (point-max) t)
- (delete-char -1))
- (goto-char (point-min))
- (when (string-match "\n" output)
- (let (st nd line)
- (while (looking-at ".*\n")
- (setq st (match-beginning 0) nd (match-end 0)
- line (liece-coding-decode-charset-string
- (buffer-substring st (1- nd))))
- (delete-region st nd)
- (let ((liece-message-target (liece-current-nickname))
- (liece-message-speaker nick))
- (liece-display-message line)))))))))
-
-(defun liece-dcc-chat-nick-to-process (nick)
- "Convert NICK to process symbol."
- (let ((alist liece-dcc-process-alist)
- pair)
- (catch 'found
- (while alist
- (setq pair (pop alist))
- (if (and (eq 'chat (cadr pair))
- (liece-nick-equal nick (caddr pair)))
- (throw 'found (car pair))))
- nil)))
-
-(defun liece-dcc-chat-send (nick message)
- "Send MSG string to NICK via DCC chat."
- (let ((process (liece-dcc-chat-nick-to-process nick)))
- (if (not process)
- (liece-message (_ "DCC chat has not been started."))
- (with-current-buffer liece-command-buffer
- (setq message (liece-coding-encode-charset-string message)
- message (if (string-match "\r$" message) message
- (concat message "\r\n")))
- (process-send-string process message)))))
-
-(defun liece-command-dcc-accept ()
- "Dispatch one DCC request."
- (interactive)
- (let* ((object (queue-first liece-dcc-requests))
- (type (liece-dcc-object-type object)))
- (cond ((eq type 'send)
- (liece-command-dcc-receive))
- ((eq type 'chat)
- (liece-command-dcc-chat-connect))
- (t
- (liece-message
- (_ "DCC No request has been arrived."))))))
-
-(defun liece-command-dcc-list ()
- "List files in receive queue."
- (interactive)
- (if (queue-empty liece-dcc-requests)
- (liece-dcc-message (_ "No DCC request here"))
- (let ((i 0) (objects (queue-all liece-dcc-requests)) type)
- (dolist (object objects)
- (setq type (liece-dcc-object-type object))
- (cond ((eq type 'send)
- (liece-dcc-message
- (_ "(%d) %s request %s: %s (%s bytes)")
- i (upcase (symbol-name type))
- (liece-dcc-object-from object)
- (liece-dcc-object-file object)
- (liece-dcc-object-size object)))
- ((eq type 'chat)
- (liece-dcc-message
- (_ "(%d) %s request from %s")
- i (upcase (symbol-name type))
- (liece-dcc-object-from object))))
- (incf i)))))
-
-(defun liece-dcc-compare-hostnames (h1 h2)
- "Compare two internet domain hostnames. Return true iff they resolve to the
-same IP-address."
- (or
- (string-equal-ignore-case h1 h2)
- (if liece-dcc-program
- (let ((pob (liece-get-buffer-create "*IRC DCC resolve*"))
- (output) (domatch nil))
- (save-excursion
- (call-process liece-dcc-program nil pob nil "resolve" h1 h2)
- (set-buffer pob)
- (goto-char (point-min))
- (setq output (buffer-substring (point-min) (point-max)))
- (if (string-match "\\([^ ]+\\)\n\\([^ ]+\\)\n" output)
- (if (string= (match-string 1 output)
- (match-string 2 output))
- (setq domatch t))))
- (kill-buffer pob)
- domatch)
- (string-equal-ignore-case h1 h2))))
-
-(provide 'liece-dcc)
-
-;;; liece-dcc.el ends here
+++ /dev/null
-;;; liece-emacs.el --- FSF Emacs specific routines.
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-08-21
-;; Keywords: emulation
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'static)
- (require 'liece-compat)
- (require 'liece-vars))
-
-(eval-when-compile (ignore-errors (require 'image)))
-
-(require 'derived)
-
-(eval-and-compile
- (autoload 'bitmap-stipple-xbm-file-to-stipple "bitmap-stipple")
- (autoload 'bitmap-stipple-insert-pixmap "bitmap-stipple"))
-
-;;; @ widget emulation
-;;;
-(defvar liece-widget-keymap nil)
-
-(unless liece-widget-keymap
- (require 'wid-edit)
- (setq liece-widget-keymap (copy-keymap widget-keymap))
- (substitute-key-definition
- 'widget-button-click 'liece-widget-button-click
- liece-widget-keymap)
- (define-key liece-widget-keymap [mouse-3]
- 'liece-widget-button-click))
-
-(defun liece-emacs-widget-convert-button (type from to &rest args)
- (apply 'widget-convert-button type from to args)
- (let ((map (copy-keymap liece-widget-keymap)))
- (set-keymap-parent map (current-local-map))
- (overlay-put (make-overlay from to) 'local-map map)))
-
-(defun liece-emacs-widget-button-click (event)
- (interactive "e")
- (let* ((window (posn-window (event-start event)))
- (point (window-point window))
- (buffer (window-buffer window)))
- (with-current-buffer buffer
- (unwind-protect
- (progn
- (goto-char (widget-event-point event))
- (cond
- ((widget-at (point)))
- ((> (point) (save-excursion
- (widget-forward 0)
- (point)))
- (widget-backward 0))
- ((< (point) (save-excursion
- (widget-backward 0)
- (point)))
- (widget-forward 0)))
- (call-interactively (function widget-button-click)))
- (if (windowp (setq window (get-buffer-window buffer)))
- (set-window-point window point))))))
-
-(fset 'liece-widget-convert-button
- 'liece-emacs-widget-convert-button)
-(fset 'liece-widget-button-click
- 'liece-emacs-widget-button-click)
-
-;;; @ startup splash
-;;;
-(defconst liece-splash-image
- (eval-when-compile
- (cond
- ((and (fboundp 'image-type-available-p)
- (image-type-available-p 'xpm))
- (let ((file (expand-file-name "liece.xpm" default-directory)))
- (if (file-exists-p file)
- (list 'image
- :type 'xpm
- :data (with-temp-buffer
- (insert-file-contents-as-binary file)
- (buffer-string))))))
- ((fboundp 'set-face-stipple)
- (let ((file (expand-file-name "liece.xbm" default-directory)))
- (if (file-exists-p file)
- (bitmap-stipple-xbm-file-to-stipple file)))))))
-
-(defun liece-emacs-splash (&optional arg)
- (interactive "P")
- (let* ((font (cdr (assq 'font (frame-parameters))))
- (liece-insert-environment-version nil)
- config buffer pixel-width pixel-height)
- (unwind-protect
- (progn
- (setq config (current-window-configuration))
- (save-excursion
- (setq buffer (generate-new-buffer
- (concat (if arg "*" " *")
- (liece-version) "*")))
- (switch-to-buffer buffer)
- (erase-buffer)
- (static-cond
- ((and (fboundp 'image-type-available-p)
- (image-type-available-p 'xpm))
- (with-temp-buffer
- (insert (plist-get (cdr liece-splash-image) :data))
- (goto-char (point-min))
- (skip-syntax-forward "^\"")
- (when (looking-at "\"[ \t]*\\([0-9]+\\)[ \t]*\\([0-9]+\\)")
- (setq pixel-width (string-to-int (match-string 1))
- pixel-height (string-to-int (match-string 2)))))
- (insert (make-string (max 0 (/ (- (frame-height)
- (/ pixel-height
- (frame-char-height)))
- 2))
- ?\n)
- (make-string (max 0 (/ (- (frame-width)
- (/ pixel-width
- (frame-char-width)))
- 2))
- ?\ ))
- (static-if (condition-case nil
- (progn (insert-image '(image)) nil)
- (wrong-number-of-arguments t))
- (insert-image liece-splash-image "x")
- (insert-image liece-splash-image))
- (insert "\n"))
- (t
- (bitmap-stipple-insert-pixmap liece-splash-image 'center)))
- (insert "\n")
- (insert-char ?\ (max 0 (/ (- (window-width)
- (length (liece-version)))
- 2)))
- (put-text-property (point) (prog2 (insert (liece-version))(point)
- (insert "\n"))
- 'face 'underline))
- (or arg (sit-for 2)))
- (unless arg
- (kill-buffer buffer)
- (set-window-configuration config)))))
-
-;;; @ modeline decoration
-;;;
-(defconst liece-mode-line-image nil)
-
-(defun liece-emacs-create-mode-line-image ()
- (static-when (fboundp 'image-type-available-p)
- (let ((file (liece-locate-icon-file
- (static-cond
- ((image-type-available-p 'xpm)
- "liece-pointer.xpm")
- ((image-type-available-p 'xbm)
- "liece-pointer.xbm")))))
- (and file (file-exists-p file)
- (create-image file nil nil :ascent 99)))))
-
-(defun liece-emacs-mode-line-buffer-identification (line)
- (let ((id (copy-sequence (car line))) image)
- (if (and (stringp id) (string-match "^Liece:" id)
- (setq liece-mode-line-image
- (liece-emacs-create-mode-line-image)))
- (progn
- (add-text-properties 0 (length id)
- (list 'display
- liece-mode-line-image
- 'rear-nonsticky (list 'display))
- id)
- (setcar line id)))
- line))
-
-(fset 'liece-mode-line-buffer-identification
- 'liece-emacs-mode-line-buffer-identification)
-
-;;; @ nick buffer decoration
-;;;
-(defun liece-emacs-create-nick-image (file)
- (static-when (and (fboundp 'image-type-available-p)
- (image-type-available-p 'xpm))
- (let ((file (liece-locate-icon-file file)))
- (and file (file-exists-p file)
- (create-image file nil nil :ascent 99)))))
-
-(defun liece-emacs-nick-image-region (start end)
- (save-excursion
- (goto-char start)
- (beginning-of-line)
- (setq start (point))
-
- (goto-char end)
- (beginning-of-line 2)
- (setq end (point))
-
- (save-restriction
- (narrow-to-region start end)
- (let ((buffer-read-only nil)
- (inhibit-read-only t)
- (case-fold-search nil)
- mark image)
- (dolist (entry liece-nick-image-alist)
- (setq mark (car entry)
- image (cdr entry))
- (if (stringp image)
- (setq image
- (setcdr entry (liece-emacs-create-nick-image image))))
- (goto-char start)
- (while (not (eobp))
- (when (eq (char-after) mark)
- (add-text-properties (point) (1+ (point))
- (list 'display
- image
- 'rear-nonsticky (list 'display))))
- (beginning-of-line 2)))))))
-
-;;; @ unread mark
-;;;
-(defun liece-emacs-unread-mark (chnl)
- (if liece-display-unread-mark
- (with-current-buffer liece-channel-list-buffer
- (let ((buffer-read-only nil))
- (goto-char (point-min))
- (when (re-search-forward (concat "^ ?[0-9]+: " chnl "$") nil t)
- (goto-char (match-end 0))
- (insert (concat " " liece-channel-unread-character)))))))
-
-(defun liece-emacs-read-mark (chnl)
- (if liece-display-unread-mark
- (with-current-buffer liece-channel-list-buffer
- (let ((buffer-read-only nil))
- (goto-char (point-min))
- (when (re-search-forward
- (concat "^ ?[0-9]+: " chnl " "
- liece-channel-unread-character "$") nil t)
- (goto-char (- (match-end 0) 2))
- (delete-char 2))))))
-
-(defun liece-emacs-redisplay-unread-mark ()
- (if liece-display-unread-mark
- (dolist (chnl liece-channel-unread-list)
- (liece-emacs-unread-mark chnl))))
-
-(add-hook 'liece-nick-insert-hook 'liece-emacs-nick-image-region)
-(add-hook 'liece-nick-replace-hook 'liece-emacs-nick-image-region)
-
-(when (and (not liece-inhibit-startup-message)
- liece-splash-image window-system)
- (liece-emacs-splash))
-
-(fset 'liece-redisplay-unread-mark 'liece-emacs-redisplay-unread-mark)
-(add-hook 'liece-channel-unread-functions 'liece-emacs-unread-mark)
-(add-hook 'liece-channel-read-functions 'liece-emacs-read-mark)
-
-(provide 'liece-emacs)
-
-;;; liece-emacs.el ends here
+++ /dev/null
-;;; liece-filter.el --- Process filters for IRC process.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-inlines)
-(require 'liece-misc)
-(require 'liece-intl)
-(require 'liece-handler)
-
-(defvar liece-current-function nil)
-
-(defun* liece-handle-message (prefix message line)
- (let ((hook (intern (concat "liece-" message "-hook")))
- (after-hook (intern (concat "liece-after-" message "-hook")))
- (number (car (read-from-string message)))
- function)
- (if (run-hook-with-args-until-success hook prefix line)
- (return-from liece-handle-message))
- (if (not (numberp number))
- (setq function (liece-handler-find-function message '(prefix line) "generic"))
- (let ((base (format "%03d" (- number (mod number 100)))))
- (require (intern (concat "liece-" base)) nil 'noerror)
- (setq function (liece-handler-find-function message '(prefix line) base))
- (or function
- (setq function
- (let ((default (concat "liece-handle-" base "-messages")))
- `(lambda (prefix line)
- (funcall (intern ,default) ,message prefix line)))))))
- (if function
- (funcall function prefix line))
- (run-hook-with-args after-hook prefix line)))
-
-(defun liece-parse-user-at-host ()
- (let ((cookie
- (and (stringp liece-user-at-host)
- (> (length liece-user-at-host) 2)
- (string-to-char liece-user-at-host))))
- (cond
- ((null cookie)
- (setq liece-user-at-host-type 'invalid))
- ((or (eq cookie ?^) (eq cookie ?=))
- (setq liece-user-at-host (substring liece-user-at-host 1)
- liece-user-at-host-type 'fake))
- ((or (eq cookie ?~) (eq cookie ?-))
- (setq liece-user-at-host (substring liece-user-at-host 1)
- liece-user-at-host-type 'not-verified))
- ((eq cookie ?+)
- (setq liece-user-at-host (substring liece-user-at-host 1)
- liece-user-at-host-type 'ok))
- (t (setq liece-user-at-host-type 'ok)))))
-
-(defun liece-parse-line (line)
- (let (prefix message)
- (when (or (string-match "^\\(:[^! ]*\\)!\\([^ ]*\\) +\\([^ ]+\\) +:?"
- line)
- (string-match "^\\(:[^ ]*\\)?\\(\\) *\\([^ ]+\\) +:?"
- line)
- (string-match "^\\(:[^! \t]*\\)!\\([^ \t]*\\) +\\([^ \t]+\\) +:?"
- line)
- (string-match "^\\(:[^ ]*\\)?\\(\\) *\\([^ \t]+\\) +:?"
- line))
- (setq prefix (if (match-beginning 1)
- (substring (match-string 1 line) 1))
- liece-user-at-host (match-string 2 line)
- message (downcase (match-string 3 line))
- line (liece-coding-decode-charset-string
- (substring line (match-end 0))))
-
- (liece-parse-user-at-host)
- (setq liece-current-function (list prefix message))
- (liece-handle-message prefix message line)
- (setq liece-current-function '("" "")))))
-
-(defun liece-filter (process output)
- "Filter function for IRC server process."
- (with-current-buffer (process-buffer process)
- (goto-char (point-max))
- (insert (liece-convert-received-input output))
- (goto-char (point-min))
- (while (progn (end-of-line) (and (not (eobp)) (eq (char-after) ?\n)))
- (if (eq (char-after (1- (point))) ?\r) ; cut off preceding LF
- (delete-region (1- (point)) (point)))
- (liece-parse-line (buffer-substring (point-min) (point)))
- (delete-region (point-min) (progn (beginning-of-line 2) (point))))))
-
-(defun liece-sentinel (proc status)
- "Sentinel function for Liece process."
- (cond
- ((or (not liece-server-process) (liece-server-opened)))
- ((not (or liece-reconnect-automagic liece-reconnect-with-password))
- (if (process-id proc)
- (liece-sentinel-error proc status)
- (liece-message (_ "Connection closed. (%s)")
- (substring status 0 (1- (length status)))))
- (liece-clear-system))
- (liece-reconnect-with-password
- (liece))
- (t
- (condition-case nil
- (progn
- (set-process-filter liece-server-process nil)
- (set-process-sentinel liece-server-process nil))
- (wrong-type-argument nil))
- (setq liece-server-process nil)
- (liece))))
-
-(defun liece-sentinel-error (proc status)
- (if (not (string-match "^exited abnormally with code \\([0-9]+\\)" status))
- (liece-message (_ "Connection closed. (%s)")
- (substring status 0 (1- (length status))))
- (let ((status (string-to-int (match-string 1 status))))
- (cond
- ((= 99 status) ;; unsupported command
- (liece-message (_ "Please use a newer \"%s\".") liece-dcc-program))
- ((= 98 status) ;; bad argment number
- (liece-message (_ "Please use a newer \"%s\".") liece-dcc-program))
- ((= 97 status)
- (liece-message (_ "Cannot connect to IRC server.")))
- (t
- (liece-message (_ "Server connection closed.")))))))
-
-(provide 'liece-filter)
-
-;;; liece-filter.el ends here
+++ /dev/null
-;;; liece-globals.el --- Global variables and constants.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-version)
-
-(defvar liece-server-name nil)
-(defvar liece-server-process nil)
-(defvar liece-status-message-string nil)
-(defvar liece-polling 0
- "Wheter we are automatically polling the server.")
-
-(defvar liece-real-nickname nil)
-(defvar liece-nick-accepted nil)
-
-(defvar liece-current-channel nil
- "The channel you currently have joined.")
-
-(defvar liece-current-channels nil
- "The channels you have currently joined.")
-
-(defvar liece-current-chat-partner nil
- "The person you are in a private conversation with.")
-
-(defvar liece-current-chat-partners nil
- "An list containing nics user is chatting with.")
-
-(defvar liece-privmsg-partner nil
- "The person who got your last private message.")
-
-(defvar liece-nick-alist nil
- "An alist containing the nicknames of users known to be on IRC.
-Each element in the list is a list containing a nickname.")
-
-(defvar liece-channel-alist nil
- "An alist containing the channels on IRC.
-Each element in the list is a list containing a channel name.")
-
-(defvar liece-operator-alist nil
- "An alist of operators on channel.
-Each element in the list is a list containing a nickname.")
-
-(defvar liece-supported-user-mode-alist nil
- "User modes supported by server.")
-
-(defvar liece-supported-channel-mode-alist nil
- "Channel modes supported by server.")
-
-;; Caches
-(defvar liece-save-variables-are-dirty nil
- "Non nil if liece_vars.el is changed but not saved.")
-
-(defvar liece-user-at-host ""
- "The user@host for the current line.")
-
-(defvar liece-user-at-host-type nil
- "The authentication of uerathost. 'ok 'not-verified 'fake or 'invalid.")
-
-(defvar liece-channel-filter ""
- "Enables use of \\[universal-argument] with NAMES and TOPIC.")
-
-(defvar liece-default-channel-candidate nil)
-
-(defvar liece-nickname-last nil
- "Place to keep old nickname.")
-
-(defvar liece-friends-last nil)
-(defvar liece-who-expression nil)
-
-(defconst liece-long-reply-max 38)
-(defvar liece-long-reply-count 0)
-
-(defvar liece-obarray nil)
-
-\f
-;; Modeline indicators
-(defvar liece-channel-indicator "No channel"
- "The current channel, \"pretty-printed.\".")
-
-(defvar liece-private-indicator nil
- "String displayed in the modeline indicating private conversation.")
-
-(defvar liece-channels-indicator "No channel"
- "The current joined channels, \"pretty-printed.\".")
-
-(defvar liece-away-indicator "-")
-(defvar liece-command-buffer-mode-indicator "Channels")
-(defvar liece-channel-status-indicator "")
-
-(defvar liece-beep-indicator nil)
-(defvar liece-freeze-indicator nil)
-(defvar liece-own-freeze-indicator nil)
-(defvar liece-beep nil)
-(defvar liece-freeze nil)
-(defvar liece-own-freeze nil)
-
-(defvar liece-own-freeze nil
- "If non-nil, dialogue window will not be scrolled automatically.")
-
-(defvar liece-command-buffer-mode 'channel
- "Current command buffer mode.
-Which value is 'chat or 'channel.")
-
-;; Buffers
-(defvar liece-command-buffer "*Commands*"
- "Name of command input buffer.")
-
-(defvar liece-dialogue-buffer "*Dialogue*"
- "Name of dialogue output buffer.")
-
-(defvar liece-private-buffer "*Private*"
- "Name of private message buffer.")
-
-(defvar liece-others-buffer "*Others*"
- "Name of others message buffer.")
-
-(defvar liece-channel-buffer "*Channel*"
- "Name of Channel message buffer.")
-
-(defvar liece-channel-buffer-format " *Channel:%s*"
- "Format of Channel message buffer.")
-
-(defvar liece-channel-list-buffer "*Channels*"
- "Name of Channel list buffer.")
-
-(defvar liece-nick-buffer " *Nicks*"
- "Name of nick list message buffer.")
-
-(defvar liece-nick-buffer-format " *Nicks:%s*"
- "Format of nick list buffer.")
-
-(defvar liece-KILLS-buffer " *KILLS*")
-(defvar liece-IGNORED-buffer " *IGNORED*")
-(defvar liece-WALLOPS-buffer " *WALLOPS*")
-
-(defvar liece-server-buffer nil)
-
-;; Buffer display variables
-(defvar liece-channel-buffer-alist nil)
-(defvar liece-nick-buffer-alist nil)
-
-(defvar liece-buffer-list nil
- "A list of buffers used in displaying messages.")
-
-(defvar liece-D-buffer (list liece-dialogue-buffer)
- "A list of buffer where normal dialogue is sent.")
-
-(defvar liece-O-buffer (list liece-others-buffer)
- "A list of buffer where other messages are sent.")
-
-(defvar liece-P-buffer
- (list liece-dialogue-buffer liece-private-buffer liece-others-buffer)
- "A list of buffers where private messages to me are sent.")
-
-(defvar liece-I-buffer (list liece-IGNORED-buffer)
- "A list of buffers where private messages to me are sent.")
-
-(defvar liece-W-buffer (list liece-WALLOPS-buffer)
- "A list of buffers where WALLOPS messages to me are sent.")
-
-(defvar liece-K-buffer (list liece-KILLS-buffer)
- "A list of buffers where KILL messages to me are sent.")
-
-(defvar liece-000-buffer
- (list liece-dialogue-buffer liece-others-buffer)
- "A list of buffers where 000 messages to me are sent.")
-
-(defvar liece-200-buffer
- (list liece-dialogue-buffer liece-others-buffer)
- "A list of buffers where 200 messages to me are sent.")
-
-(defvar liece-300-buffer
- (list liece-dialogue-buffer liece-others-buffer)
- "A list of buffers where 300 messages to me are sent.")
-
-(defvar liece-400-buffer
- (list liece-dialogue-buffer liece-others-buffer)
- "A list of buffers where 400 messages to me are sent.")
-
-(defvar liece-500-buffer
- (list liece-dialogue-buffer liece-others-buffer)
- "A list of buffers where 500 messages to me are sent.")
-
-(provide 'liece-globals)
-
-;;; liece-globals.el ends here
+++ /dev/null
-;;; liece-handle.el --- implementation of IRC message handlers
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-misc)
- (require 'liece-intl))
-
-(require 'liece-message)
-(require 'liece-filter)
-
-(require 'liece-handler)
-
-(defmacro liece-handle-prepare-comment (rest &optional quote)
- `(if (zerop (length ,rest))
- ""
- (if ,quote
- (regexp-quote (format " (%s)" ,rest))
- (format " (%s)" ,rest))))
-
-(defmacro liece-handle-message-check-empty (msg)
- `(string= ,msg ""))
-
-(defmacro liece-handle-message-check-ignored (prefix rest)
- `(and ,prefix
- (liece-ignore-this-p ,prefix liece-user-at-host)
- (liece-message-from-ignored ,prefix ,rest)))
-
-(defmacro liece-handle-check-changes-ignored ()
- 'liece-ignore-changes)
-
-(defconst liece-handle-ctcp-message-regexp "\001\\(.*\\)\001")
-
-(defmacro liece-handle-ctcp-message-p (msg)
- `(string-match liece-handle-ctcp-message-regexp ,msg))
-
-(autoload 'liece-ctcp-message "liece-ctcp")
-(autoload 'liece-ctcp-notice "liece-ctcp")
-
-\f
-(liece-handler-define-backend "generic")
-
-(mapcar
- (lambda (message)
- (liece-handler-define-function
- message '(prefix rest "generic")
- (intern (format "liece-handle-%s-message" message)))
- (defvar ,(intern (format "liece-%s-hook" message)) nil)
- (defvar ,(intern (format "liece-after-%s-hook" message)) nil))
- '("nick" "notice" "privmsg" "ping" "wall" "wallops" "quit" "topic"
- "mode" "kick" "invite" "kill" "join" "part" "silence"))
-
-(defun* liece-handle-nick-message (prefix rest)
- (let ((chnls (liece-nick-get-joined-channels prefix)))
- (liece-nick-change prefix rest)
- (cond
- ((liece-nick-equal prefix liece-real-nickname)
- (setq liece-nickname-last liece-real-nickname
- liece-real-nickname rest))
- ((liece-nick-member prefix liece-current-chat-partners)
- (setq liece-current-chat-partners
- (string-list-modify-ignore-case (list (cons prefix rest))
- liece-current-chat-partners))
- (setcar (string-assoc-ignore-case prefix liece-nick-buffer-alist)
- rest)
- (setcar (string-assoc-ignore-case prefix liece-channel-buffer-alist)
- rest)
- (if (liece-nick-equal prefix liece-current-chat-partner)
- (setq liece-current-chat-partner rest))
- (add-to-list 'chnls rest)
- (liece-channel-change)))
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-nick-message))
- (liece-insert-change (append (liece-pick-buffer chnls)
- liece-D-buffer liece-O-buffer)
- (format (_ "%s is now known as %s\n") prefix rest))))
-
-(defun* liece-handle-notice-message (prefix rest)
- (if (liece-handle-message-check-ignored prefix rest)
- (return-from liece-handle-notice-message))
- (or liece-ignore-extra-notices
- prefix
- (string-match "as being away" rest)
- (return-from liece-handle-notice-message))
-
- ;; No prefix. This is a server notice.
- (when (and (null prefix) (string-match "^[^ ]* +:?" rest))
- (liece-insert-notice (append liece-D-buffer liece-O-buffer)
- (concat (substring rest (match-end 0)) "\n"))
- (return-from liece-handle-notice-message))
- (multiple-value-bind (chnl temp) (liece-split-line rest)
- ;; This is a ctcp reply but contains additional messages
- ;; at the left or/and right side.
- (if (liece-handle-ctcp-message-p temp)
- (setq temp (liece-ctcp-notice prefix temp)))
- (if (liece-handle-message-check-empty temp)
- (return-from liece-handle-notice-message))
-
- ;; Normal message via notice.
- (setq chnl (liece-channel-virtual chnl))
- (let ((liece-message-target chnl)
- (liece-message-speaker prefix)
- (liece-message-type 'notice))
- (liece-display-message temp))))
-
-(defun* liece-handle-privmsg-message (prefix rest)
- (if (liece-handle-message-check-ignored prefix rest)
- (return-from liece-handle-privmsg-message))
- (multiple-value-bind (chnl temp) (liece-split-line rest)
- (setq temp (or temp ""))
- ;; This is a ctcp request but contains additional messages
- ;; at the left or/and right side.
- (if (liece-handle-ctcp-message-p temp)
- (setq temp (liece-ctcp-message prefix chnl temp)))
- (if (liece-handle-message-check-empty temp)
- (return-from liece-handle-privmsg-message))
-
- (setq chnl (liece-channel-virtual chnl))
-
- (when liece-beep-on-bells
- (if (string-match "\007" rest)
- (liece-beep))
- (if (liece-nick-equal chnl liece-real-nickname)
- (and liece-beep-when-privmsg (liece-beep))
- (with-current-buffer (if liece-channel-buffer-mode
- (liece-pick-buffer-1 chnl)
- liece-dialogue-buffer)
- (if liece-beep
- (liece-beep))))
- (dolist (word liece-beep-words-list)
- (if (string-match word rest)
- (liece-beep))))
-
- ;; Append timestamp if we are being away.
- (if (and (string-equal "A" liece-away-indicator)
- (liece-nick-equal chnl liece-real-nickname))
- (setq temp
- (concat temp " ("
- (funcall liece-format-time-function (current-time))
- ")")))
-
- ;; Normal message.
- (let ((liece-message-target chnl)
- (liece-message-speaker prefix)
- (liece-message-type 'privmsg))
- (liece-display-message temp))
-
- ;; Append to the unread list.
- (let ((item (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- liece-current-channel)))
- (unless (liece-channel-equal chnl item)
- (if (liece-channel-unread-p chnl)
- (setq liece-channel-unread-list
- (delete chnl liece-channel-unread-list)))
- (setq liece-channel-unread-list
- (cons chnl liece-channel-unread-list))
- (run-hook-with-args 'liece-channel-unread-functions chnl)))
-
- (if (and (liece-nick-equal chnl liece-real-nickname)
- (not (liece-nick-equal prefix liece-current-chat-partner)))
- (liece-message (_ "A private message has arrived from %s")
- prefix))))
-
-(defun liece-handle-ping-message (prefix rest)
- (liece-send "PONG :%s" rest)
- (liece-command-timestamp-if-interval-expired t)
- (liece-maybe-poll))
-
-(defun liece-handle-wall-message (prefix rest)
- (liece-insert-broadcast (append liece-D-buffer liece-O-buffer)
- (concat (if prefix (concat "from " prefix) "") " "
- rest "\n")))
-
-(defun liece-handle-wallops-message (prefix rest)
- (if liece-show-wallops
- (liece-insert-wallops (append liece-D-buffer liece-O-buffer)
- (concat (if prefix prefix "UNKNOWN")
- ": " rest "\n")))
- (liece-insert-wallops liece-W-buffer
- (concat (if prefix (concat "from " prefix) "") " "
- rest "\n")))
-
-(defun* liece-handle-quit-message (prefix rest)
- (let ((chnls (liece-nick-get-joined-channels prefix)) text match default)
- ;; Mark temporary apart, if quitting user is one of our chat partners.
- (when (liece-nick-member prefix liece-current-chat-partners)
- (add-to-list 'chnls prefix)
- (liece-nick-mark-as-apart prefix))
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-quit-message))
- (cond
- (liece-compress-changes
- (setq text (format (_ " \\(has\\|have\\) left IRC%s")
- (liece-handle-prepare-comment rest t))
- match (format "^%s%s.*%s$"
- (if liece-display-time
- liece-time-prefix-regexp "")
- (regexp-quote liece-change-prefix)
- (regexp-quote text))
- default (format (_ "%s%s has left IRC%s\n")
- liece-change-prefix prefix
- (liece-handle-prepare-comment rest)))
- (liece-replace (append (liece-pick-buffer chnls)
- liece-D-buffer liece-O-buffer)
- match default text
- (format (_ ", %s have left IRC%s")
- prefix (liece-handle-prepare-comment rest))))
- (t
- (liece-insert-change (append (liece-pick-buffer chnls)
- liece-D-buffer liece-O-buffer)
- (format (_ "%s has left IRC%s\n")
- (liece-handle-prepare-comment rest)))))
- (liece-nick-change prefix nil)))
-
-(defun* liece-handle-topic-message (prefix rest)
- (multiple-value-bind (chnl topic) (liece-split-line rest)
- (setq chnl (liece-channel-virtual chnl)
- topic (or topic ""))
- (liece-channel-set-topic topic chnl)
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-topic-message))
- (liece-insert-change (liece-pick-buffer chnl)
- (format (_ "New topic on channel %s set by %s: %s\n")
- chnl prefix topic))
- (liece-insert-change (if (liece-nick-equal chnl liece-current-channel)
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer))
- (format (_ "New topic on channel %s set by %s: %s\n")
- chnl prefix topic))
- (liece-set-channel-indicator)))
-
-(defun* liece-handle-mode-message (prefix rest)
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-mode-message))
- (let ((chnl " ") (str "") mflag mflags marg margs val md chnlp)
- (or (and (string-match "\\([^ ]*\\) +:?" rest)
- (setq chnl (match-string 1 rest)
- str (substring rest (match-end 0))
- chnlp (liece-channel-p chnl)
- str (if (= (aref str (1- (length str))) ? )
- (substring str 0 -1) str)
- chnl (liece-channel-virtual chnl)))
- (and (string-match " +:" rest)
- (setq str (substring rest (match-end 0))))
- (return-from liece-handle-mode-message))
-
- ;; parse modes
- (when (string-match "\\([^ ]*\\) +" str)
- (setq mflag (match-string 1 str)
- marg (substring str (match-end 0))
- mflags (string-to-char-list mflag))
- (while (string-match "^\\([^ ]*\\) +" marg)
- (setq margs (cons (match-string 1 marg) margs)
- marg (substring marg (match-end 0))))
- (or (string= marg "") (setq margs (cons marg margs)))
- (while (setq md (pop mflags))
- (cond ((eq ?- md) (setq val nil))
- ((eq ?+ md) (setq val t))
- ((eq ?o md) (liece-channel-set-operator chnl (pop margs) val))
- ((eq ?v md) (liece-channel-set-voice chnl (pop margs) val))
- ((eq ?b md) (liece-channel-set-ban chnl (pop margs) val))
- ((eq ?e md) (liece-channel-set-exception chnl (pop margs) val))
- ((eq ?I md) (liece-channel-set-invite chnl (pop margs) val))
- (chnlp (liece-channel-set-mode val md chnl))
- (t (liece-nick-set-mode val md chnl)))))
-
- (liece-set-channel-indicator)
- (cond
- (liece-compress-changes
- (let* ((text (concat (regexp-quote rest) "\n"))
- (match (format (_ "^%s%sNew mode for %s set by %s: ")
- (if liece-display-time
- liece-time-prefix-regexp "")
- (regexp-quote liece-change-prefix)
- (regexp-quote chnl) (regexp-quote prefix)))
- (default (format (_ "%sNew mode for %s set by %s: %s\n")
- liece-change-prefix chnl prefix str)))
- (liece-replace (liece-pick-buffer chnl)
- match default text (concat ", " str "\n"))
- (liece-replace (if (and liece-current-channel
- (liece-channel-equal
- chnl liece-current-channel))
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer))
- match default text (concat ", " str "\n"))))
- (t
- (liece-insert-change (liece-pick-buffer chnl)
- (format (_ "New mode for %s set by %s: %s\n")
- chnl prefix str))
- (liece-insert-change (if (and liece-current-channel
- (liece-channel-equal
- chnl liece-current-channel))
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer))
- (format (_ "New mode for %s set by %s: %s\n")
- chnl prefix str))))))
-
-(defun* liece-handle-kick-message (prefix rest)
- (if (/= 3 (length (setq rest (liece-split-line rest))))
- (return-from liece-handle-kick-message))
- (multiple-value-bind (chnl nick message) rest
- (setq chnl (liece-channel-virtual chnl))
-
- (if (liece-nick-equal nick liece-real-nickname)
- (progn
- (liece-insert-change
- (liece-pick-buffer chnl)
- (format (_ "You were kicked off channel %s by %s (%s).\n")
- chnl prefix message))
- (liece-channel-part chnl))
- (liece-nick-part nick chnl))
-
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-kick-message))
-
- (liece-insert-change
- (append (liece-pick-buffer chnl)
- (if (liece-channel-equal chnl liece-current-channel)
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer)))
- (format "%s has kicked %s out%s%s\n"
- prefix nick
- (if (string= (or liece-current-channel "") chnl)
- ""
- (format " from channel %s" chnl))
- (if (not message)
- ""
- (format " (%s)" message))))))
-
-(defun* liece-handle-invite-message (prefix rest)
- (or (string-match " +:" rest)
- (return-from liece-handle-invite-message))
- (and liece-beep-when-invited liece-beep-on-bells
- (liece-beep))
- (let ((chnl (liece-channel-virtual (substring rest (match-end 0)))))
- (liece-insert-info (append liece-D-buffer liece-O-buffer)
- (format "%s invites you to channel %s\n"
- prefix chnl))
- (setq liece-default-channel-candidate chnl)))
-
-(defun* liece-handle-kill-message (prefix rest)
- (or (string-match " +:" rest)
- (return-from liece-handle-kill-message))
- (let ((path (substring rest (match-end 0))))
- (liece-insert-info (append liece-D-buffer liece-O-buffer)
- (format "You were killed by %s. (Path: %s. RIP)\n"
- prefix path)))
- (liece-clear-system))
-
-(defun* liece-handle-join-message (prefix rest)
- (let (flag (xnick prefix) (nick prefix) (chnl rest))
- (cond
- ((string-match "\007[ov]" chnl)
- (setq flag (aref (match-string 0 chnl) 1)
- chnl (substring rest 0 (match-beginning 0))))
- ((string-match " +$" chnl)
- (setq chnl (substring chnl 0 (match-beginning 0)))))
- (setq chnl (liece-channel-virtual chnl))
-
- (liece-nick-set-user-at-host nick liece-user-at-host)
-
- (if (liece-nick-equal nick liece-real-nickname)
- (progn
- (and liece-gather-channel-modes
- (not (liece-channel-modeless-p (liece-channel-real chnl)))
- (liece-send "MODE %s " (liece-channel-real chnl)))
- (liece-channel-join chnl))
- (liece-nick-join nick chnl))
-
- (cond
- ((eq flag ?o)
- (liece-channel-set-operator chnl xnick t)
- (setq xnick (concat "@" xnick)))
- ((eq flag ?v)
- (liece-channel-set-voice chnl xnick t)
- (setq xnick (concat "+" xnick))))
-
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-join-message))
-
- (when (and (liece-nick-member nick liece-current-chat-partners)
- (get (intern nick liece-obarray) 'part))
- (liece-insert-change (liece-pick-buffer nick)
- (format (_ "%s has come back as (%s)\n")
- nick liece-user-at-host))
- (liece-nick-unmark-as-apart nick))
-
- (cond
- (liece-compress-changes
- (let* ((text (format (_ " \\(has\\|have\\) joined channel %s")
- (regexp-quote chnl)))
- (match (format "^%s%s.*%s$"
- (if liece-display-time
- liece-time-prefix-regexp "")
- (regexp-quote liece-change-prefix)
- (regexp-quote text)))
- (default (format (_ "%s%s (%s) has joined channel %s\n")
- liece-change-prefix
- nick liece-user-at-host chnl)))
- (liece-replace (liece-pick-buffer chnl)
- match default text
- (format (_ ", %s (%s) have joined channel %s")
- nick liece-user-at-host chnl))
- (liece-replace (if (and liece-current-channel
- (liece-channel-equal chnl
- liece-current-channel))
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer))
- match default text
- (format (_ ", %s (%s) have joined channel %s")
- nick liece-user-at-host chnl))))
- (t
- (liece-insert-change (liece-pick-buffer chnl)
- (format (_ "%s (%s) has joined channel %s\n")
- nick liece-user-at-host chnl))
- (liece-insert-change (if (liece-channel-equal chnl
- liece-current-channel)
- liece-D-buffer
- (append liece-D-buffer liece-O-buffer))
- (format (_ "%s (%s) has joined channel %s\n")
- nick liece-user-at-host chnl))))))
-
-(defun* liece-handle-part-message (prefix rest)
- (multiple-value-bind (chnl comment text match default buf) (liece-split-line rest)
- (setq chnl (liece-channel-virtual chnl)
- comment (liece-handle-prepare-comment comment))
-
- (if (liece-nick-equal prefix liece-real-nickname)
- (liece-channel-part chnl)
- (liece-nick-part prefix chnl))
-
- (if (liece-handle-check-changes-ignored)
- (return-from liece-handle-part-message))
-
- (setq buf (append liece-D-buffer (liece-pick-buffer chnl)))
- (unless (and liece-current-channel
- (liece-channel-equal chnl liece-current-channel))
- (setq buf (append buf liece-O-buffer)))
- (cond
- (liece-compress-changes
- (setq text (format (_ " \\(has\\|have\\) left channel %s%s")
- (regexp-quote chnl) (regexp-quote comment))
- match (format "^%s%s.*%s$"
- (if liece-display-time
- liece-time-prefix-regexp "")
- (regexp-quote liece-change-prefix)
- (regexp-quote text))
- default (format (_ "%s%s has left channel %s%s\n")
- liece-change-prefix prefix chnl comment))
- (liece-replace buf
- match default text
- (format (_ ", %s have left channel %s%s")
- prefix chnl comment)))
- (t
- (liece-insert-change buf
- (format (_ "%s has left channel %s%s\n")
- prefix chnl comment))))))
-
-(defun* liece-handle-silence-message (prefix rest)
- (let* ((flag (aref rest 0)) (rest (substring rest 1)))
- (liece-insert-info (append liece-D-buffer liece-O-buffer)
- (concat "User " rest
- (if (eq flag ?-) "unsilenced" "silenced")))))
-
-(provide 'liece-handle)
-
-;;; liece-handle.el ends here
+++ /dev/null
-;;; liece-handler.el --- function overloading facilities
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-06-05
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(eval-when-compile (require 'liece-inlines))
-
-(eval-when-compile (require 'liece-clfns))
-
-(defmacro liece-handler-make-obarray (backend)
- `(defvar ,(intern (format "liece-handler-%s-obarray" backend))
- (make-vector 107 0)))
-
-(defmacro liece-handler-obarray (backend)
- `(symbol-value (intern-soft (format "liece-handler-%s-obarray" ,backend))))
-
-(defun liece-handler-override-function-definition (name backend args function)
- (let ((ref (symbol-name (liece-gensym))))
- (if (symbolp name)
- (setq name (symbol-name name)))
- (put (intern name (liece-handler-obarray backend)) 'unifiers
- (nconc (get (intern name (liece-handler-obarray backend)) 'unifiers)
- (list `(,(intern ref (liece-handler-obarray backend))
- ,@args))))
- (fset (intern ref (liece-handler-obarray backend)) function)))
-
-(defun liece-handler-unify-argument-list-function (args unifiers)
- (let ((index 0)
- (unfs (copy-alist unifiers))
- (len (length args))
- type)
- (setq unfs
- (remove-if (lambda (unf) (/= (length (cdr unf)) len)) unfs))
- (dolist (arg args)
- (if (listp arg)
- (setq unfs (remove-if-not
- (lambda (unf)
- (let ((spec (nth index (cdr unf))))
- (or (not (listp spec))
- (eq (car spec) (car arg)))))
- unfs)))
- (incf index))
- (if (caar unfs)
- (symbol-function (caar unfs)))))
-
-(defmacro liece-handler-define-backend (type &optional parents)
- `(liece-handler-make-obarray ,type))
-
-(defun liece-handler-find-function (name args backend)
- (let* ((fsym (intern-soft name (liece-handler-obarray backend)))
- (unifiers (if fsym (get fsym 'unifiers))))
- (liece-handler-unify-argument-list-function args unifiers)))
-
-(defun liece-handler-define-function (name specs function)
- (let ((args (butlast specs))
- (backend (car (last specs))))
- (liece-handler-override-function-definition name backend args function)))
-
-(provide 'liece-handler)
-
-;;; liece-handler.el ends here
+++ /dev/null
-;;; liece-hilit.el --- coloring IRC buffers
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'invisible)
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'font-lock))
-
-(autoload 'liece-url-add-buttons "liece-url")
-(autoload 'liece-channel-add-buttons "liece-channel")
-(autoload 'liece-nick-add-buttons "liece-nick")
-
-(defgroup liece-highlight nil
- "Highlight your IRC buffer"
- :tag "Highlight"
- :prefix "liece-"
- :group 'liece)
-
-(defgroup liece-highlight-faces nil
- "Faces for highlight your IRC buffer"
- :tag "Faces"
- :prefix "liece-highlight-"
- :group 'liece-highlight)
-
-(defcustom liece-change-face 'liece-change-face
- "Face used for displaying \"*** Change:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-notice-face 'liece-notice-face
- "Face used for displaying \"*** Notice:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-broadcast-face 'liece-broadcast-face
- "Face used for displaying \"*** Broadcast:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-wallops-face 'liece-wallops-face
- "Face used for displaying \"*** Wallops:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-error-face 'liece-error-face
- "Face used for displaying \"*** Error:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-info-face 'liece-info-face
- "Face used for displaying \"*** Info:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-timestamp-face 'liece-timestamp-face
- "Face used for displaying \"*** Time:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-client-face 'liece-client-face
- "Face used for displaying \"CLIENT@\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-dcc-face 'liece-dcc-face
- "Face used for displaying \"*** DCC:\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-prefix-face 'liece-prefix-face
- "Face used for displaying \"<nick>\" extent."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-priv-prefix-face 'liece-priv-prefix-face
- "Face used for displaying \"=nick\" line."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-pattern-face 'liece-pattern-face
- "Face used for displaying user defined pattern."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-quoted-bold-face 'liece-quoted-bold-face
- "Face used for displaying \002 quoted string."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-quoted-inverse-face 'liece-quoted-inverse-face
- "Face used for displaying \026 quoted string."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-quoted-underline-face 'liece-quoted-underline-face
- "Face used for displaying \037 quoted string."
- :type 'face
- :group 'liece-highlight-faces)
-
-(defcustom liece-quoted-colors-ircle
- '("white" "black" "red" "orange" "yellow" "LightGreen" "DarkOliveGreen"
- "cyan4" "turquoise" "blue" "black" "black" "black" "black" "black"
- "DarkBlue" "purple1" "purple2" "purple3" "magenta")
- "Color list for displaying \003 quoted string."
- :type '(list (radio string face))
- :group 'liece-highlight)
-
-(defcustom liece-quoted-colors-mirc
- '("white" "black" "blue" "DarkOliveGreen" "red" "brown" "purple"
- "orange" "yellow" "green" "cyan4" "turquoise" "RoyalBlue" "HotPink"
- "gray50" "gray75" "black" "black" "black" "black")
- "Color list for displaying \013 quoted string."
- :type '(list (radio string face))
- :group 'liece-highlight)
-
-(defcustom liece-highlight-jingle-function nil
- "Function playing jingles."
- :type 'function
- :group 'liece-highlight)
-
-(defface liece-change-face
- '((((class color)
- (background dark))
- (:foreground "cyan" :bold t))
- (((class color)
- (background light))
- (:foreground "RoyalBlue" :bold t))
- (t
- (:bold t)))
- "Face used for displaying \"*** Change:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-notice-face
- '((((class color)
- (background dark))
- (:foreground "green2" :bold t))
- (((class color)
- (background light))
- (:foreground "MidnightBlue" :bold t))
- (t
- (:bold t)))
- "Face used for displaying \"*** Notice:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-broadcast-face
- '((((class color)
- (background dark))
- (:foreground "Plum1" :italic t))
- (((class color)
- (background light))
- (:foreground "purple" :italic t))
- (t
- (:italic t)))
- "Face used for displaying \"*** Broadcast:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-wallops-face
- '((((class color)
- (background dark))
- (:foreground "yellow" :bold t))
- (((class color)
- (background light))
- (:foreground "blue4" :bold t))
- (t
- (:bold t)))
- "Face used for displaying \"*** Wallops:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-error-face
- '((((class color)
- (background dark))
- (:foreground "cornflower blue" :bold t))
- (((class color)
- (background light))
- (:foreground "DarkGreen"))
- (t
- (:bold t)))
- "Face used for displaying \"*** Error:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-info-face
- '((((class color)
- (background dark))
- (:foreground "PaleTurquoise" :bold t))
- (((class color)
- (background light))
- (:foreground "RoyalBlue"))
- (t
- (:bold t)))
- "Face used for displaying \"*** Info:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-timestamp-face
- '((((class color)
- (background dark))
- (:foreground "yellow" :bold t))
- (((class color)
- (background light))
- (:foreground "blue4" :bold t))
- (t
- (:bold t)))
- "Face used for displaying \"*** Time:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-client-face
- '((((class color)
- (background dark))
- (:foreground "orange"))
- (((class color)
- (background light))
- (:foreground "red"))
- (t
- (:bold nil)))
- "Face used for displaying \"CLIENT@\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-dcc-face
- '((((class color)
- (background dark))
- (:foreground "orange"))
- (((class color)
- (background light))
- (:foreground "red"))
- (t
- (:bold nil)))
- "Face used for displaying \"*** DCC:\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-prefix-face
- '((((class color)
- (background dark))
- (:foreground "moccasin"))
- (((class color)
- (background light))
- (:foreground "firebrick"))
- (t
- (:bold nil)))
- "Face used for displaying \"<nick>\" extent"
- :group 'liece-highlight-faces)
-
-(defface liece-priv-prefix-face
- '((((class color)
- (background dark))
- (:foreground "orange"))
- (((class color)
- (background light))
- (:foreground "grey40"))
- (t
- (:bold nil)))
- "Face used for displaying \"=nick\" line"
- :group 'liece-highlight-faces)
-
-(defface liece-pattern-face
- '((((class color)
- (background dark))
- (:foreground "red"))
- (((class color)
- (background light))
- (:foreground "red"))
- (t
- (:bold nil)))
- "Face used for displaying user defined pattern"
- :group 'liece-highlight-faces)
-
-(defface liece-quoted-bold-face
- '((t (:bold t)))
- "Face used for displaying \002 quoted string"
- :group 'liece-highlight-faces)
-
-(defface liece-quoted-inverse-face
- '((t (:inverse-video t)))
- "Face used for displaying \026 quoted string"
- :group 'liece-highlight-faces)
-
-(defface liece-quoted-underline-face
- '((t (:underline t)))
- "Face used for displaying \037 quoted string"
- :group 'liece-highlight-faces)
-
-(defcustom liece-highlight-font-lock-keywords
- (append
- ;; setting property occurred once
- (list
- `(,(concat
- "^\\(" liece-time-prefix-regexp "\\)?"
- "\\(\\([][<>(-][][<>(-]?[^ <>)]*[][<>)-][][<>)-]?\\)\\|"
- "\\(=[^ ]*=\\|\\*\\*[^ \*]*\\*\\*\\)\\) ")
- (3 liece-prefix-face append t)
- (4 liece-priv-prefix-face append t)
- ("\\(\002\\)\\([^\002\026\037\003]*\\)" nil nil
- (2 liece-quoted-bold-face t t))
- ("\\(\026\\)\\([^\002\026\037\003]*\\)" nil nil
- (2 liece-quoted-inverse-face t t))
- ("\\(\037\\)\\([^\002\026\037\003]*\\)" nil nil
- (2 liece-quoted-underline-face t t))))
- ;; set property whole line
- (mapcar
- (lambda (line)
- (cons
- (concat
- "^\\(" liece-time-prefix-regexp "\\)?\\("
- (regexp-quote
- (symbol-value (intern (format "liece-%s-prefix" line))))
- ".*\\)$")
- (list 2 (intern (format "liece-%s-face" line)) t t)))
- '(change notice broadcast wallops error info timestamp client dcc))
- '((eval . (cons liece-highlight-pattern liece-pattern-face))))
- "Normal and deformed faces for IRC normal line."
- :type '(repeat (list string))
- :group 'liece-highlight)
-
-(put 'liece-channel-mode 'font-lock-defaults
- '(liece-highlight-font-lock-keywords t))
-(put 'liece-others-mode 'font-lock-defaults
- '(liece-highlight-font-lock-keywords t))
-(put 'liece-dialogue-mode 'font-lock-defaults
- '(liece-highlight-font-lock-keywords t))
-
-;;; This is a kludge for fontifying buffer whose name starts with a space.
-;;; Font-lock isn't responsible for (maybe) invisible buffers.
-(defadvice font-lock-mode
- (around liece-replace-space-in-buffer-name activate)
- (if (char-equal (aref (buffer-name) 0) ? )
- (unwind-protect
- (progn
- (aset (buffer-name) 0 ?_)
- ad-do-it)
- (aset (buffer-name) 0 ? ))
- ad-do-it))
-
-(add-hook 'liece-after-load-startup-hook
- 'liece-highlight-maybe-turn-on-font-lock)
-
-(defun liece-highlight-maybe-turn-on-font-lock ()
- (when liece-highlight-mode
- (add-hook 'liece-channel-mode-hook
- 'liece-highlight-turn-on-font-lock)
- (add-hook 'liece-others-mode-hook
- 'liece-highlight-turn-on-font-lock)
- (add-hook 'liece-dialogue-mode-hook
- 'liece-highlight-turn-on-font-lock)
- (add-hook 'liece-after-insert-functions 'liece-url-add-buttons)
- (add-hook 'liece-after-insert-functions 'liece-channel-add-buttons)
- ;;(add-hook 'liece-after-insert-functions 'liece-nick-add-buttons)
- ))
-
-(defun liece-highlight-turn-on-font-lock ()
- (make-local-variable 'font-lock-defaults)
- (setq font-lock-defaults '(liece-highlight-font-lock-keywords t))
- (make-local-variable 'font-lock-verbose)
- (setq font-lock-verbose nil)
- (make-local-variable 'font-lock-support-mode)
- (setq font-lock-support-mode nil)
- (make-local-hook 'font-lock-mode-hook)
- (setq font-lock-mode-hook nil)
- (turn-on-font-lock)
- (make-local-hook 'after-change-functions)
- (or liece-display-prefix-tag
- (add-hook 'after-change-functions
- 'liece-highlight-maybe-hide-prefix nil 'local))
- (add-hook 'after-change-functions
- 'liece-highlight-colorize-quote nil 'local)
- (add-hook 'after-change-functions
- 'liece-highlight-maybe-hide-quote 'append 'local)
- (when (and (eq major-mode 'liece-dialogue-mode)
- (liece-functionp liece-highlight-jingle-function))
- (add-hook 'after-change-functions
- 'liece-highlight-maybe-play-jingle 'append 'local)))
-
-(defun liece-highlight-maybe-hide-prefix (st nd len)
- (save-excursion
- (goto-char st)
- (if (looking-at liece-generic-prefix-tag-regexp)
- (invisible-region
- (match-beginning 1) (match-end 1)))))
-
-(defun liece-highlight-maybe-hide-quote (st nd len)
- (save-excursion
- (goto-char st)
- (while (re-search-forward "[\002\026\037]\\|[\003\013][0-9:;<=]+" nd t)
- (invisible-region
- (match-beginning 0) (match-end 0)))))
-
-(defun liece-highlight-maybe-play-jingle (st nd len)
- (save-excursion
- (goto-char st)
- (when (re-search-forward
- (if (listp liece-highlight-pattern)
- (car liece-highlight-pattern)
- liece-highlight-pattern)
- nd t)
- (funcall liece-highlight-jingle-function))))
-
-(defun liece-highlight-colorize-quote (st nd len)
- (save-excursion
- (goto-char st)
- (let (num face faces vender name ovl)
- (while (re-search-forward "\\([\003\013][0-9:;<=]+\\)\\([^\002\026\037\003\013]*\\)" nd t)
- (setq ovl (make-overlay (match-beginning 2) (match-end 2))
- num (match-string 1)
- vender (cond ((eq ?\003 (aref num 0)) 'ircle)
- ((eq ?\013 (aref num 0)) 'mirc))
- num (if (< 57 (char-int (aref num 1)))
- (- (char-int (aref num 1)) 43)
- (string-to-int (substring num 1)))
- faces (nthcdr num (symbol-value
- (intern (format "liece-quoted-colors-%s"
- vender))))
- face (car faces))
- (when (stringp face)
- (setq face (make-face (intern (format "liece-quoted-color-%s-%d"
- vender num))))
- (set-face-foreground face (car faces))
- (setcar faces face))
- (overlay-put ovl 'face face)))))
-
-(provide 'liece-hilit)
-
-;;; liece-hilit.el ends here
+++ /dev/null
-;;; liece-inlines.el --- Inline macros for various use.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-globals)
-(require 'liece-compat)
-(require 'liece-setup)
-(require 'liece-vars)
-
-(eval-when-compile (require 'liece-clfns))
-
-;;; @ string functions
-;;;
-(defmacro string-times (str n)
- `(apply #'concat (make-list ,n ,str)))
-
-(defmacro string-join (strlst &optional del)
- `(mapconcat #'identity ,strlst ,del))
-
-(static-if (subr-fboundp 'compare-strings)
- (defmacro string-equal-ignore-case (s1 s2)
- `(eq t (compare-strings ,s1 0 nil ,s2 0 nil 'ignore-case)))
- (defmacro string-equal-ignore-case (s1 s2)
- `(string-equal (upcase ,s1) (upcase ,s2))))
-
-(static-if (fboundp 'member-ignore-case)
- (defalias 'string-list-member-ignore-case
- 'member-ignore-case)
- (defsubst string-list-member-ignore-case (thing list)
- "Returns t if thing is member of list, not funcallable"
- (member-if
- (lambda (item)
- (and (stringp item) (string-equal-ignore-case thing item)))
- list)))
-
-(defsubst string-list-remove-ignore-case (thing list)
- (let ((element (string-list-member-ignore-case thing list)))
- (if element
- (remq (car element) list)
- list)))
-
-(defsubst string-list-delete-ignore-case (thing list)
- (let ((element (string-list-member-ignore-case thing list)))
- (if element
- (delq (car element) list)
- list)))
-
-(defsubst string-list-remove (thing list)
- (let ((element (member thing list)))
- (if element
- (remq (car element) list)
- list)))
-
-(defsubst string-list-delete (thing list)
- (let ((element (member thing list)))
- (if element
- (delq (car element) list)
- list)))
-
-(defsubst string-list-modify-ignore-case (modifiers list)
- (dolist (modifier modifiers)
- (let ((p list))
- (while p
- (if (string-equal-ignore-case (car modifier) (car p))
- (setcar p (cdr modifier)))
- (setq p (cdr p)))))
- list)
-
-(static-if (fboundp 'assoc-ignore-case)
- (defalias 'string-assoc-ignore-case 'assoc-ignore-case)
- (defsubst string-assoc-ignore-case (key list)
- (assoc-if
- (lambda (item) (string-equal-ignore-case item key))
- list)))
-
-(defsubst regexp-assoc-ignore-case (key list)
- "Assoc with REGEXP-KEY from LIST."
- (save-match-data
- (assoc-if
- (lambda (item)
- (string-match (concat "^" (upcase key)) "$") (upcase item))
- list)))
-
-(defsubst regexp-rassoc-ignore-case (key list)
- "Assoc with KEY from LIST, in which keys are regexps."
- (rassoc-if
- (lambda (item)
- (string-match (concat "^" (upcase key) "$") (upcase item)))
- list))
-
-(defmacro list-to-alist (list)
- `(mapcar #'list ,list))
-
-(put 'filter-elements 'lisp-indent-function 2)
-
-(defmacro filter-elements (element list condition)
- `(let (result tail ,element)
- (setq tail ,list)
- (while tail
- (setq ,element (car tail))
- (if ,condition
- (setq result (cons ,element result)))
- (setq tail (cdr tail)))
- (nreverse result)))
-
-\f
-;;; @ helper functions
-;;;
-(defmacro liece-functionp (form)
- `(or (and (symbolp ,form) (fboundp ,form))
- (and (listp ,form) (eq (car ,form) 'lambda))
- (byte-code-function-p ,form)))
-
-(defun liece-eval-form (form)
- (cond
- ((and (listp form) (liece-functionp (car form)))
- (eval form))
- ((and (symbolp form) (boundp form))
- (symbol-value form))
- (t form)))
-
-(defun liece-or (&rest elems)
- "Return non-nil if any of the elements are non-nil."
- (catch 'found
- (while elems
- (when (pop elems)
- (throw 'found t)))))
-
-(defun liece-and (&rest elems)
- "Return non-nil if all of the elements are non-nil."
- (catch 'found
- (while elems
- (unless (pop elems)
- (throw 'found nil)))
- t))
-
-(defun liece-locate-path (subdir &optional filename)
- (let ((dir (liece-locate-data-directory
- (downcase (product-name (product-find 'liece-version))))))
- (when (and dir (file-directory-p dir))
- (if filename
- (expand-file-name filename (concat dir subdir))
- (concat dir subdir)))))
-
-(defun liece-locate-icon-file (filename)
- (if (null liece-icon-directory)
- (setq liece-icon-directory (liece-locate-path "icons")))
- (setq filename (expand-file-name filename liece-icon-directory))
- (if (and filename (file-exists-p filename))
- filename))
-
-(defmacro liece-next-line (arg)
- `(let ((i 0))
- (while (< i ,arg)
- (if (eobp) (newline)(next-line 1))
- (setq i (1+ i)))))
-
-;; Borrowed from `edebug.el'.
-(defvar liece-gensym-index 0
- "Integer used by `liece-gensym' to produce new names.")
-
-(defun liece-gensym (&optional prefix)
- "Generate a fresh uninterned symbol.
-There is an optional argument, PREFIX. PREFIX is the
-string that begins the new name. Most people take just the default,
-except when debugging needs suggest otherwise."
- (if (null prefix)
- (setq prefix "G"))
- (let ((newsymbol nil)
- (newname ""))
- (while (not newsymbol)
- (setq newname (concat prefix (int-to-string liece-gensym-index))
- liece-gensym-index (1+ liece-gensym-index))
- (if (not (intern-soft newname))
- (setq newsymbol (make-symbol newname))))
- newsymbol))
-
-(provide 'liece-inlines)
-
-;;; liece-inlines.el ends here
+++ /dev/null
-;;; liece-intl.el --- Localized messages for IRC.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-12-30
-;; Revised: 1999-09-03
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'cl)
- (require 'liece-compat))
-
-(require 'gettext)
-
-(defgroup liece-intl nil
- "Convert messages to localized them"
- :group 'liece-vars)
-
-(defcustom liece-intl-catalogue-directory nil
- "Normal position of PO files."
- :type 'directory
- :group 'liece-intl)
-
-(defcustom liece-intl-use-localized-messages t
- "If non-nil display localized messages."
- :type 'boolean
- :group 'liece-intl)
-
-(defvar liece-intl-message-alist nil)
-(defvar liece-intl-default-mime-charset 'x-ctext)
-(defvar liece-intl-mime-charset nil)
-(defvar liece-intl-domain "liece")
-
-;;;###liece-autoload
-(defmacro liece-intl-get-msgstr (msgid)
- `(if liece-intl-use-localized-messages
- (dgettext liece-intl-domain ,msgid)
- ,msgid))
-
-;;;###liece-autoload
-(defalias '_ 'liece-intl-get-msgstr)
-
-(defun liece-intl-load-catalogue ()
- (if (null liece-intl-catalogue-directory)
- (setq liece-intl-catalogue-directory
- (liece-locate-path "po")))
- (bind-text-domain liece-intl-domain liece-intl-catalogue-directory))
-
-(provide 'liece-intl)
-
-;;; liece-intl.el ends here
+++ /dev/null
-;;; liece-mail.el --- Message composing and sending utility.
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-12-29
-;; Keywords: IRC, liece, Gnus
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-version)
-
-(defgroup liece-mail nil
- "Compose and send mail in IRC buffer"
- :group 'liece-vars)
-
-(defcustom liece-mail-draft-buffer " *mail*"
- "Generic draft buffer."
- :group 'liece-mail
- :type 'string)
-
-(defcustom liece-maintainer-address
- "liece@unixuser.org (Liece developers)"
- "The mail address of the Liece maintainers."
- :group 'liece-mail
- :type 'string)
-
-(defun liece-command-mail-compose (nick)
- (interactive
- (let ((completion-ignore-case t))
- (list
- (liece-minibuffer-completing-read
- "To whom: " liece-nick-alist nil nil nil nil liece-current-chat-partner))))
- (let ((composefunc (get mail-user-agent 'composefunc)) (to nick)
- (user-agent (liece-version)) uah)
- (if (setq uah (liece-nick-get-user-at-host nick))
- (setq to (concat to " <" uah ">")))
- (if (fboundp composefunc)
- (funcall composefunc to nil (` (("User-Agent" . (, user-agent))))))))
-
-(defun liece-command-submit-bug-report ()
- "Send a bug report to the Gnus maintainers."
- (interactive)
- (require 'reporter)
-
- (reporter-submit-bug-report
- liece-maintainer-address
- (liece-version)
- (let ((base (list 'window-system
- 'liece-highlight-mode
- 'liece-detect-coding-system)))
- base)))
-
-(provide 'liece-mail)
-
-;;; liece-mail.el ends here
+++ /dev/null
-;;; liece-make.el --- Generic make procedures.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-03-02
-;; Keywords: IRC, liece, APEL
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'cl)
-
-(defun install-just-print-p ()
- (let ((flag (getenv "MAKEFLAGS"))
- case-fold-search)
- (princ (format "%s\n" flag))
- (if flag
- (string-match "^\\(\\(--[^ ]+ \\)+-\\|[^ =-]\\)*n" flag))))
-
-(defun config-liece ()
- (let (prefix exec-prefix lisp-dir version-specific-lisp-dir)
- (and (setq prefix (car command-line-args-left))
- (or (string-equal "NONE" prefix)
- (setq PREFIX prefix)))
- (setq command-line-args-left (cdr command-line-args-left))
- (and (setq lisp-dir (car command-line-args-left))
- (or (string-equal "NONE" lisp-dir)
- (setq LISPDIR lisp-dir)))
- (setq command-line-args-left (cdr command-line-args-left))
- (and (setq version-specific-lisp-dir (car command-line-args-left))
- (or (string-equal "NONE" version-specific-lisp-dir)
- (progn
- (defvar VERSION_SPECIFIC_LISPDIR version-specific-lisp-dir)
- (princ (format "VERSION_SPECIFIC_LISPDIR=%s\n"
- VERSION_SPECIFIC_LISPDIR)))))
- (setq command-line-args-left (cdr command-line-args-left))
- (setq load-path (cons (expand-file-name ".") load-path))
- (load "liece-config")
- (or (boundp 'liece-modules-to-compile)
- (load "liece-modules"))
- (princ (format "PREFIX=%s\tLISPDIR=%s\n" PREFIX LISPDIR))))
-
-(defun compile-liece ()
- ;;(setq byte-compile-dynamic t)
- (config-liece)
- (compile-elisp-modules liece-modules-to-compile "."))
-
-(defun install-liece ()
- (compile-liece)
- (let ((just-print (install-just-print-p))
- (dir (expand-file-name "liece" LISPDIR)))
- (princ (format "%s\n" emacs-version))
- (install-elisp-modules liece-modules "." dir just-print)))
-
-(defun install-update-manifest-file (package dir &optional just-print)
- (message "Generating MANIFEST.%s for the package..." package)
- (unless just-print
- (with-temp-buffer
- (insert "pkginfo/MANIFEST." package "\n"
- "lisp/" package "/"
- (mapconcat #'identity
- (sort
- (mapcar (lambda (symbol)
- (format "%s.el\nlisp/%s/%s.elc"
- symbol package symbol))
- liece-modules-to-compile)
- #'string-lessp)
- (concat "\nlisp/" package "/"))
- "\n")
- (when (file-directory-p "../doc")
- (insert "info/"
- (mapconcat #'identity
- (sort
- (directory-files
- "../doc" nil liece-config-info-file-regexp)
- #'string-lessp)
- "\ninfo/")
- "\n"))
- (let ((dirs '("icons" "po" "styles")))
- (dolist (dir dirs)
- (when (file-directory-p (concat "../etc/" dir))
- (insert "etc/" package "/" dir "/"
- (mapconcat #'identity
- (sort (directory-files (concat "../etc/" dir)
- nil nil nil t)
- #'string-lessp)
- (concat "\netc/" package "/" dir "/"))
- "\n"))))
- (write-file (expand-file-name (concat "MANIFEST." package) dir)))))
-
-(defun install-update-package-files (package dir &optional just-print)
- (cond (just-print
- (princ (format "Updating autoloads in directory %s..\n\n" dir))
-
- (princ (format "Processing %s\n" dir))
- (princ "Generating custom-load.el...\n\n")
-
- (princ (format "Compiling %s...\n"
- (expand-file-name "auto-autoloads.el" dir)))
- (princ (format "Wrote %s\n"
- (expand-file-name "auto-autoloads.elc" dir)))
-
- (princ (format "Compiling %s...\n"
- (expand-file-name "custom-load.el" dir)))
- (princ (format "Wrote %s\n"
- (expand-file-name "custom-load.elc" dir))))
- (t
- (setq autoload-package-name package)
- (add-to-list 'command-line-args-left dir)
- (batch-update-directory)
-
- (add-to-list 'command-line-args-left dir)
- (Custom-make-dependencies)
-
- (byte-compile-file (expand-file-name "auto-autoloads.el" dir))
- (byte-compile-file (expand-file-name "custom-load.el" dir)))))
-
-(defun config-liece-package-directory ()
- (if (boundp 'early-packages)
- (let ((dirs (append (if early-package-load-path
- early-packages)
- (if late-package-load-path
- late-packages)
- (if last-package-load-path
- last-packages)))
- dir)
- (while (not (file-exists-p
- (setq dir (car dirs))))
- (setq dirs (cdr dirs)))
- (defvar PACKAGEDIR dir)
- (princ (format "PACKAGEDIR=%s\n" PACKAGEDIR)))))
-
-(defun config-liece-package ()
- (let (package-dir)
- (and (setq package-dir (car command-line-args-left))
- (or (string= "NONE" package-dir)
- (defvar PACKAGEDIR package-dir)))
- (config-liece)
- (config-liece-package-directory)
- (setq command-line-args-left (cdr command-line-args-left))))
-
-(defun compile-liece-package ()
- (config-liece-package)
- (compile-elisp-modules liece-modules-to-compile "."))
-
-(defun install-liece-package ()
- (config-liece-package)
- (let ((just-print (install-just-print-p))
- (dir (expand-file-name "lisp/liece" PACKAGEDIR))
- (pkginfo-dir (expand-file-name "pkginfo" PACKAGEDIR)))
- (install-elisp-modules liece-modules "." dir just-print)
- (install-update-package-files "liece" dir just-print)
- (install-update-manifest-file "liece" pkginfo-dir just-print)))
-
-(defun autoload-liece ()
- (config-liece)
- (require 'autoload)
- (let* ((generated-autoload-file "liece-setup.el")
- (generate-autoload-cookie ";;;###liece-autoload")
- (buf (find-file-noselect generated-autoload-file))
- make-backup-files)
- (set-buffer buf)
- (delete-region (point-min) (point-max))
- (insert-string
- (format "(if (not (featurep '%s)) (progn\n"
- (file-name-sans-extension generated-autoload-file)))
- (mapcar
- (function
- (lambda (file)
- (generate-file-autoloads
- (concat (symbol-name file) ".el"))))
- liece-modules-to-compile)
- (goto-char (point-max))
- (insert-string
- (format "(provide '%s)))\n"
- (file-name-sans-extension generated-autoload-file)))
- (save-buffer)))
-
-(provide 'liece-make)
-
-;;; liece-make.el ends here
+++ /dev/null
-;;; liece-menu.el --- Define menus.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-09-06
-;; Revised: 1999-09-06
-;; Keywords: menu, easymenu
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'easymenu)
- (require 'advice)
- (require 'liece-compat)
- (require 'liece-commands)
- (require 'liece-intl)
- (require 'liece-nick))
-
-(defvar liece-use-localized-menu (featurep 'meadow))
-
-(defvar liece-nick-popup-menu
- '("Liece"
- ["Finger" liece-menu-callback-finger
- liece-nick-region-nicks]
- "----"
- ["CTCP VERSION" liece-menu-callback-ctcp-version
- liece-nick-region-nicks]
- ["CTCP USERINFO" liece-menu-callback-ctcp-userinfo
- liece-nick-region-nicks]
- ["CTCP HELP" liece-menu-callback-ctcp-help
- liece-nick-region-nicks]
- ["CTCP CLIENTINFO" liece-menu-callback-ctcp-clientinfo
- liece-nick-region-nicks]
- ["CTCP PING" liece-menu-callback-ctcp-ping
- liece-nick-region-nicks]
- "----"
- ["Set Channel Operator(s)" liece-menu-callback-mode+o
- liece-nick-region-nicks]
- ["Set Channel Voice(s)" liece-menu-callback-mode+v
- liece-nick-region-nicks]
- ["Unset Channel Operator(s)" liece-menu-callback-mode-o
- liece-nick-region-nicks]
- ["Unset Channel Voice(s)" liece-menu-callback-mode-v
- liece-nick-region-nicks]
- "----"
- ["Kick" liece-menu-callback-kick
- liece-nick-region-nicks]))
-
-(defvar liece-menu-url-menu '("URL" "----"))
-(defvar liece-menu-dcc-menu
- '("DCC"
- ["Send file" liece-command-dcc-send t]
- ["Receive file" liece-command-dcc-receive t]
- "----"
- ["Send chat request" liece-command-dcc-chat-listen t]
- ["Accept chat request" liece-command-dcc-chat-connect t]
- "----"
- ["List DCC request" liece-command-dcc-list t]
- ["Dispatch stacked DCC requests" liece-command-dcc-accept t]))
-
-(defvar liece-menu-private-menu
- '("Private"
- ["Toggle private conversation" liece-command-toggle-private
- (liece-server-opened)]
- ["IsON" liece-command-ison (liece-server-opened)]
- ["Register friends" liece-command-activate-friends t]
- ["Unregister friends" liece-command-deactivate-friends t]
- ["Display userhost" liece-command-userhost (liece-server-opened)]
- ["Ignore nicks / regexp" liece-command-kill t]
- ["Compose mail" liece-command-mail-compose t]))
-
-(defvar liece-menu-ctcp-menu
- '("CTCP"
- ["ACTION" liece-command-client-action
- liece-current-channel]
- ["VERSION" liece-command-client-version
- liece-current-channel]
- ["USERINFO" liece-command-client-userinfo
- liece-current-channel]
- ["HELP" liece-command-client-help
- liece-current-channel]
- ["CLIENTINFO" liece-command-client-clientinfo
- liece-current-channel]
- ["PING" liece-command-client-ping
- liece-current-channel]
- "----"
- ["Request X-Face" liece-command-client-x-face
- liece-current-channel]
- ["Set my X-Face" liece-command-client-x-face-from-xbm-file
- liece-current-channel]))
-
-(defvar liece-menu-channel-menu
- (nconc
- '("Channel"
- ["Join channel" liece-command-join
- (liece-server-opened)]
- ["Part channel" liece-command-part
- (or liece-current-channels liece-current-chat-partners)]
- ["Go to next channel" liece-command-next-channel
- (or liece-current-channels liece-current-chat-partners)]
- ["Go to previous channel" liece-command-previous-channel
- (or liece-current-channels liece-current-chat-partners)]
- ["Rotate left channels" liece-command-pop
- (or liece-current-channels liece-current-chat-partners)]
- ["Rotate right channels" liece-command-push
- (or liece-current-channels liece-current-chat-partners)]
- "----"
- ["Invite to this channel" liece-command-invite
- liece-current-channel]
- ["Kick out from this channel" liece-command-kick
- liece-current-channel]
- "----"
- ["Set mode of this channel" liece-command-modec
- liece-current-channel]
- ["Set topic of this channel" liece-command-topic
- liece-current-channel]
- "----"
- ["Toggle freeze of this channel" liece-command-freeze
- liece-current-channel]
- ["Toggle own freeze of this channel" liece-command-own-freeze
- liece-current-channel]
- ["Toggle beep notice of this channel" liece-dialogue-beep
- liece-current-channel]
- "----"
- ["List channel" liece-command-list
- (liece-server-opened)]
- ["Display names of channel" liece-command-names
- (liece-server-opened)]
- ["Display who are on the channel" liece-command-names
- (liece-server-opened)]
- "----"
- ["Set default key of this channel" liece-command-set-default-key
- (or liece-current-channel liece-current-chat-partner)]
- "----")
- (list liece-menu-ctcp-menu)))
-
-(defvar liece-menu-IRC-menu
- '("IRC"
- ["Load variables file" liece-command-load-vars t]
- ["Save variables file" liece-command-save-vars t]
- "----"
- ["Change window style" liece-command-set-window-style t]
- ["Reload style file" liece-command-reload-window-style t]
- ["Reconfigure windows" liece-command-reconfigure-windows t]
- ["Toggle channel buffer display state"
- liece-command-toggle-channel-buffer-mode t]
- ["Toggle nick buffer display state"
- liece-command-toggle-nick-buffer-mode t]
- "----"
- ["Enter debug mode" liece-command-debug t]
- ["Quit IRC" liece-command-quit t]))
-
-(defvar liece-menu-alist
- '(
- (liece-menu-IRC-menu "IRC Menu.")
- (liece-menu-channel-menu "Channel Menu.")
- (liece-menu-private-menu "Private Menu.")
- (liece-menu-dcc-menu "DCC Menu.")
- (liece-menu-url-menu "URL Menu.")))
-
-(defvar liece-menu-IRC-menu-map)
-(defvar liece-menu-channel-menu-map)
-(defvar liece-menu-private-menu-map)
-(defvar liece-menu-dcc-menu-map)
-(defvar liece-menu-url-menu-map)
-
-;;; @ popup menus
-;;;
-(defmacro liece-menu-bogus-filter-constructor (name menu)
- `(let (x y)
- (setq x (x-popup-menu t ,menu)
- y (and x (lookup-key ,menu (apply #'vector x))))
- (if (and x y)
- (funcall y))))
-
-(defmacro liece-menu-popup-menu (event menu)
- (if (featurep 'xemacs)
- `(popup-menu ,menu)
- `(let (bogus-menu)
- (easy-menu-define bogus-menu nil nil ,menu)
- (liece-menu-bogus-filter-constructor "Popup" bogus-menu))))
-
-(defun liece-nick-popup-menu (widget &optional event)
- (let ((menu (copy-sequence liece-nick-popup-menu))
- (pos (widget-event-point event)))
- (when pos
- (goto-char pos)
- (if (eq major-mode 'liece-nick-mode)
- (liece-nick-update-region))
- (liece-menu-popup-menu event menu))))
-
-;;; @ initialize menus
-;;;
-(when (or (featurep 'menubar); XEmacs
- (featurep 'menu-bar))
- (add-hook 'liece-command-mode-hook 'liece-command-define-menus)
- (add-hook 'liece-command-mode-hook 'liece-command-add-menus 'append)
- (add-hook 'liece-add-url-functions 'liece-menu-add-url))
-
-(defun liece-menu-define (menu)
- (eval (list 'easy-menu-define
- (intern (concat (symbol-name (car menu)) "-map"))
- 'liece-command-mode-map (cadr menu)
- '(symbol-value (car menu)))))
-
-(defun liece-command-define-menus-1 (value)
- (dolist (spec value)
- (cond
- ((stringp spec))
- ((vectorp spec)
- (when liece-use-localized-menu
- (aset spec 0 (liece-intl-get-msgstr (aref spec 0)))))
- ((listp spec)
- (liece-command-define-menus-1 spec)))))
-
-(defun liece-command-define-menus ()
- (dolist (menu (reverse liece-menu-alist))
- (let ((value (symbol-value (car menu))))
- (liece-command-define-menus-1 value)
- (liece-menu-define menu))))
-
-(defun liece-command-add-menus ()
- (dolist (menu liece-menu-alist)
- (easy-menu-add (symbol-value (car menu)) liece-command-mode-map)))
-
-(defun liece-menu-add-url (url)
- (when (boundp 'liece-menu-url-menu-map)
- (easy-menu-add-item
- liece-menu-url-menu-map nil
- (vector url (list 'liece-command-browse-url url) t))))
-
-;;; @ menu callbacks
-;;;
-(autoload 'liece-menu-callback-ctcp-version "liece-ctcp" nil t)
-(autoload 'liece-menu-callback-ctcp-userinfo "liece-ctcp" nil t)
-(autoload 'liece-menu-callback-ctcp-help "liece-ctcp" nil t)
-(autoload 'liece-menu-callback-ctcp-clientinfo "liece-ctcp" nil t)
-(autoload 'liece-menu-callback-ctcp-ping "liece-ctcp" nil t)
-
-(defun liece-menu-callback-finger ()
- (interactive)
- (dolist (nick liece-nick-region-nicks)
- (liece-command-finger nick)))
-
-(defun liece-menu-callback-kick ()
- (interactive)
- (dolist (nick liece-nick-region-nicks)
- (liece-command-kick nick)))
-
-(defun liece-menu-callback-mode+o ()
- (interactive)
- (dolist (oper liece-nick-region-opers)
- (setq liece-nick-region-nicks
- (string-list-remove-ignore-case oper liece-nick-region-nicks)))
- (liece-command-mode+o liece-nick-region-nicks))
-
-(defun liece-menu-callback-mode+v ()
- (interactive)
- (dolist (voice liece-nick-region-voices)
- (setq liece-nick-region-nicks
- (string-list-remove-ignore-case voice liece-nick-region-nicks)))
- (liece-command-mode+v liece-nick-region-nicks))
-
-(defun liece-menu-callback-mode-o ()
- (interactive)
- (liece-command-mode-o liece-nick-region-opers))
-
-(defun liece-menu-callback-mode-v ()
- (interactive)
- (liece-command-mode-v liece-nick-region-voices))
-
-(provide 'liece-menu)
-
-;;; liece-menu.el ends here
+++ /dev/null
-;;; liece-message.el --- generate and display message line
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-05-30
-;; Keywords: message
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(defgroup liece-message nil
- "Messages"
- :tag "Message"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-message-brackets
- '(((type notice)
- ("-" "-"))
- ((and (type action) (direction outgoing))
- ("]" "["))
- ((type action)
- ("[" "]"))
- ((and (range private) (direction incoming))
- ("=" "="))
- ((direction outgoing)
- (">" "<"))
- ((range external)
- ("(" ")"))
- (t
- ("<" ">")))
- "Brackets."
- :group 'liece-message)
-
-(defcustom liece-message-tags
- '(((and (direction outgoing) (range private))
- (liece-message-target liece-message-target))
- ((range private)
- (liece-message-speaker liece-message-speaker))
- (t
- (liece-message-speaker
- (concat liece-message-target ":" liece-message-speaker))))
- "Primary tags."
- :group 'liece-message)
-
-(defcustom liece-message-empty-predicate
- (function (lambda (message) (string-equal "" message)))
- "Return non-nil if message is regarded as empty string."
- :group 'liece-message)
-
-(defvar liece-message-type nil)
-(defvar liece-message-target nil)
-(defvar liece-message-speaker nil)
-(defvar liece-message-direction nil)
-
-(defun liece-message-predicate (val)
- (cond
- ((null val)
- nil)
- ((eq val t)
- t)
- ((listp val)
- (let ((pred (pop val)))
- (cond
- ((eq pred 'or)
- (apply 'liece-or (mapcar 'liece-message-predicate val)))
- ((eq pred 'and)
- (apply 'liece-and (mapcar 'liece-message-predicate val)))
- ((eq pred 'not)
- (not (liece-message-predicate (car val))))
- ((eq pred 'type)
- (eq liece-message-type (car val)))
- ((eq pred 'direction)
- (cond
- ((eq (car val) 'outgoing)
- liece-message-direction)
- ((eq (car val) 'incoming)
- (not liece-message-direction))))
- ((eq pred 'mode)
- (eq liece-command-buffer-mode (car val)))
- ((eq pred 'range)
- (cond
- ((eq (car val) 'private)
- (not (liece-channel-p (liece-channel-real liece-message-target))))
- ((eq (car val) 'external)
- (not (liece-channel-member
- liece-message-target (liece-nick-get-joined-channels
- liece-message-speaker))))))
- ((liece-functionp pred)
- (liece-eval-form (cons pred val)))
- (t
- (liece-message-predicate pred)))))
- (t
- (liece-eval-form val))))
-
-(defun liece-message-brackets-function ()
- (let* ((specs liece-message-brackets) spec
- (brackets
- (catch 'found
- (while specs
- (setq spec (pop specs))
- (if (liece-message-predicate (car spec))
- (throw 'found (cadr spec)))))))
- brackets))
-
-(defun liece-message-tags-function ()
- (let* ((specs liece-message-tags) spec
- (tags
- (catch 'found
- (while specs
- (setq spec (pop specs))
- (if (liece-message-predicate (car spec))
- (throw 'found (cadr spec)))))))
- (list (eval (car tags)) (eval (cadr tags)))))
-
-(defun liece-message-buffer-function ()
- (let* ((target (if (liece-message-predicate
- '(and (range private) (direction incoming)))
- liece-message-speaker
- liece-message-target))
- (buffer (liece-pick-buffer target)))
- (cond
- ((car buffer) buffer)
- (liece-auto-join-partner
- (liece-channel-prepare-partner target)
- (liece-pick-buffer target)))))
-
-(defun liece-message-parent-buffer (cbuffer)
- (if (or (and (car cbuffer) (liece-frozen (car cbuffer)))
- (and (eq liece-command-buffer-mode 'channel)
- liece-current-channel
- (not (liece-channel-equal liece-message-target
- liece-current-channel)))
- (and (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partner
- (not (eq liece-message-direction 'outgoing))
- (or
- (not (liece-nick-equal liece-message-speaker
- liece-current-chat-partner))
- (not (liece-nick-equal liece-message-target
- (liece-current-nickname))))))
- (append liece-D-buffer liece-O-buffer)
- liece-D-buffer))
-
-;;;###liece-autoload
-(defun liece-display-message (temp)
- (let* ((brackets (liece-message-brackets-function))
- (tags (liece-message-tags-function))
- (buffer (liece-message-buffer-function))
- (parent (liece-message-parent-buffer buffer)))
- (liece-insert buffer
- (concat (car brackets) (car tags) (cadr brackets)
- " " temp "\n"))
- (liece-insert parent
- (concat (car brackets) (cadr tags) (cadr brackets)
- " " temp "\n"))
- (run-hook-with-args 'liece-display-message-hook temp)))
-
-(provide 'liece-message)
-
-;;; liece-message.el ends here
+++ /dev/null
-;;; liece-minibuf.el --- Minibuffer custom completion.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-02-02
-;; Revised: 1999-02-02
-;; Keywords: minibuffer, completion
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-compat)
-(require 'liece-intl)
-(require 'liece-nick)
-
-(defvar liece-minibuffer-map nil)
-(defvar liece-minibuffer-complete-function nil)
-
-(autoload 'completing-read-multiple "crm")
-(defvar crm-separator)
-
-(unless liece-minibuffer-map
- (setq liece-minibuffer-map
- (let ((map (make-sparse-keymap)))
- (set-keymap-parent map minibuffer-local-map)
- (define-key map " " nil)
- (define-key map "\t" 'liece-minibuffer-complete)
- (define-key map "\r" 'exit-minibuffer)
- (define-key map "\n" 'exit-minibuffer)
- map)))
-
-(defun liece-minibuffer-complete ()
- (interactive)
- (if (and liece-minibuffer-complete-function
- (fboundp liece-minibuffer-complete-function))
- (funcall liece-minibuffer-complete-function)))
-
-(defun liece-minibuffer-parse-modes ()
- (save-excursion
- (let (preceding-char (state 'flag) type)
- (beginning-of-buffer)
- (while (not (eobp))
- (forward-char)
- (setq preceding-char (char-before))
- (cond
- ((and (memq state '(flag arg))
- (or (char-equal preceding-char ?+)
- (char-equal preceding-char ?-)))
- (setq state 'mode
- type nil))
- ((and (eq state 'mode) (char-equal preceding-char ? ))
- (setq state 'arg))
- ((and (eq state 'mode) (memq preceding-char '(?o ?v)))
- (setq type (nconc type (list 'nick preceding-char
- (char-before (1- (point)))))))
- ((and (eq state 'mode) (eq preceding-char ?b))
- (setq type (nconc type (list 'ban (char-before (1- (point)))))))))
- (cons state type))))
-
-(defun liece-minibuffer-prepare-candidate ()
- (let ((point (point)))
- (skip-syntax-backward "^ ")
- (prog1 (buffer-substring (point) point)
- (goto-char point))))
-
-(defun liece-minibuffer-delete-candidate ()
- (let ((point (point)))
- (skip-syntax-backward "^ ")
- (delete-region (point) point)))
-
-(defun liece-minibuffer-finalize-completion (completion pattern all)
- (cond
- ((eq completion t))
- ((null completion)
- (temp-minibuffer-message (_ "[No match]")))
- ((not (string= pattern completion))
- (liece-minibuffer-delete-candidate)
- (insert completion))
- (t
- (with-output-to-temp-buffer "*Completions*"
- (funcall completion-display-completion-list-function
- (sort all (function (lambda (x y)
- (string-lessp
- (or (car-safe x) x)
- (or (car-safe y) y))))))))))
-
-(defun liece-minibuffer-complete-channel-modes ()
- (let* ((preceding-char (char-before)) completion candidate all
- (modes (mapconcat
- (function car)
- liece-supported-channel-mode-alist ""))
- (nicks (liece-channel-get-nicks))
- uahs
- (context (liece-minibuffer-parse-modes))
- (state (car context)) (type (cdr context)))
- (cond
- ((memq state '(flag mode))
- (temp-minibuffer-message
- (format (_ "[Modes are: %s]") modes)))
- ((and (eq state 'arg) (memq 'ban type))
- (if (memq ?- type)
- (setq uahs (list-to-alist (liece-channel-get-bans)))
- (setq uahs (mapcar
- (function
- (lambda (nick)
- (list (concat nick "!"
- (liece-nick-get-user-at-host nick)))))
- nicks)))
- (setq candidate (liece-minibuffer-prepare-candidate)
- completion (try-completion candidate uahs)
- all (all-completions candidate uahs)))
- ((and (eq state 'arg) (memq 'nick type))
- (let* ((masks (cond ((memq ?o type) (liece-channel-get-operators))
- ((memq ?v type) (liece-channel-get-voices))))
- (nicks
- (if (memq ?- type)
- masks
- (remove-if
- (` (lambda (item)
- (and (stringp item)
- (string-list-member-ignore-case item '(, masks)))))
- nicks))))
- (setq nicks (mapcar (function list) nicks)
- candidate (liece-minibuffer-prepare-candidate)
- completion (try-completion candidate nicks)
- all (all-completions candidate nicks)))))
- (liece-minibuffer-finalize-completion completion candidate all)))
-
-(defun liece-minibuffer-complete-user-modes ()
- (temp-minibuffer-message
- (format
- (_ "[Modes are: %s]")
- (mapconcat (function car) liece-supported-user-mode-alist ""))))
-
-(defun liece-minibuffer-completing-read
- (prompt table &optional predicate require-match initial-input history default)
- (completing-read
- (if default
- (format "%s(default %s) " prompt default)
- prompt)
- table predicate require-match initial-input history default))
-
-(defvar liece-minibuffer-completion-separator ","
- "Separator used for separating strings in `liece-minibuffer-completing-read-multiple'.
-It should be regular expression which doesn't match word-continuent characters.")
-
-(defvar liece-minibuffer-completion-table nil)
-
-(defun liece-minibuffer-completing-read-multiple-1 (string predicate flag)
- "Function used by `liece-minibuffer-completing-read-multiple'.
-The value of STRING is the string to be completed.
-
-The value of PREDICATE is a function to filter possible matches, or
-nil if none.
-
-The value of FLAG is used to specify the type of completion operation.
-A value of nil specifies `try-completion'. A value of t specifies
-`all-completions'. A value of lambda specifes a test for an exact match.
-
-For more information on STRING, PREDICATE, and FLAG, see the Elisp
-Reference sections on 'Programmed Completion' and 'Basic Completion
-Functions'."
- (let ((except
- (butlast
- (split-string string liece-minibuffer-completion-separator)))
- (table
- (copy-sequence liece-minibuffer-completion-table))
- lead)
- (when (string-match
- (concat ".*" liece-minibuffer-completion-separator)
- string)
- (setq lead (substring string 0 (match-end 0))
- string (substring string (match-end 0))))
- (while except
- (setq table (remassoc (car except) table)
- except (cdr except)))
- (if (null flag)
- (progn
- (setq string (try-completion string table predicate))
- (or (eq t string)
- (concat lead string)))
- (if (eq flag 'lambda)
- (eq t (try-completion string table predicate))
- (if flag
- (all-completions string table predicate))))))
-
-(defun liece-minibuffer-completing-read-multiple
- (prompt table &optional predicate require-match initial-input
- history default multiple-candidate)
- "Execute `completing-read' consequently.
-
-See the documentation for `completing-read' for details on the arguments:
-PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HISTORY, DEFAULT."
- (let ((prompt
- (format "%s(punctuate by \"%s\") "
- prompt liece-minibuffer-completion-separator)))
- (if multiple-candidate
- (let ((crm-separator
- liece-minibuffer-completion-separator))
- (completing-read-multiple
- prompt table predicate require-match initial-input
- history default))
- (let ((liece-minibuffer-completion-table
- table))
- (split-string
- (completing-read
- prompt #'liece-minibuffer-completing-read-multiple-1
- predicate require-match initial-input history default)
- liece-minibuffer-completion-separator)))))
-
-(provide 'liece-minibuf)
-
-;;; liece-minibuf.el ends here
+++ /dev/null
-;;; liece-misc.el --- Miscellaneous routines.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-and-compile
- (require 'broken)
- (require 'pccl)
- (require 'invisible)
- (require 'liece-inlines)
- (require 'liece-coding))
-
-(eval-when-compile
- (autoload '_ "liece-intl" nil nil 'macro))
-
-(defun liece-toggle-command-buffer-mode (&optional mode)
- "Toggle command buffer MODE."
- (let ((mode
- (or mode
- (if (eq liece-command-buffer-mode 'chat)
- 'channel
- 'chat)))
- (hide (get 'liece-nick-buffer-mode 'hide)))
- (cond
- ((eq mode 'chat)
- (put 'liece-nick-buffer-mode 'hide t)
- (setq liece-private-indicator "P"))
- (t
- (put 'liece-nick-buffer-mode 'hide nil)
- (setq liece-private-indicator "-")))
- (and (not (eq liece-command-buffer-mode mode))
- (not (eq hide (get 'liece-nick-buffer-mode 'hide)))
- liece-nick-window-auto-hide
- (liece-configure-windows))
- (setq liece-command-buffer-mode mode)
- liece-command-buffer-mode))
-
-(defsubst liece-set-frame-title-format ()
- "Inline function for modifying `frame-title-format'."
- (let ((frame-indicator liece-channel-indicator))
- (when (eq liece-command-buffer-mode 'channel)
- (if liece-display-status-on-channel-indicator
- (setq frame-indicator liece-channel-indicator)
- (setq frame-indicator
- (format "%s: %s [%s]"
- liece-channel-indicator
- (or (and liece-current-channel
- (liece-channel-get-topic))
- "")
- (or (and liece-current-channel
- (liece-channel-get-modes))
- "")))))
- (setq liece-channel-status-indicator frame-indicator)))
-
-(defsubst liece-set-channel-indicator ()
- "Inline-function for modifying `liece-channel-indicator'."
- (if (eq liece-command-buffer-mode 'chat)
- (setq liece-channel-indicator
- (if liece-current-chat-partner
- (format (_ "Chatting with %s")
- liece-current-chat-partner)
- (_ "No partner")))
- (setq liece-channel-indicator
- (if liece-current-channel
- (concat liece-current-channel
- (if liece-display-status-on-channel-indicator
- (format ": %s [%s]"
- (or (and liece-current-channel
- (liece-channel-get-topic))
- "")
- (or (and liece-current-channel
- (liece-channel-get-modes))
- ""))
- ""))
- (_ "No channel"))))
- (with-current-buffer liece-command-buffer
- (force-mode-line-update))
- (if liece-display-frame-title
- (liece-set-frame-title-format)))
-
-(defun liece-set-beep (buffer &optional arg)
- (with-current-buffer buffer
- (setq liece-beep (if arg (plusp arg) (not liece-beep))
- liece-beep-indicator (if liece-beep "B" "-"))
- (force-mode-line-update)))
-
-(defmacro liece-beep (&optional arg)
- (list 'funcall 'liece-beep-function arg))
-
-(defun liece-freeze (buffer &optional arg)
- (with-current-buffer buffer
- (setq liece-freeze (if arg (plusp arg) (not liece-freeze))
- liece-freeze-indicator (if liece-freeze "F" "-"))
- (force-mode-line-update)))
-
-(defmacro liece-frozen (buffer)
- (list 'with-current-buffer buffer 'liece-freeze))
-
-(defun liece-own-freeze (buffer &optional arg)
- (with-current-buffer buffer
- (setq liece-own-freeze (if arg (plusp arg) (not liece-own-freeze))
- liece-own-freeze-indicator (if liece-own-freeze "M" "-"))
- (force-mode-line-update)))
-
-(defmacro liece-own-frozen (buffer)
- (list 'with-current-buffer buffer 'liece-own-freeze))
-
-(defun liece-ignore-this-p (nick user-at-host)
- ;; Remove entries which are expired.
- (let ((time (current-time)) expire-time)
- (dolist (kill liece-kill-nickname)
- (setq expire-time (if (cdr kill)
- (liece-time-difference time (cdr kill))
- 1))
- (when (< expire-time 0)
- (if (zerop (cadddr kill))
- (liece-insert-info liece-D-buffer
- (format (_ "Ignore timeout for %s expired.\n")
- (car kill))))
- (when (setq kill (string-assoc-ignore-case
- (car kill) liece-kill-nickname))
- (setq liece-kill-nickname (delq kill liece-kill-nickname)
- liece-save-variables-are-dirty t)))))
- ;; Search on `liece-kill-nickname' and return non-nil if matches.
- (unless (run-hook-with-args-until-success
- 'liece-custom-ignore-this-p nick user-at-host)
- (let ((case-fold-search t))
- (member-if
- (lambda (kill)
- (or (liece-nick-equal (car kill) nick)
- (string-match (concat "\\<" (car kill) "\\>") nick)
- (and (string-match "@" (car kill))
- (or (string-equal-ignore-case
- (car kill) user-at-host)
- (string-match (concat "^" (car kill) "$")
- user-at-host)))))
- liece-kill-nickname))))
-
-(defun liece-split-line (line)
- (cond
- ((eq ?: (aref line 0))
- (list (substring line 1)))
- (t
- (let (args)
- (catch 'done
- (while (string-match "^\\([^ ]+\\) +" line)
- (setq args (nconc args (list (match-string 1 line)))
- line (substring line (match-end 0)))
- (and (not (string= "" line)) (eq ?: (aref line 0))
- (setq line (substring line 1))
- (throw 'done nil))))
- (or (string= "" line)
- (setq args (nconc args (list line))))
- args))))
-
-(defmacro liece-message (&rest message)
- `(message "%s: %s"
- (product-name (product-find 'liece-version))
- (format ,@message)))
-
-(defmacro liece-insert-change (buffer msg)
- `(liece-insert ,buffer (concat liece-change-prefix ,msg)))
-
-(defmacro liece-insert-notice (buffer msg)
- `(liece-insert ,buffer (concat liece-notice-prefix ,msg)))
-
-(defmacro liece-insert-broadcast (buffer msg)
- `(liece-insert ,buffer (concat liece-broadcast-prefix ,msg)))
-
-(defmacro liece-insert-wallops (buffer msg)
- `(liece-insert ,buffer (concat liece-wallops-prefix ,msg)))
-
-(defmacro liece-insert-error (buffer msg)
- `(liece-insert ,buffer (concat liece-error-prefix ,msg)))
-
-(defmacro liece-insert-info (buffer msg)
- `(liece-insert ,buffer (concat liece-info-prefix ,msg)))
-
-(defmacro liece-insert-timestamp (buffer msg)
- `(liece-insert ,buffer (concat liece-timestamp-prefix ,msg)))
-
-(defmacro liece-insert-dcc (buffer msg)
- `(liece-insert ,buffer (concat liece-dcc-prefix ,msg)))
-
-(defmacro liece-insert-client (buffer msg)
- `(liece-insert ,buffer (concat liece-client-prefix ,msg)))
-
-(defmacro liece-own-message (message)
- `(if (eq liece-command-buffer-mode 'channel)
- (liece-own-channel-message ,message)
- (liece-own-channel-message ,message)))
-
-(defmacro liece-own-channel-message (message &optional chnl)
- `(let* ((chnl (or ,chnl (liece-current-channel)))
- (liece-message-target chnl)
- (liece-message-speaker (liece-current-nickname))
- (liece-message-direction 'outgoing))
- (liece-display-message ,message)))
-
-(defmacro liece-own-private-message (message &optional partner)
- `(let* ((partner (or ,partner liece-current-chat-partner))
- (liece-message-target partner)
- (liece-message-speaker (liece-current-nickname))
- (liece-message-direction 'outgoing))
- (liece-display-message ,message)))
-
-(defmacro liece-convert-received-input (input)
- "Convert input before it is processed"
- `(let ((conv-list liece-receive-convert-list)
- (input ,input)
- i f s s1 s2)
- (while (and conv-list (not liece-polling))
- (setq i (car conv-list)
- f (car i)
- s (cadr i)
- s1 (if (stringp f) f (funcall f input))
- s2 (if (stringp s) s (funcall s s1))
- input (replace-in-string input s1 s2)
- conv-list (cdr conv-list)))
- input))
-
-(defun liece-send (&rest args)
- "Send message to IRC server."
- (liece-reset-idle)
- (let ((string (apply #'format args)) send-string len)
- (dolist (convert liece-send-convert-list)
- (setq string (apply #'replace-in-string string convert)))
- (with-current-buffer liece-command-buffer
- (setq send-string (liece-coding-encode-charset-string string)
- send-string (if (string-match "\r$" send-string) send-string
- (concat send-string "\r\n"))
- len (length send-string)))
- (if (< len 512)
- (process-send-string liece-server-process send-string)
- (message "Protocol message too long (%d). Truncated." len)
- (if liece-beep-on-bells (beep)))
- (if (string-match "^list\\s-*" (setq string (downcase string)))
- (setq liece-channel-filter (substring string (match-end 0))))))
-
-(defmacro liece-send-pong ()
- '(liece-send "PONG :%s" liece-tmp-server-name))
-
-(defmacro liece-increment-long-reply-count ()
- '(incf liece-long-reply-count))
-
-(defmacro liece-reset-long-reply-count ()
- '(setq liece-long-reply-count 0))
-
-(defmacro liece-check-long-reply-count ()
- '(when (> liece-long-reply-count liece-long-reply-max)
- (liece-reset-long-reply-count)
- (liece-send-pong)))
-
-(defmacro liece-server-host ()
- '(if (listp liece-server)
- (plist-get liece-server ':host)
- (if (or (string-match "^\\[\\([^]]+\\)\\]:?[0-9]*" liece-server)
- (string-match "^\\([^:]+\\):?[0-9]*" liece-server))
- (match-string 1 liece-server)
- liece-server)))
-
-(defmacro liece-clean-hostname (hostname)
- "Return the arg HOSTNAME, but if is a dotted-quad, put brackets around it."
- `(save-match-data
- (if (string-match "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" ,hostname)
- (concat "[" ,hostname "]")
- ,hostname)))
-
-(defmacro liece-current-nickname ()
- "Our current nickname."
- 'liece-real-nickname)
-
-(defmacro liece-current-channel ()
- "Out current channel."
- 'liece-current-channel)
-
-(defmacro liece-current-channels ()
- "Out current channels."
- 'liece-current-channels)
-
-(defmacro liece-current-chat-partner ()
- "Out current chat partner."
- 'liece-current-chat-partner)
-
-(defmacro liece-current-chat-partners ()
- "Out current chat partners."
- 'liece-current-chat-partners)
-
-(defmacro liece-scroll-if-visible (window)
- `(if ,window (set-window-point ,window (point-max))))
-
-(defmacro liece-pick-buffer-1 (chnl)
- `(cdr (string-assoc-ignore-case ,chnl liece-channel-buffer-alist)))
-
-(defun liece-pick-buffer (chnl)
- (cond
- ((stringp chnl)
- (let ((buf (liece-pick-buffer-1 chnl)))
- (if buf (list buf))))
- ((and chnl (listp chnl))
- (let ((buf (liece-pick-buffer-1 (car chnl))))
- (if buf (cons buf (liece-pick-buffer (cdr chnl))))))
- (t nil)))
-
-\f
-;;; Date and time handling functions
-(defun liece-compose-time-string (time)
- (format-time-string "%A %B %e %Y %R" time))
-
-(defun liece-convert-seconds (time)
- "Convert seconds to printable string."
- (let* ((seconds (string-to-int time))
- (minutes (/ seconds 60))
- (seconds (if minutes (% seconds 60) seconds))
- (hours (/ minutes 60))
- (minutes (if hours (% minutes 60) minutes))
- (days (/ hours 24))
- (hours (if days (% hours 24) hours))
- (ds (and (/= 0 days)
- (format "%d day%s, " days
- (if (> days 1) "s" ""))))
- (hs (and (/= 0 hours)
- (format "%d hour%s, " hours
- (if (> hours 1) "s" ""))))
- (ms (and (/= 0 minutes)
- (format "%d minute%s " minutes
- (if (> minutes 1) "s" ""))))
- (ss (format "%d seconds" seconds)))
- (concat ds hs ms (if seconds ss ""))))
-
-(defmacro liece-insert-time-string ()
- '(insert (substring (current-time-string) 11 16) " "))
-
-(defvar liece-idle-point nil "Timestamp of last idle reset.")
-
-(defmacro liece-reset-idle ()
- "Reset idle counter and return last idle."
- '(prog1 (liece-idle) (setq liece-idle-point (current-time))))
-
-(defmacro liece-idle ()
- "How long has liece been idle."
- '(if liece-idle-point
- (liece-time-difference liece-idle-point (current-time))
- 9999999))
-
-(defmacro liece-ping-if-idle (&optional limit)
- `(if (<= (liece-idle) (or ,limit 120))
- nil
- (liece-command-ping)
- t))
-
-(defmacro liece-maybe-poll ()
- '(liece-send "PING %s" (system-name)))
-
-(defun liece-get-buffer-create (name)
- "Get or create buffer, keep track on its NAME so we can kill it."
- (let ((buffer (get-buffer-create name)))
- (or (memq buffer liece-buffer-list)
- (push buffer liece-buffer-list))
- buffer))
-
-(defmacro liece-message-from-ignored (prefix rest)
- `(save-excursion
- (liece-insert liece-I-buffer (concat ,prefix "::" ,rest "\n"))
- t))
-
-(defmacro liece-is-message-ignored (string buffer)
- `(let (found (case-fold-search t) msg str msgstr who)
- (catch 'ignore
- (when (member ,buffer liece-no-ignore-buffers)
- (throw 'ignore t))
- (dolist (ignore-entry liece-ignore-list)
- ;; Check message type
- (cond
- ((consp (car ignore-entry))
- (setq msg (caar ignore-entry)
- str (cdar ignore-entry)))
- ((fboundp (car ignore-entry))
- (setq msgstr (apply (car ignore-entry) (list ,string))
- msg (car msgstr)
- str (cdr msgstr)))
- (t
- (liece-message
- (_ "Malformed ignore-list, no msg+str function."))))
- ;; Check message from whom
- (cond
- ((listp (cadr ignore-entry))
- (setq who (cadr ignore-entry)))
- ((fboundp (cadr ignore-entry))
- (setq who (apply (cadr ignore-entry) (list ,string))))
- ((not (cadr ignore-entry))
- (liece-message
- (_ "Malformed ignore-list, no user function."))))
- ;; Handle regexp
- (save-match-data
- (when (and (or msg str)
- (and msg
- (string-match
- msg (cadr liece-current-function)))
- (and str (string-match str ,string)))
- (while who
- (when (string-match (car who) (car liece-current-function))
- (setq found t)
- (throw 'ignore t))
- (setq who (cdr who)))))))
- found))
-
-(defmacro liece-time-difference (t0 t1)
- "Difference in seconds between T0 and T1.
-Both T0 and T1 are in the encoded time format."
- `(+ (* (- (car ,t1) (car ,t0)) 65536)
- (- (cadr ,t1)) (cadr ,t0)))
-
-(defmacro liece-time-add (t0 t1)
- "Add T0 seconds to time T1.
-t0 is in `three integer lists'-format returned by `current-time' function."
- `(list (+ (car ,t0) (/ (+ (cadr ,t0) ,t1) 65536))
- (% (+ (cadr ,t0) ,t1) 65536)
- 0))
-
-(defun liece-seconds-to-time (seconds)
- "Convert SECONDS (a floating point number) to an Emacs time structure."
- (list (floor seconds 65536)
- (floor (mod seconds 65536))
- (floor (* (- seconds (ffloor seconds)) 1000000))))
-
-(defmacro liece-generate-hex-timestamp (&optional time)
- "Generate timestamp string as hexadecimal.
-If optional argument TIME is nil, calculate timestamp using current time."
- `(let ((time (or ,time (current-time))))
- (format "%04x%04x" (car time) (cadr time))))
-
-(defmacro liece-hex-timestamp-valid (timestamp limit)
- "Is TIMESTAMP valid within LIMIT?"
- `(let (t1 t2 diff (timestamp ,timestamp))
- (if (not (and (stringp timestamp)
- (string-match
- "^[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$" timestamp)))
- nil
- (setq t1 (liece-hex-string-to-integer (substring timestamp 0 4))
- t2 (liece-hex-string-to-integer (substring timestamp 4 8))
- diff (liece-time-difference
- (list t1 t2 0) (current-time)))
- (or (>= ,limit 0)
- (and (< diff ,limit) (> diff (- 0 ,limit)))))))
-
-(defmacro liece-hex-char-to-integer (character)
- "Convert single hex digit CHARACTER to integer."
- `(if (and (>= ,character ?0) (<= ,character ?9))
- (- ,character ?0)
- (let ((ch (logior ,character 32)))
- (if (and (>= ch ?a) (<= ch ?f))
- (- ch (- ?a 10))
- (error "Invalid hex digit `%c'" ch)))))
-
-(defmacro liece-hex-string-to-integer (hex-string)
- "Convert a HEX-STRING like ffff to the decimal integer."
- `(let ((hex-string ,hex-string) (hex-num 0))
- (while (not (equal hex-string ""))
- (setq hex-num (+ (* hex-num 16)
- (liece-hex-char-to-integer
- (string-to-char hex-string))))
- (setq hex-string (substring hex-string 1)))
- hex-num))
-
-(defmacro liece-remove-properties-region (start end)
- (unless (fboundp 'make-extent)
- `(save-excursion
- (save-restriction
- (narrow-to-region ,start ,end)
- (goto-char (point-min))
- (let (start)
- (while (setq start (next-single-property-change
- (point) 'invisible))
- (when (invisible-p start)
- (delete-region start (next-visible-point start))
- (goto-char start))
- (remove-text-properties (point-min)(point-max) '(face))))))))
-
-(provide 'liece-misc)
-
-;;; liece-misc.el ends here
+++ /dev/null
-;;; liece-modules.el --- Module definitions.
-;; Copyright (C) 1999 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-04-12
-;; Revised: 1999-03-02
-;; Keywords: IRC, liece, APEL
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(defvar liece-modules-to-compile
- '(queue-m
- gettext
- liece-clfns
- liece-handler
- liece-compat
- liece-version
- liece-vars
- liece-globals
- liece-inlines
- liece-filter
- liece-dcc
- liece-menu
- liece-000
- liece-200
- liece-300
- liece-400
- liece-500
- liece-nick
- liece-channel
- liece-commands
- liece-ctcp
- liece-q-el
- liece-message
- liece-handle
- liece-hilit
- liece-intl
- liece-mail
- liece-minibuf
- liece-misc
- liece-tcp
- liece-url
- liece-x-face
- liece-window
- liece))
-
-(require 'emu)
-(if (featurep 'xemacs)
- (add-to-list 'liece-modules-to-compile 'liece-xemacs)
- (add-to-list 'liece-modules-to-compile 'liece-emacs)
- (if (fboundp 'set-face-stipple)
- (add-to-list 'liece-modules-to-compile 'bitmap-stipple)))
-
-(when (featurep 'mule)
- (add-to-list 'liece-modules-to-compile 'liece-coding))
-
-(condition-case ()
- (progn
- (require 'pccl)
- (require 'ccl))
- (error nil))
-
-(require 'broken)
-
-(unless-broken ccl-usable
- (add-to-list 'liece-modules-to-compile 'liece-q-ccl))
-
-(condition-case ()
- (require 'cus-face)
- (file-error nil))
-
-(setq liece-modules (cons 'liece-setup
- (delq 'queue-m liece-modules-to-compile)))
-
-(provide 'liece-modules)
-
-;;; liece-modules.el ends here
+++ /dev/null
-;;; liece-nick.el --- Various facility for nick operation.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-hilit)
-
-(defalias 'liece-nick-set-operator 'liece-channel-set-operator)
-(defalias 'liece-nick-set-voice 'liece-channel-set-voice)
-(defalias 'liece-nick-equal 'string-equal-ignore-case)
-
-(defun liece-nick-member (nick nicks)
- "Return non-nil if NICK is member of NICKS."
- (member-if
- (lambda (item)
- (and (stringp item) (liece-nick-equal nick item)))
- nicks))
-
-(defvar liece-nick-insert-hook nil)
-(defvar liece-nick-replace-hook nil)
-
-(define-widget 'liece-nick-push-button 'push-button
- "A nick button."
- :action 'liece-nick-popup-menu)
-
-(defcustom liece-nick-sort-nicks nil
- "If t, sort nick list in each time."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-nick-sort-predicate 'string-lessp
- "Function for sorting nick buffers."
- :type 'function
- :group 'liece-vars)
-
-;;; @ internal access methods
-;;;
-(defmacro liece-nick-get-joined-channels (nick)
- "Return channels as list NICK is joined."
- `(get (intern ,nick liece-obarray) 'chnl))
-
-(defmacro liece-nick-get-user-at-host (nick)
- "Return user-at-host as string NICK is joined."
- `(get (intern ,nick liece-obarray) 'user-at-host))
-
-(defmacro liece-nick-set-user-at-host (nick uah)
- "Set user at host as string NICK is joined."
- `(put (intern ,nick liece-obarray) 'user-at-host ,uah))
-
-(defmacro liece-nick-mark-as-apart (nick)
- "Mark NICK is temporary apart."
- `(put (intern ,nick liece-obarray) 'part t))
-
-(defmacro liece-nick-unmark-as-apart (nick)
- "Mark NICK is temporary apart."
- `(put (intern ,nick liece-obarray) 'part nil))
-
-(defmacro liece-nick-get-modes (nick)
- "Return modes as string NICK is joined."
- `(get (intern ,nick liece-obarray) 'mode))
-
-(defmacro liece-nick-add-mode (mode &optional nick)
- "Add MODE as char to NICK."
- `(let* ((n (intern ,nick liece-obarray))
- (modes (string-to-char-list (or (get n 'mode) ""))))
- (put n 'mode (mapconcat #'char-to-string
- (or (memq ,mode modes)
- (cons ,mode modes)) ""))))
-
-(defmacro liece-nick-remove-mode (mode &optional nick)
- "Remove MODE as char to NICK."
- `(let* ((n (intern ,nick liece-obarray))
- (modes (string-to-char-list (or (get n 'mode) ""))))
- (delq ,mode modes)
- (put n 'mode (mapconcat #'char-to-string modes ""))))
-
-(defmacro liece-nick-set-mode (val mode &optional nick)
- "Set MODE as char to CHNL."
- `(if ,val
- (liece-nick-add-mode ,mode ,nick)
- (liece-nick-remove-mode ,mode ,nick)))
-
-(defmacro liece-nick-strip (nick)
- `(if (and ,nick (memq (aref ,nick 0) '(?@ ?+ ? )))
- (substring ,nick 1)
- ,nick))
-
-(defmacro liece-nick-normalize (nick)
- `(if (and ,nick (memq (aref ,nick 0) '(?@ ?+ ? )))
- ,nick
- (concat " " ,nick)))
-
-;;; @ display
-;;;
-(defun liece-nick-insert (nick)
- ;; Find sorted position
- (cond
- ((and (eq liece-nick-sort-nicks t)
- (liece-functionp liece-nick-sort-predicate))
- (let (nicks found)
- (goto-char (point-min))
- (while (and (not (eobp)) (not found))
- (if (condition-case nil
- (funcall liece-nick-sort-predicate
- (liece-nick-strip nick)
- (widget-value (widget-at (1+ (point)))))
- (void-function nil))
- (setq found t)
- (beginning-of-line 2)))))
- ((eq liece-nick-sort-nicks 'reverse)
- (goto-char (point-min)))
- (t (goto-char (point-max))))
-
- (insert (substring nick 0 1))
- (let ((st (point)) (nick (liece-nick-strip nick)))
- (insert nick)
- (when liece-highlight-mode
- (liece-widget-convert-button
- 'liece-nick-push-button st (point) nick))
- (insert "\n")
- (run-hook-with-args 'liece-nick-insert-hook st (point))))
-
-(defun liece-nick-replace (old new &optional limit regexp)
- (if regexp
- (setq old (concat "^\\(" old "\\)$"))
- (setq old (concat "^\\([ @+]\\)\\(" (regexp-quote old) "\\)$")))
- (let (case-fold-search beg end)
- (when (re-search-forward old limit t)
- (unless regexp
- (setq new (concat (match-string 1) new)))
- (if (and (eq liece-nick-sort-nicks t)
- (liece-functionp liece-nick-sort-predicate))
- (progn
- (delete-region (match-beginning 0)
- (progn (goto-char (match-end 0))
- (forward-char) (point)))
- (liece-nick-insert new))
- (condition-case nil
- (widget-delete (widget-at (1+ (point))))
- (void-function nil))
- (replace-match new t t)
- (setq end (point)
- beg (progn (beginning-of-line) (1+ (point))))
- (when liece-highlight-mode
- (liece-widget-convert-button
- 'liece-nick-push-button beg end (substring new 1)))
- (run-hook-with-args 'liece-nick-replace-hook beg end)))))
-
-;;;###liece-autoload
-(defun liece-command-toggle-nick-buffer-mode ()
- (interactive)
- (when (and (eq liece-command-buffer-mode 'channel)
- (get-buffer liece-nick-buffer))
- (setq liece-nick-buffer-mode (not liece-nick-buffer-mode)))
- (liece-configure-windows))
-
-(defmacro liece-nick-buffer-create (chnl)
- `(with-current-buffer
- (liece-get-buffer-create (format liece-nick-buffer-format ,chnl))
- (unless (eq major-mode 'liece-nick-mode)
- (liece-nick-mode))
- (set-alist 'liece-nick-buffer-alist ,chnl (current-buffer))
- (current-buffer)))
-
-(defun liece-change-nick-of-1 (old new nicks)
- (if new
- (do ((nicks nicks (cdr nicks)))
- ((or (null nicks)
- (if (liece-nick-equal (caar nicks) old)
- (setcar (car nicks) new))))
- nil)
- (delete-if
- `(lambda (nick) (liece-nick-equal (car nick) ,old))
- nicks)))
-
-(defun liece-change-nick-of-2 (old new nicks)
- (if new
- (do ((nicks nicks (cdr nicks)))
- ((or (not nicks)
- (if (liece-nick-equal (car nicks) old)
- (setcar nicks new))))
- nil)
- (delete-if
- `(lambda (nick) (liece-nick-equal nick ,old))
- nicks)))
-
-(defun liece-change-nick-of (old new)
- (liece-change-nick-of-1 old new liece-nick-alist)
- (let ((chnls (liece-nick-get-joined-channels old)))
- (dolist (chnl chnls)
- (liece-change-nick-of-2 old new (liece-channel-get-nicks chnl))
- (liece-change-nick-of-2 old new (liece-channel-get-operators chnl))
- (liece-change-nick-of-2 old new (liece-channel-get-voices chnl)))))
-
-(defmacro liece-nick-join-1 (user chnl)
- "Add CHNL to list of channels USER belongs to."
- `(let* ((flag (string-to-char user))
- (user (liece-nick-strip ,user))
- (u (intern user liece-obarray))
- (c (intern ,chnl liece-obarray)))
- (or (string-assoc-ignore-case user liece-nick-alist)
- (push (list user) liece-nick-alist))
- (cond
- ((char-equal flag ?@)
- (liece-channel-set-operator ,chnl user t))
- ((char-equal flag ?+)
- (liece-channel-set-voice ,chnl user t)))
- (or (string-list-member-ignore-case ,chnl (get u 'chnl))
- (put u 'chnl (cons ,chnl (get u 'chnl))))
- (or (string-list-member-ignore-case user (get c 'nick))
- (put c 'nick (cons user (get c 'nick))))))
-
-(defmacro liece-nick-part-1 (user chnl)
- "Remove USER information from his CHNL."
- `(let ((u (intern ,user liece-obarray))
- (c (intern ,chnl liece-obarray)))
- (liece-channel-set-operator ,chnl ,user nil)
- (liece-channel-set-voice ,chnl ,user nil)
- (put u 'chnl (string-list-remove-ignore-case ,chnl (get u 'chnl)))
- (put c 'nick (string-list-remove-ignore-case ,user (get c 'nick)))))
-
-;;;###liece-autoload
-(defun liece-nick-join (user chnl)
- (liece-nick-join-1 user chnl)
- (let ((nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist))))
- (with-current-buffer nbuf
- (let (buffer-read-only)
- (liece-nick-insert (liece-nick-normalize user))))))
-
-;;;###liece-autoload
-(defun liece-nick-part (user chnl)
- (let ((nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist))))
- (setq user (liece-nick-strip user))
- (with-current-buffer nbuf
- (let ((case-fold-search t) buffer-read-only)
- (goto-char (point-min))
- (when (re-search-forward (concat "^." (regexp-quote user) "$") nil t)
- (delete-region (match-beginning 0)
- (progn (goto-char (match-end 0))
- (forward-char) (point)))
- (liece-nick-part-1 user chnl))))))
-
-;;;###liece-autoload
-(defun liece-nick-change (old new)
- (let* ((old (liece-nick-strip old)) (new (liece-nick-strip new))
- (chnls (get (intern old liece-obarray) 'chnl)) chnl nbuf)
- (liece-change-nick-of old new)
- (if new
- (put (intern new liece-obarray) 'chnl chnls))
- (unintern old liece-obarray)
- (dolist (chnl chnls)
- (if (null new)
- (liece-nick-part old chnl)
- (setq nbuf (cdr (string-assoc-ignore-case
- chnl liece-nick-buffer-alist)))
- (with-current-buffer nbuf
- (let (buffer-read-only)
- (goto-char (point-min))
- (liece-nick-replace old new)))))))
-
-;;;###liece-autoload
-(defun liece-nick-update (chnl users)
- (let ((c (intern chnl liece-obarray))
- (nbuf (cdr (string-assoc-ignore-case chnl liece-nick-buffer-alist))))
- (mapcar (lambda (prop) (put c prop nil)) '(nick oper voice))
- (with-current-buffer nbuf
- (let (buffer-read-only)
- (liece-kill-all-overlays)
- (erase-buffer)))
- (when (and liece-nick-sort-nicks
- (liece-functionp liece-nick-sort-predicate))
- (setq users (sort users
- (lambda (s1 s2)
- (funcall liece-nick-sort-predicate
- (liece-nick-strip s1)
- (liece-nick-strip s2))))))
- (let (liece-nick-sort-predicate)
- (dolist (user users)
- (liece-nick-join user chnl)))))
-
-(defvar liece-nick-region-nicks nil)
-(defvar liece-nick-region-opers nil)
-(defvar liece-nick-region-voices nil)
-
-;;;###liece-autoload
-(defun liece-nick-update-region ()
- (setq liece-nick-region-nicks nil
- liece-nick-region-opers nil
- liece-nick-region-voices nil)
- (save-excursion
- (let (region nick)
- (if (not (region-active-p))
- (setq region (cons (line-beginning-position)
- (line-beginning-position 2)))
- (setq region (cons (region-beginning) (region-end)))
- (goto-char (car region))
- (setcar region (line-beginning-position))
- (goto-char (cdr region))
- (if (eobp)
- (setcdr region (line-beginning-position))
- (setcdr region (line-beginning-position 2))))
- (save-restriction
- (narrow-to-region (car region) (cdr region))
- (goto-char (point-min))
- (while (not (eobp))
- (setq nick (widget-value (widget-at (1+ (point)))))
- (push nick liece-nick-region-nicks)
- (if (memq (char-after) '(?@ ?+))
- (push nick liece-nick-region-voices))
- (if (eq ?@ (char-after))
- (push nick liece-nick-region-opers))
- (beginning-of-line 2))))))
-
-(defun liece-nick-add-buttons (start end)
- (save-excursion
- (goto-char start)
- (while (re-search-forward
- (eval-when-compile
- (concat "^\\(" liece-time-prefix-regexp "\\)?"
- "[][=<>(][][=<>(]?\\([^:]*:\\)?\\([^][=<>(]+\\)"))
- end t)
- (let* ((nick-start (match-beginning 3))
- (nick-end (match-end 3))
- (nick (buffer-substring nick-start nick-end)))
- (when liece-highlight-mode
- (liece-widget-convert-button
- 'liece-nick-push-button nick-start nick-end nick))))))
-
-;;;###liece-autoload
-(defun liece-nick-redisplay-buffer (chnl)
- (let ((buffer
- (cdr (string-assoc-ignore-case
- chnl liece-nick-buffer-alist)))
- (window (liece-get-buffer-window liece-nick-buffer)))
- (and buffer window
- (with-current-buffer buffer
- (set-window-buffer window buffer)
- (unless (liece-frozen buffer)
- (set-window-start window (point-min)))
- (setq liece-nick-buffer buffer)))))
-
-(provide 'liece-nick)
-
-;;; liece-nick.el ends here
+++ /dev/null
-;;; liece-q-ccl.el --- CTCP binary data quotation in CCL.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-01-31
-;; Revised: 1999-01-31
-;; Keywords: IRC, liece, CTCP
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'broken)
-(require 'pccl)
-
-(eval-and-compile
- (defconst liece-quote-ccl-256-table
- '( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
- 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
- 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
- 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
- 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
- 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
- 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
- 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
- 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
- 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
- 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
- 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
- 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
- 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255)))
-
-(broken-facility ccl-cascading-write
- "Emacs CCL write command does not accept more than 2 arguments."
- (condition-case nil
- (progn
- (define-ccl-program cascading-read-test
- '(1
- (write r0 r1 r2)))
- t)
- (error nil)))
-
-(define-ccl-program liece-quote-ccl-decode
- `(1
- (loop
- (read-if
- (r0 == ?\\)
- ((read-if
- (r1 == ?\\)
- (write r1)
- (branch
- r1
- ,@(mapcar
- (lambda (r1)
- (cond
- ((= r1 (char-int ?a))
- `(write ?\x01))
- ((= r1 (char-int ?n))
- `(write ?\n))
- ((= r1 (char-int ?r))
- `(write ?\r))
- (t
- (if-broken ccl-cascading-write
- `((write r0)
- (write r1))
- `(write r0 r1)))))
- liece-quote-ccl-256-table))))
- (write r0))
- (repeat))))
-
-(define-ccl-program liece-quote-ccl-encode
- `(2
- (loop
- (read-branch
- r0
- ,@(mapcar
- (lambda (r0)
- (cond
- ((= r0 (char-int ?\\))
- `(write-repeat "\\\\"))
- ((= r0 (char-int ?\x01))
- `(write-repeat "\\a"))
- ((= r0 (char-int ?\n))
- `(write-repeat "\\n"))
- ((= r0 (char-int ?\r))
- `(write-repeat "\\r"))
- (t
- `(write-repeat r0))))
- liece-quote-ccl-256-table)))))
-
-(make-ccl-coding-system
- 'liece-quote-ccl-cs ?Q "CTCP Quote Decoder/Encoder"
- 'liece-quote-ccl-decode 'liece-quote-ccl-encode)
-
-(defun liece-quote-ccl-decode-string (string-to-decode)
- (decode-coding-string string-to-decode 'liece-quote-ccl-cs))
-
-(defun liece-quote-ccl-encode-string (string-to-encode)
- (encode-coding-string string-to-encode 'liece-quote-ccl-cs))
-
-(defun liece-quote-ccl-decode-region (min max)
- (decode-coding-region min max 'liece-quote-ccl-cs))
-
-(defun liece-quote-ccl-encode-region (min max)
- (encode-coding-region min max 'liece-quote-ccl-cs))
-
-(defalias 'liece-quote-decode-string 'liece-quote-ccl-decode-string)
-(defalias 'liece-quote-encode-string 'liece-quote-ccl-encode-string)
-
-(defalias 'liece-quote-decode-region 'liece-quote-ccl-decode-region)
-(defalias 'liece-quote-encode-region 'liece-quote-ccl-encode-region)
-
-(provide 'liece-q-ccl)
-
-;;; liece-q-ccl.el ends here
+++ /dev/null
-;;; liece-q-el.el --- CTCP binary data quotation in emacs-lisp.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-01-31
-;; Revised: 1999-01-31
-;; Keywords: IRC, liece, CTCP
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(defconst liece-quote-strings
- '(("\\\\" . "\\") ("\\a" . "\ 1") ("\\n" . "\n") ("\\r" . "\r")))
-
-(defun liece-quote-el-decode-region (start end)
- "Decode binary data between START and END."
- (interactive "r")
- (save-restriction
- (narrow-to-region start end)
- (dolist (pair liece-quote-strings)
- (goto-char (point-min)) (replace-string (car pair) (cdr pair)))))
-
-(defun liece-quote-el-decode-string (string)
- "Decode binary data from STRING."
- (interactive)
- (save-excursion
- (with-temp-buffer
- (insert string)
- (liece-quote-el-decode-string (point-min) (point-max))
- (buffer-substring (point-min) (point-max)))))
-
-(defun liece-quote-el-encode-region (start end)
- "Encode binary data between START and END."
- (interactive "r")
- (save-restriction
- (narrow-to-region start end)
- (goto-char (point-min))
- (while (search-forward "\\" nil t) (insert "\\"))
- (goto-char (point-min))
- (while (search-forward "\ 1" nil t)
- (backward-delete-char 1)
- (insert "\\a"))
- (goto-char (point-min))
- (while (search-forward "\n" nil t)
- (backward-delete-char 1)
- (insert "\\n"))
- (goto-char (point-min))
- (while (search-forward "\r" nil t)
- (backward-delete-char 1)
- (insert "\\r"))))
-
-(defun liece-quote-el-encode-string (string)
- "Encode binary data from STRING."
- (interactive)
- (save-excursion
- (with-temp-buffer
- (erase-buffer)
- (insert string)
- (liece-quote-el-encode-region (point-min) (point-max))
- (buffer-substring (point-min) (point-max)))))
-
-(defalias 'liece-quote-decode-string 'liece-quote-el-decode-string)
-(defalias 'liece-quote-encode-string 'liece-quote-el-encode-string)
-
-(defalias 'liece-quote-decode-region 'liece-quote-el-decode-region)
-(defalias 'liece-quote-encode-region 'liece-quote-el-encode-region)
-
-(provide 'liece-q-el)
-
-;;; liece-q-el.el ends here
-
+++ /dev/null
-;;; liece-tcp.el --- TCP/IP stream emulation.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Masanobu Umeda <umerin@mse.kyutech.ac.jp>
-;; Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-03-16 renamed from tcp.el
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;; Notes on TCP package:
-;;
-;; This package provides a TCP/IP stream emulation for GNU Emacs. If
-;; the function `open-network-stream' is not defined in Emacs, but
-;; your operating system has a capability of network stream
-;; connection, this tcp package can be used for communicating with
-;; NNTP server.
-;;
-;; The tcp package runs inferior process which actually does the role
-;; of `open-network-stream'. The program `tcp' provided with this
-;; package can be used for such purpose. Before loading the package,
-;; compile `tcp.c' and install it as `tcp' in a directory in the emacs
-;; search path. If you modify `tcp.c', please send diffs to the author
-;; of GNUS. I'll include some of them in the next releases.
-
-;;; Code:
-
-(require 'poe)
-(require 'poem)
-
-(eval-when-compile
- (require 'liece-compat)
- (require 'liece-globals))
-
-(defgroup liece-tcp nil
- "TCP/IP Emulation"
- :tag "TCP"
- :prefix "liece-"
- :group 'liece-server)
-
-(defcustom liece-tcp-program "ltcp"
- "The name of the program emulating `open-network-stream' function."
- :type 'file
- :group 'liece-tcp)
-
-(defcustom liece-tcp-default-connection-type 'network
- "TCP/IP Connection type."
- :type '(choice
- (const :tag "Network" network)
- (const :tag "Program" program)
- (const :tag "SSLeay" ssl)
- (const :tag "rlogin" rlogin))
- :group 'liece-tcp)
-
-(defvar liece-tcp-connection-type liece-tcp-default-connection-type)
-
-(eval-and-compile
- (autoload 'open-ssl-stream "ssl")
- (defvar ssl-program-arguments))
-
-(defcustom liece-tcp-ssl-protocol-version "3"
- "SSL protocol version."
- :type 'integer
- :group 'liece-tcp)
-
-(defcustom liece-tcp-ssl-default-service 993
- "Default SSL service."
- :type 'liece-service-spec
- :group 'liece-tcp)
-
-(defcustom liece-tcp-rlogin-program "rsh"
- "Program used to log in on remote machines.
-The default is \"rsh\", but \"ssh\" is a popular alternative."
- :type 'file
- :group 'liece-tcp)
-
-(defcustom liece-tcp-relay-host "localhost"
- "Remote host address."
- :type 'file
- :group 'liece-tcp)
-
-(defcustom liece-tcp-rlogin-parameters '("socket" "-q")
- "Parameters to `liece-tcp-open-rlogin'."
- :type 'list
- :group 'liece-tcp)
-
-(defcustom liece-tcp-rlogin-user-name nil
- "User name on remote system when using the rlogin connect method."
- :type 'string
- :group 'liece-tcp)
-
-(defvar liece-tcp-stream-alist
- '((network open-network-stream)
- (program liece-tcp-open-program-stream)
- (ssl liece-tcp-open-ssl-stream)
- (rlogin liece-tcp-open-rlogin-stream)))
-
-\f
-;;;###liece-autoload
-(defun liece-open-network-stream (name buffer host service)
- (let ((method
- (nth 1 (assq liece-tcp-connection-type
- liece-tcp-stream-alist))))
- (or method
- (error "Invalid stream"))
- (funcall method name buffer host service)))
-
-(defun liece-tcp-open-program-stream (name buffer host service)
- "Open a TCP connection for a service to a host.
-Returns a subprocess-object to represent the connection.
-Input and output work as for subprocesses; `delete-process' closes it.
-Args are NAME BUFFER HOST SERVICE.
-NAME is name for process. It is modified if necessary to make it unique.
-BUFFER is the buffer (or `buffer-name') to associate with the process.
- Process output goes at end of that buffer, unless you specify
- an output stream or filter function to handle the output.
- BUFFER may be also nil, meaning that this process is not associated
- with any buffer
-Third arg is name of the host to connect to.
-Fourth arg SERVICE is name of the service desired, or an integer
- specifying a service number to connect to."
- (let ((proc (start-process name buffer
- liece-tcp-program
- host
- (if (stringp service)
- service
- (int-to-string service)))))
- (process-kill-without-query proc)
- ;; Return process
- proc))
-
-(defun liece-tcp-open-ssl-stream-1 (name buffer server service extra-arg)
- (let* ((service (or service liece-tcp-ssl-default-service))
- (ssl-program-arguments (list extra-arg "-connect"
- (format "%s:%d" server service)))
- (process (open-ssl-stream name buffer server service)))
- (and process (memq (process-status process) '(open run))
- process)))
-
-(defun liece-tcp-open-ssl-stream (name buffer server service)
- (if (string-equal liece-tcp-ssl-protocol-version "2")
- (liece-tcp-open-ssl-stream-1
- name buffer server service "-ssl2")
- (or (liece-tcp-open-ssl-stream-1
- name buffer server service "-ssl3")
- (liece-tcp-open-ssl-stream-1
- name buffer server service "-ssl2"))))
-
-(defun liece-tcp-open-rlogin-stream (name buffer server service)
- "Open a connection to SERVER using rsh."
- (let* ((service (if (stringp service)
- service
- (int-to-string service)))
- (args `(,liece-tcp-rlogin-program
- ,@(if liece-tcp-rlogin-user-name
- (list "-l" liece-tcp-rlogin-user-name))
- ,liece-tcp-relay-host
- ,@liece-tcp-rlogin-parameters ,server ,service))
- (process-connection-type nil))
- (apply #'start-process-shell-command name buffer args)))
-
-(provide 'liece-tcp)
-
-;;; liece-tcp.el ends here
+++ /dev/null
-;;; liece-url.el --- URL browsing.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-intl)
- (require 'liece-menu))
-
-(defvar browse-url-browser-function)
-
-(defgroup liece-url nil
- "URL Browsing in IRC buffer."
- :group 'liece-vars)
-
-(defcustom liece-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*[-a-zA-Z0-9_=#$@~`%&*+|\\/]"
- "Regular expression that matches URLs."
- :group 'liece-url
- :type 'regexp)
-
-(defcustom liece-url-browser-function browse-url-browser-function
- "Default URL Browser."
- :group 'liece-url)
-
-(defcustom liece-url-alist nil
- "Alist for URL completion."
- :type 'alist
- :group 'liece-url)
-
-(define-widget 'liece-url-link 'link
- "A link to an www page."
- :help-echo 'widget-url-link-help-echo
- :action 'liece-url-link-action)
-
-(defun liece-url-link-action (widget &optional event)
- (let ((browse-url-browser-function liece-url-browser-function))
- (browse-url (widget-value widget))))
-
-(defvar liece-add-url-functions nil)
-
-(defun liece-url-add-buttons (start end)
- (save-excursion
- (goto-char start)
- (while (re-search-forward liece-url-regexp end t)
- (let ((url (match-string 0)))
- (if liece-highlight-mode
- (liece-widget-convert-button
- 'url-link (match-beginning 0)(match-end 0) url))
- (unless (assoc url liece-url-alist)
- (push (list url) liece-url-alist)
- (run-hook-with-args 'liece-add-url-functions url))))))
-
-(defun liece-command-browse-url (&optional url)
- (interactive
- (let (url)
- (if (and current-prefix-arg (eq current-prefix-arg '-))
- (setq url (caar liece-url-alist))
- (setq url (completing-read (_ "Open URL:") liece-url-alist)))
- (list url)))
- (let ((browse-url-browser-function liece-url-browser-function))
- (browse-url url)))
-
-(defun url-irc-liece (host port channel user password)
- (let ((liece-server
- `(:host ,host :service ,port :password ,password))
- (liece-startup-channel channel))
- (liece)))
-
-(provide 'liece-url)
-
-;;; liece-url.el ends here
+++ /dev/null
-;;; liece-vars.el --- Customization.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-compat)
- (require 'liece-globals))
-
-;; User modifiable variables.
-(defgroup liece nil
- "liece specific customize group")
-
-(defgroup liece-vars nil
- "liece user customizable variables"
- :tag "Variables"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-saved-forms
- (purecopy
- '(liece-kill-nickname
- liece-server-alist
- liece-channel-buffer-mode
- liece-nick-buffer-mode
- liece-friends))
- "Variables whose values are saved via command liece-command-save-vars."
- :type 'string
- :group 'liece-vars)
-
-(defgroup liece-look nil
- "Look & Feels"
- :tag "Look"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-command-window-height 4
- "How large should command window be on startup."
- :type 'integer
- :group 'liece-look)
-
-(defcustom liece-truncate-partial-width-windows t
- "If non-nil, truncate lines in splitting windows such as others buffer."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-use-full-window t
- "If non-nil, IRCHAT will use whole Emacs window."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-display-frame-title t
- "If non-nil, IRCHAT displays channel information on frame title."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-display-unread-mark nil
- "If non-nil, display unread mark as XEmacs glyphs or character to channel
-list buffer."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-channel-unread-character "!"
- "Channel unread character."
- :type 'character
- :group 'liece-look)
-
-(defcustom liece-tab-stop-list '(2 4 6 8 10 12 14 16)
- "List of tab stop positions in dialogue buffer."
- :type '(repeat integer)
- :group 'liece-look)
-
-(defcustom liece-icon-directory nil
- "Normal position of liece icons."
- :type 'directory
- :group 'liece-look)
-
-(defcustom liece-nick-image-alist
- '((?@ . "ball.red.xpm")
- (? . "ball.blank.xpm")
- (?+ . "ball.gray.xpm"))
- "Normal and deformed faces for operators and voices."
- :type '(repeat (list (character :tag "Mark")
- (string :tag "Image")))
- :group 'liece-look)
-
-(defcustom liece-inhibit-startup-message nil
- "If non-nil, the startup message will not be displayed.
-This variable is used before `.liece/init.el' is loaded, so it should
-be set in `.emacs' instead."
- :group 'liece-look
- :type 'boolean)
-
-(defcustom liece-want-traditional nil
- "Do we want /commands."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-command-window-on-top nil
- "If non-nil, the command window will be put at the top of the screen."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-one-buffer-mode nil
- "When non-nil, liece will put up only a dialogue buffer.
-Useful for those (perverts) who use 24 line terminals."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-display-status-on-channel-indicator nil
- "When non-nil, liece will display channel topic on modeline."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-directory "~/.liece"
- "Where to look for data files."
- :type 'directory
- :group 'liece-vars)
-
-(defcustom liece-variables-file (expand-file-name "init.el" liece-directory)
- "Where to look for variables. Helps to remove clutter from your .emacs.
-This feature is most likely to dissappear in near future. The preferred
-way is to put liece variables on .emacs or file loaded from there."
- :type 'file
- :group 'liece-vars)
-
-(defcustom liece-variables-files
- (list liece-variables-file)
- "Where to look for variables. Helps to remove clutter from your .emacs.
-This feature is most likely to dissappear in near future. The preferred
-way is to put liece variables on .emacs or file loaded from there."
- :type '(repeat (file :tag "Initialization File"))
- :group 'liece-vars)
-
-;; Where to connect.
-(defgroup liece-server nil
- "Server Settings"
- :tag "Server"
- :prefix "liece-"
- :group 'liece)
-
-(defgroup liece-channel nil
- "Channel Settings"
- :tag "Channel"
- :prefix "liece-"
- :group 'liece)
-
-(define-widget 'liece-service-spec 'radio
- "Edit service spec entries"
- :convert-widget 'liece-service-spec-convert)
-
-(defun liece-service-spec-convert (widget)
- (widget-put widget :args '((integer :tag "Port Number")
- (string :tag "Name")))
- widget)
-
-(define-widget 'liece-server-spec 'repeat
- "Edit server spec entries"
- :match (lambda (widget value)
- (eval
- (` (and
- (,@ (mapcar
- (lambda (entry)
- (or (stringp (cdr entry))
- (listp (cdr entry))))
- value))))))
- :convert-widget 'liece-server-spec-convert)
-
-(defun liece-server-spec-convert (widget)
- (let* ((host '(const :format "" :value :host))
- (service '(const :format "" :value :service))
- (host
- (` (group :inline t (, host) (string :tag "Host"))))
- (service
- (` (group :inline t (, service) liece-service-spec)))
- (spec
- (` (cons
- (string :tag "Name")
- (radio (string :tag "Host")
- (list (, host) (, service))))))
- (args (` ((, spec)))))
- (widget-put widget :args args)
- widget))
-
-(defcustom liece-server-alist
- '(("WIDE Project Kyoto NOC, Japan" . "irc.kyoto.wide.ad.jp")
- ("WIDE Project Tokyo NOC, Japan" . "irc.tokyo.wide.ad.jp")
- ("TDI RCAC / 6660" :host "irc.rcac.tdi.co.jp" :service 6660)
- ("TDI RCAC / 6661" :host "irc.rcac.tdi.co.jp" :service 6661)
- ("TDI RCAC / 6662" :host "irc.rcac.tdi.co.jp" :service 6662)
- ("TDI RCAC / 6663" :host "irc.rcac.tdi.co.jp" :service 6663)
- ("TDI RCAC / 6664" :host "irc.rcac.tdi.co.jp" :service 6664)
- ("TDI RCAC / 6665" :host "irc.rcac.tdi.co.jp" :service 6665)
- ("TDI RCAC / 6666" :host "irc.rcac.tdi.co.jp" :service 6666)
- ("TDI RCAC" . "irc.rcac.tdi.co.jp")
- ("TDI RCAC, 6Bone" . "irc6.rcac.tdi.co.jp")
- ("RACE, University of Tokyo" . "irc.race.u-tokyo.ac.jp")
- ("Hokkaido University, Sapporo, Japan" . "irc.huie.hokudai.ac.jp")
- ("KARRN Hakozaki NOC" . "irc.karrn.ad.jp")
- ("Tohoku University, Japan" . "irc.tohoku.ac.jp")
- ("DTI, Akasaka Tokyo, Japan" . "irc.dti.ne.jp"))
- "IRC server assoc-list which is used for input IRC server."
- :type 'liece-server-spec
- :group 'liece-server)
-
-(defcustom liece-server (or (getenv "IRCSERVER") nil)
- "Name of the host running the IRC server.
-Value initialized from the IRCSERVER environment variable if one is set"
- :type 'string
- :group 'liece-server)
-
-(defcustom liece-service
- (let ((ircport-env (getenv "IRCPORT")))
- (if ircport-env
- (if (> (string-to-int ircport-env) 0)
- (string-to-int ircport-env)
- ircport-env)
- 6667))
- "IRC service name or (port) number."
- :type 'liece-service-spec
- :group 'liece-server)
-
-(defcustom liece-my-userhost nil
- "You can explicitly indicate own hostname here."
- :type '(radio (string :tag "Hostname")
- (const :tag "Autodetect" nil))
- :group 'liece-server)
-
-(defcustom liece-password (or (getenv "IRCPASSWORD") nil)
- "Your password when connecting to server."
- :type '(radio (string :tag "Password")
- (const :tag "No" nil))
- :group 'liece-server)
-
-(defcustom liece-name (or (getenv "IRCNAME") (user-real-login-name))
- "The nickname you want to use in IRC.
-Default is the environment variable IRCNICK, or your login name."
- :type 'string
- :group 'liece-server)
-
-(defcustom liece-nickname (or (getenv "IRCNICK") (user-real-login-name))
- "The nickname you want to use in IRC.
-Default is the environment variable IRCNICK, or your login name."
- :type 'string
- :group 'liece-server)
-
-(defcustom liece-nick-max-length 9
- "Maximum length of the nickname."
- :type 'integer
- :group 'liece-server)
-
-(defvar liece-real-nickname nil)
-
-(defcustom liece-startup-channel nil
- "The channel to join automatically at startup.
-If nil, do not join any channel."
- :type '(radio (string :tag "Channels")
- (const nil))
- :group 'liece-channel)
-
-(defcustom liece-startup-channel-list nil
- "The channel list to join automatically at startup.
-If nil, do not join any channel."
- :type '(repeat (string :tag "Startup Channel"))
- :group 'liece-channel)
-
-(defcustom liece-auto-join-partner t
- "Whether join automatically at arriving private message."
- :type 'boolean
- :group 'liece-channel)
-
-(defcustom liece-reconnect-automagic nil
- "Automatic reconnection, default is disabled."
- :type 'boolean
- :group 'liece-server)
-
-(defcustom liece-ask-for-nickname nil
- "Ask for nickname if liece was entered with \\[universal-argument]."
- :type 'boolean
- :group 'liece-server)
-
-(defcustom liece-ask-for-password nil
- "Ask for password when connecting to server."
- :type 'boolean
- :group 'liece-server)
-
-(defcustom liece-ask-for-channel-password nil
- "Ask for channel password when joining channel with password."
- :type 'boolean
- :group 'liece-server)
-
-(defcustom liece-reconnect-with-password nil
- "Auto recconect to server with password after incorrect password."
- :type 'boolean
- :group 'liece-server)
-
-(defcustom liece-grow-tail "_"
- "Add liece-grow-tail to nick when reconnecting.
-Otherwise you might get killed again if automagic reconnect is too fast."
- :type 'string
- :group 'liece-server)
-
-(defcustom liece-auto-iterate-nick nil
- "When nickname has already been in use, grow-tail automagically."
- :type 'boolean
- :group 'liece-server)
-
-(defvar liece-after-registration nil
- "After my registration.")
-
-(defvar liece-status-message-string nil)
-
-(defvar liece-channel-unread-list nil)
-
-;; Hooks.
-(defgroup liece-hook nil
- "Hooks"
- :tag "Hooks"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-command-mode-hook nil
- "A hook for IRCHAT command mode."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-dialogue-mode-hook nil
- "A hook for IRCHAT dialogue mode."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-others-mode-hook nil
- "A hook for IRCHAT others mode."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-channel-mode-hook nil
- "A hook for IRCHAT Channel mode."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-nick-mode-hook nil
- "A hook for IRCHAT nick mode."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-exit-hook nil
- "A hook executed when signing off IRC."
- :type 'hook
- :group 'liece-hook)
-
-(defcustom liece-before-kill-emacs-hook nil
- "A hook executed when exitting Emacs."
- :type 'hook
- :group 'liece-hook)
-
-;; Channel buffers.
-(defcustom liece-channel-buffer-mode nil
- "When non-nil, liece will display a channel buffer."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-channel-window-height-percent 63
- "How large percent should Current channel window be on startup."
- :type 'integer
- :group 'liece-look)
-
-(defcustom liece-default-beep nil
- "If non nil, channel buffer local beep flag is on at starting."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-default-freeze nil
- "If non nil, channel buffer local freeze flag is on at starting."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-default-own-freeze nil
- "If non nil, channel buffer local own freeze flag is on at starting."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-default-channel-binding nil
- "The channel list to bind the channel number when joining."
- :type '(repeat (radio (string :tag "Bound Channel")
- (const nil)))
- :group 'liece-channel)
-
-(defcustom liece-default-partner-binding nil
- "The chat partner list to bind the partner's number."
- :type '(repeat (radio (string :tag "Bound Partner")
- (const nil)))
- :group 'liece-partner)
-
-;; Nick buffers.
-(defcustom liece-nick-buffer-mode nil
- "When non-nil, liece will display a nick list buffer."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-nick-window-width-percent 18
- "How large percent should Current nick list window be on startup."
- :type 'integer
- :group 'liece-look)
-
-(defcustom liece-nick-window-auto-hide t
- "Hide nick window in priv buffer automatically."
- :type 'boolean
- :group 'liece-look)
-
-;; Channel list buffer.
-(defcustom liece-channel-list-buffer-mode nil
- "When non-nil, liece will display a channel list buffer."
- :type 'boolean
- :group 'liece-look)
-
-(defcustom liece-channel-list-window-width-percent 18
- "How large percent should Current channel list window be on startup."
- :type 'integer
- :group 'liece-look)
-
-;; Highlight.
-(defcustom liece-highlight-mode nil
- "If non nil, IRC buffer is highlighted by specific rule."
- :type 'boolean
- :group 'liece-highlight)
-
-(defcustom liece-highlight-pattern "$^"
- "If non nil, this pattern used for user defined highlight rule."
- :type '(regexp :tag "Highlighting Pattern")
- :group 'liece-highlight)
-
-;; DCC
-(defgroup liece-dcc nil
- "DCC Settings"
- :tag "DCC"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-dcc-program "ldcc"
- "Name of the external dcc-program.
-Current version takes the one which is earlier in path \(if many\)."
- :type '(file :tag "DCC program path")
- :group 'liece-dcc)
-
-(defcustom liece-dcc-directory "~/tmp"
- "Directory where liece-dcc puts its files."
- :type 'directory
- :group 'liece-dcc)
-
-(defcustom liece-dcc-port 0
- "Default port for DCC operations."
- :type 'integer
- :group 'liece-dcc)
-
-(defcustom liece-dcc-resolve-server nil
- "Resolve IRC server FQDN with external DCC command."
- :type 'boolean
- :group 'liece-dcc)
-
-;; Prefix strings for various messages.
-(defgroup liece-prefix nil
- "Various message prefix"
- :tag "Prefix"
- :prefix "liece-"
- :group 'liece)
-
-(defgroup liece-prefix-string nil
- "Various prefix string"
- :tag "Prefix string"
- :prefix "liece-"
- :group 'liece-prefix)
-
-(defcustom liece-change-prefix "*** Change: "
- "String to add before changing messages."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-notice-prefix "*** Notice: "
- "String to add before any notice message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-broadcast-prefix "*** Broadcast: "
- "String to add before any Broadcast message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-wallops-prefix "*** Notice: "
- "String to add before any WALLOPS message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-error-prefix "*** Error: "
- "String to add before any ERROR message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-info-prefix "*** Info: "
- "String to add before any informational message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-timestamp-prefix "*** Time: "
- "String to add before any timestamp message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-client-prefix "*** Client: "
- "String to add before any CTCP message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-dcc-prefix "*** DCC: "
- "String to add before any DCC message."
- :type 'string
- :group 'liece-prefix-string)
-
-(defcustom liece-time-prefix-regexp "[0-9][0-9]:[0-9][0-9] "
- "Time prefix regexp."
- :type 'regexp
- :group 'liece-prefix)
-
-(defcustom liece-display-time t
- "If non-nil, print time prefix on each line in channel buffer."
- :type 'boolean
- :group 'liece-prefix)
-
-(defcustom liece-display-prefix-tag nil
- "If non-nil, print prefix tag on each line in channel buffer."
- :type 'boolean
- :group 'liece-prefix)
-
-(defcustom liece-generic-prefix-tag-regexp "\\*\\*\\* \\([^:]+: \\)"
- "Regular expression for generic prefix tag."
- :type 'regexp
- :group 'liece-prefix)
-
-;; Misc.
-(defcustom liece-blink-parens nil
- "Should we blink matching parenthesis in liece command buffer?"
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-show-wallops t
- "Show wallops messages if usermode +ws."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-ignore-extra-notices t
- "Don't show any notice unless they come from the local server."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-shorten-kills t
- "Shorten KILL messages to about one line."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-ignore-changes nil
- "Ignore changes? Good in topic-wars/link troubles."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-ignore-fakes nil
- "If non nil, ignore fake notices if receiving them."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-signoff-message nil
- "Default signoff message."
- :type '(radio (string :tag "Signoff message"))
- :group 'liece-vars)
-
-(defcustom liece-away-message ""
- "Default away message."
- :type 'string
- :group 'liece-vars)
-
-(defcustom liece-beep-on-bells 'always
- "If non-nil, and the IRC dialogue buffer is not selected in a window,
-an IRC message arriving containing a bell character, will cause you
-to be notified.
-If value is 'always, an arriving bell will always cause a beep (or flash)."
- :type '(radio (const :tag "Always" always) (const :tag "No" nil))
- :group 'liece-vars)
-
-(defcustom liece-beep-function (function ding)
- "Function to beep."
- :type 'function
- :group 'liece-vars)
-
-(defcustom liece-beep-when-invited nil
- "If non-nil, beep when invited."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-beep-when-privmsg nil
- "If non-nil, beep when received privmsg."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-beep-words-list nil
- "This list used for user defined beep rules."
- :type '(repeat (string :tag "Beep Rules List"))
- :group 'liece-vars)
-
-(defcustom liece-system-fqdname (system-name)
- "The fully qualified domain name of the system.
-Default is what (system-name) returns."
- :type 'string
- :group 'liece-vars)
-
-(defcustom liece-gather-channel-modes t
- "Gather channel modes when joining channels."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-use-x-face nil
- "Display X-Face in dialogue buffer."
- :type 'boolean
- :group 'liece-look)
-
-;; Send/Receive files.
-(defcustom liece-file-accept nil
- "Do we accept files."
- :type 'boolean
- :group 'liece-ctcp)
-
-(defcustom liece-file-confirm-save nil
- "Do we want confirmation on saving files."
- :type 'boolean
- :group 'liece-ctcp)
-
-;; Userinfos.
-(defgroup liece-ctcp nil
- "CTCP Settings"
- :tag "CTCP"
- :prefix "liece-"
- :group 'liece)
-
-(defcustom liece-ctcp-userinfo "No user information given."
- "Userinfo message given to anyone asking."
- :type 'string
- :group 'liece-ctcp)
-
-(defcustom liece-ctcp-x-face ""
- "X-Face message given to anyone asking. Proper form is \"X-Face: ....\"."
- :type 'string
- :group 'liece-ctcp)
-
-(static-when (featurep 'xemacs)
- (define-obsolete-variable-alias 'liece-client-userinfo
- 'liece-ctcp-userinfo)
- (define-obsolete-variable-alias 'liece-client-x-face
- 'liece-ctcp-x-face))
-
-(defcustom liece-timers
- '((liece-command-poll-names liece-poll-names-interval)
- (liece-command-keepalive liece-keepalive-interval)
- (liece-command-poll-friends liece-poll-friends-interval))
- "Symbol name to store timer, timer-function and timer-interval."
- :type 'list
- :group 'liece-server)
-
-(defcustom liece-friends nil
- "Friends to be checked consequently."
- :type '(repeat (string :tag "Nick"))
- :group 'liece-vars)
-
-(defcustom liece-display-friends-function 'liece-303-display-friends
- "Function to display friends status."
- :type 'function
- :group 'liece-vars)
-
-(defcustom liece-poll-friends-interval 30
- "Interval on seconds the existence of friends."
- :type '(repeat
- (integer :tag "Polling Interval in Seconds")
- (const :tag "No" nil))
- :group 'liece-server)
-
-(defcustom liece-keepalive-interval nil
- "Interval on seconds the existence of server connection is checked."
- :type '(radio
- (integer :tag "Seconds"
- :doc "Connection Interval in Seconds")
- (const :tag "No" nil))
- :group 'liece-server)
-
-(defcustom liece-poll-names-interval nil
- "Interval the names are polled from server."
- :type '(radio
- (integer :tag "Seconds"
- :doc "NAMES Polling Interval in Seconds")
- (const :tag "No" nil))
- :group 'liece-server)
-
-(defcustom liece-timestamp-interval (* 60 10)
- "Interval in seconds between timestamps in dialogue-buffer, nil for none."
- :type '(radio
- (integer :tag "Seconds"
- :doc "Timestamp Interval in Seconds")
- (const "No" nil))
- :group 'liece-server)
-
-(defcustom liece-connection-timeout 60
- "Default timeout interval."
- :type 'integer
- :group 'liece-server)
-
-(defcustom liece-timestamp-format (concat liece-timestamp-prefix "%s")
- "Format-string for timestamp."
- :type 'string
- :group 'liece-format-string)
-
-;; Conversions: Not used.
-(defcustom liece-send-convert-list nil
- "Convert characters before sending to server."
- :type '(repeat (character :tag "Character"
- :doc "Convert Character"))
- :group 'liece-vars)
-
-(defcustom liece-receive-convert-list nil
- "Convert characters after receiving from server."
- :type '(repeat (character :tag "Character"
- :doc "Convert Character"))
- :group 'liece-vars)
-
-;; Ignores
-(defgroup liece-ignore nil
- "Ignore Settings"
- :tag "Ignore"
- :prefix "liece-"
- :group 'liece-vars)
-
-(defcustom liece-kill-nickname nil
- "List of nicknames to be ignored.
-Messages from these people won't be displayed."
- :type '(repeat (string :tag "Nick" :doc "Ignore Nick"))
- :group 'liece-ignore)
-
-(defcustom liece-kill-realname nil
- "List of real names to be ignored.
-Messages from them won't be displayed."
- :type '(repeat (string :tag "Realname" :doc "Ignore Realname"))
- :group 'liece-ignore)
-
-(defcustom liece-kill-logon nil
- "List of logon names (user@host.dom.ain) to be ignored.
-Messages from them won't be displayed."
- :type '(repeat (string :tag "Logon" :doc "Ignore Logon Name"))
- :group 'liece-ignore)
-
-;; New style ignore.
-(defcustom liece-no-ignore-buffers nil
- "A list of buffers that don't adhere to ignore-list."
- :type '(repeat (string :tag "Buffer" :doc "Don't Ignore Buffer Names"))
- :group 'liece-ignore)
-
-(define-widget 'liece-ignore-spec 'repeat
- "Edit server spec entries"
- :convert-widget 'liece-ignore-spec-convert)
-
-(defun liece-ignore-spec-convert (widget)
- (let* ((type
- '(radio
- (string :tag "Type" :doc "Match for messagetype")
- (const nil)))
- (match
- '(radio
- (string :tag "Match" :doc "Match for string-in-message")
- (const nil)))
- (info-func
- '(function :doc "Function whose return value is ignore info"))
- (user-func
- '(function :doc "Function whose return value is ignore user list"))
- (name
- '(repeat :tag "Name" (string :doc "Ignore user name")))
- (spec
- (` (list :value (nil nil)
- (choice :tag "Message"
- (cons (, type) (, match)) (const nil) (, info-func))
- (choice :tag "User" (const nil) (, user-func) (, name)))))
- (args (` ((, spec)))))
- (widget-put widget :args args)
- widget))
-
-(defcustom liece-ignore-list nil
- "A list of buffers that don't adhere to ignore-list."
- :type 'liece-ignore-spec
- :group 'liece-ignore)
-
-(defcustom liece-compress-changes t
- "Set to t if we want instant compressed messages in the old format."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-compress-treshold 1
- "Number of lines to search back for a previous matching join/part/quit/mode."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-compress-mode-length 3
- "Number of mode compression length."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-buffer-max-size 4242424
- "Maximum size (in bytes) of any liece buffer."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-buffer-default-size 4042424
- "Size to shrink buffer if it grows too big."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-buffer-check-interval (* 60 10)
- "Interval between `buffer-size' checks."
- :type 'integer
- :group 'liece-vars)
-
-(static-when (featurep 'xemacs)
- (define-obsolete-variable-alias 'liece-buffer-maxsize
- 'liece-buffer-max-size)
- (define-obsolete-variable-alias 'liece-buffer-defsize
- 'liece-buffer-default-size)
- (define-obsolete-variable-alias 'liece-checkbuffer-interval
- 'liece-buffer-check-interval))
-
-(defcustom liece-buffer-dispose-function (function bury-buffer)
- "Function called after the buffer was disposed of."
- :type 'function
- :group 'liece-vars)
-
-(defcustom liece-private-window-height 4
- "How tall is the window for private messages when shown."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-format-time-function
- 'liece-compose-time-string
- "Function to convert `current-time-string' to the human readable form.
-If you like to have the short format, set this to nil or to a
-funtion (defun my-format (s) s)."
- :type 'function
- :group 'liece-vars)
-
-(defcustom liece-keep-buffers t
- "When (re)starting IRC, erase contents of old buffers."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-scroll-step nil
- "The number of lines to try scrolling a window by when point moves out."
- :type '(radio (integer :tag "Scroll Step")
- (const nil))
- :group 'liece-look)
-
-(defcustom liece-swap-private nil
- "When showing private is it between under dialogue or not."
- :type 'boolean
- :group 'liece-vars)
-
-(defcustom liece-buffer-preferences
- (list
- (cons ".*" liece-D-buffer))
- "List of lists that contain regexp to match and `buffer-list' to insert.
-Setting this as
-(list
- (cons \"#report\" (list \"*report-buffer*\"))
- (cons \".*\" liece-D-buffer))
-would cause messages from and to channel #report to be displayed on
-buffer named *report-buffer* and all other messages are displayed on
-dialogue-buffer."
- :type '(repeat (cons (string :tag "Channel Name")
- (list (variable :tag "Buffe or Name"))))
- :group 'liece-vars)
-
-(defcustom liece-channel-conversion-map nil
- "The map of channel conversion."
- :type '(repeat (cons (string :tag "Channel Name")
- (string :tag "Channel Name (After Conversion)")))
- :group 'liece-vars)
-
-(defcustom liece-channel-conversion-default-mask "*.jp"
- "The default mask of channel conversion."
- :type 'string
- :group 'liece-vars)
-
-(defcustom liece-channel-id-length 5
- "Length of channel ID for ! channels."
- :type 'integer
- :group 'liece-vars)
-
-(defcustom liece-insert-environment-version nil
- "If non-nil, display version description of current environment."
- :type 'boolean
- :group 'liece-vars)
-
-(provide 'liece-vars)
-
-;;; liece-vars.el ends here
+++ /dev/null
-;;; liece-version.el --- Version information for Liece.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-12-23
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-;;; @ version number constants
-;;;
-
-(require 'product)
-(provide 'liece-version)
-
-(product-provide 'liece-version
- (product-define "Liece" nil '(1 4 4)))
-
-(defconst liece-environment-version
- (concat
- (if (fboundp 'apel-version)
- (concat (apel-version) " ")
- nil)
- (if (featurep 'xemacs)
- (concat (cond
- ((featurep 'utf-2000)
- (concat "UTF-2000-MULE/" utf-2000-version))
- ((featurep 'mule) "MULE"))
- " XEmacs"
- (if (string-match "^[0-9]+\\(\\.[0-9]+\\)" emacs-version)
- (concat
- "/"
- (substring emacs-version 0 (match-end 0))
- (cond ((and (boundp 'xemacs-betaname)
- xemacs-betaname)
- ;; It does not exist in XEmacs
- ;; versions prior to 20.3.
- (concat " " xemacs-betaname))
- ((and (boundp 'emacs-patch-level)
- emacs-patch-level)
- ;; It does not exist in FSF Emacs or in
- ;; XEmacs versions earlier than 21.1.1.
- (format " (patch %d)" emacs-patch-level))
- (t ""))
- " (" xemacs-codename ") ("
- system-configuration ")")
- " (" emacs-version ")"))
- (let ((ver (if (string-match "\\.[0-9]+$" emacs-version)
- (substring emacs-version 0 (match-beginning 0))
- emacs-version)))
- (if (featurep 'mule)
- (if (boundp 'enable-multibyte-characters)
- (concat "Emacs/" ver
- " (" system-configuration ")"
- (if enable-multibyte-characters
- (concat " MULE/" mule-version)
- " (with unibyte mode)")
- (if (featurep 'meadow)
- (let ((mver (Meadow-version)))
- (if (string-match "^Meadow-" mver)
- (concat " Meadow/"
- (substring mver
- (match-end 0))))))
- (if (boundp 'NEMACS)
- (let ((nemacs-version
- (condition-case ()
- (eval '(nemacs-version))
- (error ""))))
- (when (string-match
- "Nemacs version \\([^ ]*\\)"
- nemacs-version)
- (setq nemacs-version
- (match-string 1 nemacs-version)))
- (concat " NEmacs/" nemacs-version))))
- (concat "MULE/" mule-version
- " (based on Emacs " ver ")"))
- (concat "Emacs/" ver " (" system-configuration ")"))))))
-
-(defun liece-version ()
- "Print Liece version."
- (interactive)
- (let ((product-info
- (concat (product-string-1 'liece-version t)
- (if liece-insert-environment-version
- (concat " " liece-environment-version)
- nil))))
- (if (interactive-p)
- (message "%s" product-info)
- product-info)))
-
-;;; liece-version.el ends here
+++ /dev/null
-;;; liece-window.el --- Window configuration style utility.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1999-01-08
-;; Revised: 1999-07-05
-;; Keywords: window, window configuration
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-misc)
-(require 'liece-intl)
-
-(require 'calist)
-(eval-when-compile (require 'cl))
-
-(defgroup liece-window nil
- "Window configuration"
- :tag "Window configuration"
- :group 'liece)
-
-(defcustom liece-window-min-width 2
- "Minimal width of liece window."
- :type 'integer
- :group 'liece-window)
-
-(defcustom liece-window-min-height 2
- "Minimal height of liece window."
- :type 'integer
- :group 'liece-window)
-
-(defcustom liece-window-style-directory nil
- "Normal position of style configuration files."
- :type 'directory
- :group 'liece-window)
-
-(defcustom liece-window-default-style "bottom"
- "Default style."
- :type 'string
- :group 'liece-window)
-
-(defcustom liece-window-to-buffer
- '((channel . liece-channel-buffer)
- (others . liece-others-buffer)
- (dialogue . liece-dialogue-buffer)
- (command . liece-command-buffer)
- (channel-list . liece-channel-list-buffer)
- (nick . liece-nick-buffer))
- "Window abbreviation to buffer alist."
- :type '(repeat
- (cons (symbol :tag "Abbrev")
- (symbol :tag "Buffer")))
- :group 'liece-window)
-
-(defconst liece-window-split-types '(horizontal vertical))
-
-(defvar liece-window-style-configuration-alist nil)
-(defvar liece-window-current-style nil)
-(defvar liece-window-configuration-stack nil)
-
-(defun liece-window-field-match-method-as-default-rule
- (calist field-type field-value)
- (let* ((field (assq field-type calist)) (value (cdr field)))
- (cond ((null field)
- (cons (cons field-type field-value) calist))
- ((and (symbolp field-value) (eq field-value 'any))
- calist)
- ((and (symbolp value) (eq field-value value))
- calist))))
-
-(define-calist-field-match-method
- 'command-buffer-mode
- 'liece-window-field-match-method-as-default-rule)
-
-(define-calist-field-match-method
- 'channel-buffer-mode
- 'liece-window-field-match-method-as-default-rule)
-
-(define-calist-field-match-method
- 'nick-buffer-mode
- 'liece-window-field-match-method-as-default-rule)
-
-(define-calist-field-match-method
- 'channel-list-buffer-mode
- 'liece-window-field-match-method-as-default-rule)
-
-(defmacro liece-window-add-style (&rest calist)
- `(ctree-set-calist-strictly 'liece-window-style-configuration-alist
- ',calist))
-
-(defmacro liece-window-define-reconfiguration-predicate (name &rest body)
- `(defun-maybe ,name ,@body))
-
-(put 'liece-window-define-reconfiguration-predicate
- 'lisp-indent-function 'defun)
-
-(defmacro liece-window-set-default-style ()
- "Set window configuration with fallback style."
- '(liece-window-add-style
- (command-buffer-mode . any)
- (channel-buffer-mode . any)
- (nick-buffer-mode . any)
- (channel-list-buffer-mode . any)
- (configuration
- (vertical
- 1.0
- (dialogue 1.0)
- (command 4 point)))))
-
-(defsubst liece-window-load-style-file (style)
- "Load style file."
- (condition-case nil
- (progn
- (if (null liece-window-style-directory)
- (setq liece-window-style-directory
- (liece-locate-path "styles")))
- (setq liece-window-style-configuration-alist nil)
- (load (expand-file-name style liece-window-style-directory))
- (setq liece-window-current-style style))
- (error
- (liece-message "Style file load failed.")
- (liece-window-set-default-style))))
-
-(defmacro liece-window-percent-to-rate (percent)
- `(/ ,percent 100.0))
-
-(defmacro liece-window-to-buffer-helper (window)
- `(cond ((symbolp ,window)
- (symbol-value ,window))
- (t ,window)))
-
-(defmacro liece-window-safe-select-window (window)
- `(if ,window (select-window ,window)))
-
-;;;###liece-autoload
-(defun liece-command-set-window-style (style)
- (interactive
- (let ((styles (directory-files liece-window-style-directory)))
- (list
- (liece-minibuffer-completing-read
- "Window style: " (list-to-alist styles) nil t nil nil
- liece-window-current-style))))
- (liece-window-load-style-file style))
-
-(defun liece-command-reload-window-style ()
- (interactive)
- (liece-window-load-style-file
- (or liece-window-current-style
- liece-window-default-style)))
-
-(defmacro liece-window-default-reconfiguration-predicate ()
- '(or (one-window-p t)
- (null (liece-get-buffer-window liece-command-buffer))
- (and (not liece-channel-buffer-mode)
- (null (liece-get-buffer-window liece-dialogue-buffer)))
- (and liece-channel-buffer-mode
- (null (liece-get-buffer-window liece-channel-buffer))
- (null (liece-get-buffer-window liece-others-buffer)))
- (and liece-channel-buffer-mode
- (if liece-nick-buffer-mode
- (null (liece-get-buffer-window liece-nick-buffer))
- (not (null (liece-get-buffer-window liece-nick-buffer)))))
- (if liece-channel-list-buffer-mode
- (null (liece-get-buffer-window liece-channel-list-buffer))
- (not (null (liece-get-buffer-window liece-channel-list-buffer))))))
-
-;;;###liece-autoload
-(defun liece-configure-windows ()
- (let ((liece-nick-buffer-mode liece-nick-buffer-mode)
- (liece-channel-buffer-mode liece-channel-buffer-mode)
- situation calist split predicate)
- (if (and (get 'liece-nick-buffer-mode 'hide)
- liece-nick-window-auto-hide)
- (setq liece-nick-buffer-mode nil))
- (if (not (liece-channel-last
- (if (eq liece-command-buffer-mode 'chat)
- liece-current-chat-partners
- liece-current-channels)))
- (setq liece-channel-buffer-mode nil))
- (setq situation
- `((channel-buffer-mode . ,liece-channel-buffer-mode)
- (nick-buffer-mode . ,liece-nick-buffer-mode)
- (channel-list-buffer-mode . ,liece-channel-list-buffer-mode)
- (command-buffer-mode . ,liece-command-buffer-mode)))
- (or liece-window-current-style
- (liece-command-set-window-style liece-window-default-style))
- (setq calist (ctree-match-calist liece-window-style-configuration-alist
- situation)
- split (cadr (assq 'configuration calist))
- predicate (cdr (assq 'reconfiguration-predicate calist)))
- (when (and split
- (or (null predicate)
- (and predicate
- (liece-functionp predicate)
- (funcall predicate))))
- (setq truncate-partial-width-windows
- (not liece-truncate-partial-width-windows))
- (if liece-use-full-window (delete-other-windows))
- (save-excursion
- (switch-to-buffer liece-command-buffer) ;; u-mu.
- (liece-window-configure-frame split)))))
-
-(defun liece-window-configure-frame (split &optional window)
- (or window
- (setq window (get-buffer-window (current-buffer))))
- (liece-window-safe-select-window window)
- (while (and (not (assq (car split) liece-window-to-buffer))
- (liece-functionp (car split)))
- (setq split (eval split)))
- (let* ((type (car split))
- (subs (cddr split))
- (len (if (eq type 'horizontal) (window-width) (window-height)))
- (total 0)
- (window-min-width
- (or liece-window-min-width window-min-width))
- (window-min-height
- (or liece-window-min-height window-min-height))
- s result new-win rest comp-subs size sub)
- (cond
- ;; Nothing to do here.
- ((null split))
- ;; Don't switch buffers.
- ((null type)
- (and (memq 'point split) window))
- ;; This is a buffer to be selected.
- ((not (memq type '(horizontal vertical)))
- (let ((buffer (cond ((stringp type) type)
- (t (cdr (assq type liece-window-to-buffer))))))
- (unless buffer
- (error "Illegal buffer type: %s" type))
- (switch-to-buffer
- (liece-window-to-buffer-helper buffer))
- ;; We return the window if it has the `point' spec.
- (and (memq 'point split) window)))
- (t
- (when (> (length subs) 0)
- ;; First we have to compute the sizes of all new windows.
- (while subs
- (setq sub (append (pop subs) nil))
- (while (and (not (assq (car sub) liece-window-to-buffer))
- (liece-functionp (car sub)))
- (setq sub (eval sub)))
- (when sub
- (push sub comp-subs)
- (setq size (cadar comp-subs))
- (cond ((equal size 1.0)
- (setq rest (car comp-subs))
- (setq s 0))
- ((floatp size)
- (setq s (floor (* size len))))
- ((integerp size)
- (setq s size))
- ((symbolp size)
- (setq s
- (floor
- (* (liece-window-percent-to-rate
- (symbol-value size))
- len))))
- (t
- (error "Illegal size: %s" size)))
- ;; Try to make sure that we are inside the safe limits.
- (cond ((zerop s))
- ((eq type 'horizontal)
- (setq s (max s window-min-width)))
- ((eq type 'vertical)
- (setq s (max s window-min-height))))
- (setcar (cdar comp-subs) s)
- (incf total s)))
- ;; Take care of the "1.0" spec.
- (if rest
- (setcar (cdr rest) (- len total))
- (error "No 1.0 specs in %s" split))
- ;; The we do the actual splitting in a nice recursive
- ;; fashion.
- (setq comp-subs (nreverse comp-subs))
- (while comp-subs
- (if (null (cdr comp-subs))
- (setq new-win window)
- (setq new-win
- (split-window window (cadar comp-subs)
- (eq type 'horizontal))))
- (setq result (or (liece-window-configure-frame
- (car comp-subs) window)
- result))
- (liece-window-safe-select-window new-win)
- (setq window new-win)
- (setq comp-subs (cdr comp-subs))))
- ;; Return the proper window, if any.
- (liece-window-safe-select-window result)))))
-
-(defun liece-window-configuration-push ()
- (let ((frame (selected-frame))
- (config (current-window-configuration)))
- (push (list frame config)
- liece-window-configuration-stack)))
-
-(defun liece-window-configuration-pop ()
- (let* ((frame (selected-frame))
- (triple (assq frame liece-window-configuration-stack)))
- (when (and triple (window-configuration-p (cadr triple)))
- (set-window-configuration (cadr triple))
- (if (setq frame (assq frame liece-window-configuration-stack))
- (setq liece-window-configuration-stack
- (delq frame liece-window-configuration-stack))))
- liece-window-configuration-stack))
-
-(provide 'liece-window)
-
-;;; liece-window.el ends here
+++ /dev/null
-;;; liece-x-face.el --- X-Face wrappers.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1998-11-25
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile (require 'liece-compat))
-
-(require 'path-util)
-
-(defvar liece-x-face-insert-function
- (when (and (module-installed-p 'bitmap) (module-installed-p 'x-face))
- (function liece-x-face-insert-with-bitmap)))
-
-(eval-and-compile
- (autoload 'x-face-encode "x-face")
- (autoload 'x-face-read-existing-file-name "x-face")
- (autoload 'x-face-icons-to-xbm "x-face")
- (autoload 'x-face-x-face-encoded-string-to-icon-string "x-face")
- (autoload 'bitmap-insert-xbm-buffer "bitmap")
- (autoload 'bitmap-decode-xbm "bitmap")
- (autoload 'bitmap-read-xbm-buffer "bitmap")
- (autoload 'bitmap-compose "bitmap"))
-
-(defalias 'liece-x-face-encode 'x-face-encode)
-(defalias 'liece-x-face-read-existing-file-name
- 'x-face-read-existing-file-name)
-
-(defun liece-x-face-insert-with-bitmap (buffer str nick)
- (save-excursion
- (set-buffer buffer)
- (goto-char (point-max))
- (let* (buffer-read-only
- (buf (x-face-icons-to-xbm
- nick 1 1
- (x-face-x-face-encoded-string-to-icon-string str)))
- (cmp (bitmap-decode-xbm (bitmap-read-xbm-buffer buf)))
- (len (length cmp)) (col (current-column))
- (prefix (buffer-substring
- (line-beginning-position) (point))) pt)
- (delete-region (line-beginning-position) (point))
- (dotimes (i len)
- (insert ?\n)
- (if (= i (/ len 2))
- (insert prefix)
- (move-to-column col t))
- (setq pt (point))
- (insert (bitmap-compose (aref cmp i)))
- (overlay-put
- (make-overlay pt (point)) 'face 'liece-client-face)))))
-
-(defun liece-x-face-insert (buffers str nick)
- (cond
- ((or (not buffers) (listp buffers))
- (dolist (buffer buffers)
- (liece-x-face-insert buffer str nick)))
- ((fboundp liece-x-face-insert-function)
- (funcall liece-x-face-insert-function buffers str nick))))
-
-(provide 'liece-x-face)
-
-;;; liece-x-face.el ends here
+++ /dev/null
-;;; liece-xemacs.el --- XEmacs specific routines.
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 1999-08-22
-;; Keywords: emulation
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(eval-when-compile
- (require 'liece-inlines)
- (require 'liece-misc)
- (require 'liece-commands))
-
-(autoload 'liece-command-dcc-send "liece-dcc")
-(defvar liece-nick-popup-menu)
-
-(defgroup liece-toolbar nil
- "Toolbar of your XEmacs"
- :tag "Toolbar"
- :group 'liece)
-
-(defgroup liece-toolbar-icons nil
- "Toolbar Icons of your XEmacs"
- :tag "Toolbar Icons"
- :prefix "liece-toolbar-"
- :group 'liece)
-
-(defmacro liece-xemacs-icon-path (file)
- "Search icon FILE and return absolete path of the file."
- `(or (and liece-icon-directory
- (expand-file-name ,file liece-icon-directory))
- (let ((path (liece-find-path ,file "icons")))
- (when path
- (setq liece-icon-directory
- (file-name-directory path)))
- path)))
-
-(define-widget 'liece-toolbar-icon 'list
- "Edit toolbar spec entries"
- :match (lambda (widget value)
- (valid-plist-p value))
- :convert-widget 'liece-toolbar-icon-convert)
-
-(eval-and-compile
- (defconst liece-toolbar-icon-states
- '(:up :down :disabled :cap-up :cap-down :cap-disabled)
- "toolbar event states")
-
- (defun liece-toolbar-icon-convert-1 (state)
- (list 'group :inline t :format "%t: %v"
- :tag (capitalize (substring (symbol-name state) 1))
- (list 'const :format "" :value state
- (list 'radio '(const :tag "none" nil) 'file)))))
-
-(defun liece-toolbar-icon-convert (widget)
- "Widget converter of the WIDGET `liece-toolbar-icon'."
- (apply #'widget-put widget :args
- (eval-when-compile
- (mapcar #'liece-toolbar-icon-convert-1
- liece-toolbar-icon-states)))
- widget)
-
-(defcustom liece-use-toolbar (if (featurep 'toolbar)
- 'default-toolbar
- nil)
- "*If nil, do not use a toolbar.
-If it is non-nil, it must be a toolbar. The five valid values are
-`default-toolbar', `top-toolbar', `bottom-toolbar',
-`right-toolbar', and `left-toolbar'."
- :type '(choice (const default-toolbar)
- (const top-toolbar) (const bottom-toolbar)
- (const left-toolbar) (const right-toolbar)
- (const :tag "no toolbar" nil))
- :group 'liece-toolbar)
-
-(defcustom liece-toolbar-back-icon '(:up "back.xpm")
- "Back button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-forward-icon '(:up "forward.xpm")
- "Forward button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-reload-icon '(:up "reload.xpm")
- "Reload button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-home-icon '(:up "home.xpm")
- "Home button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-search-icon '(:up "search.xpm")
- "Search button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-location-icon '(:up "location.xpm")
- "Location button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-toolbar-stop-icon '(:up "stop.xpm")
- "Stop button."
- :type 'liece-toolbar-icon
- :group 'liece-toolbar-icons)
-
-(defcustom liece-xemacs-unread-icon "balloon.xpm"
- "Unread icon."
- :type 'file
- :group 'liece-look)
-
-;;; @ internal variables
-;;;
-(defvar liece-glyph-cache nil)
-(defvar liece-toolbar-position (if (featurep 'toolbar)
- (default-toolbar-position)
- nil))
-
-(defvar liece-toolbar-back-glyph nil)
-(defvar liece-toolbar-forward-glyph nil)
-(defvar liece-toolbar-reload-glyph nil)
-(defvar liece-toolbar-home-glyph nil)
-(defvar liece-toolbar-search-glyph nil)
-(defvar liece-toolbar-location-glyph nil)
-(defvar liece-toolbar-stop-glyph nil)
-
-(defvar liece-toolbar-spec-list
- '([liece-toolbar-back-glyph
- liece-command-previous-channel t "Previous Channel"]
- [liece-toolbar-forward-glyph
- liece-command-next-channel t "Next Channel"]
- [liece-toolbar-reload-glyph
- liece-command-list t "List Channel"]
- [liece-toolbar-home-glyph
- liece-switch-to-channel-no-1 t "Go Home Channel"]
- [liece-toolbar-search-glyph
- liece-command-finger t "Finger"]
- [liece-toolbar-location-glyph
- liece-command-join t "Join Channel"]
- [liece-toolbar-stop-glyph
- liece-command-quit t "Quit IRC"]))
-
-;;; @ toolbar icons
-;;;
-(defun liece-toolbar-icon-plist-get (spec prop)
- "Return absolete path of icon file which SPEC has PROP."
- (let ((icon (plist-get spec prop)))
- (if icon (liece-locate-icon-file icon))))
-
-(defun liece-toolbar-map-button-list (plist)
- "Make toolbar icon list based on status PLIST."
- (apply #'toolbar-make-button-list
- (mapcar
- (lambda (prop)
- (liece-toolbar-icon-plist-get plist prop))
- liece-toolbar-icon-states)))
-
-(defun liece-xemacs-setup-toolbar (bar &optional force)
- "Prepare icons of toolbar BAR.
-If optional argument FORCE is non-nil, always update toolbar."
- (let (icon plist)
- (set-default-toolbar-position liece-toolbar-position)
- (dolist (spec bar)
- (setq icon (aref spec 0)
- plist (symbol-value
- (intern (concat
- (substring (prin1-to-string icon) -5 0)
- "icon"))))
- (when (or force
- (not (symbol-value icon)))
- (set icon (liece-toolbar-map-button-list plist))))
- (run-hooks 'liece-xemacs-setup-toolbar-hook)))
-
-;;; @ modeline decoration
-;;;
-(defun liece-xemacs-hide-modeline ()
- "Remove modeline from current window."
- (set-specifier has-modeline-p nil (current-buffer)))
-
-(when (featurep 'scrollbar)
- (defun liece-xemacs-hide-scrollbars ()
- (static-cond
- ((boundp 'horizontal-scrollbar-visible-p)
- (set-specifier horizontal-scrollbar-visible-p nil (current-buffer)))
- ((boundp 'scrollbar-height)
- (set-specifier scrollbar-height 0 (current-buffer)))))
- (add-hook 'liece-nick-mode-hook 'liece-xemacs-hide-scrollbars)
- (add-hook 'liece-channel-list-mode-hook 'liece-xemacs-hide-scrollbars))
-
-(add-hook 'liece-nick-mode-hook 'liece-xemacs-hide-modeline)
-(add-hook 'liece-channel-list-mode-hook 'liece-xemacs-hide-modeline)
-
-(defvar liece-xemacs-modeline-left-extent
- (let ((ext (copy-extent modeline-buffer-id-left-extent)))
- ext))
-
-(defvar liece-xemacs-modeline-right-extent
- (let ((ext (copy-extent modeline-buffer-id-right-extent)))
- ext))
-
-(add-hook 'liece-command-mode-hook 'liece-setup-toolbar)
-
-(defun liece-setup-toolbar ()
- "Prepare toolbar if wanted."
- (when liece-use-toolbar
- (liece-xemacs-setup-toolbar liece-toolbar-spec-list)
- (set-specifier (symbol-value liece-use-toolbar) liece-toolbar-spec-list
- (current-buffer))))
-
-(defun liece-xemacs-modeline-glyph ()
- "Return a glyph of modeline pointer."
- (let ((glyph
- (let (file)
- (make-glyph
- (nconc
- (if (setq file (liece-locate-icon-file
- "liece-pointer.xpm"))
- (list (vector 'xpm :file file)))
- (if (setq file (liece-locate-icon-file
- "liece-pointer.xbm"))
- (list (vector 'xbm :file file)))
- '([string :data "Liece:"]))))))
- (set-glyph-face glyph 'modeline-buffer-id)
- glyph))
-
-(defun liece-xemacs-mode-line-buffer-identification (line)
- "Decorate 1st element of `mode-line-buffer-identification' LINE.
-Modify whole identification by side effect."
- (let ((id (car line)) chop)
- (if (and (stringp id) (string-match "^Liece:" id))
- (progn
- (setq chop (match-end 0))
- (nconc
- (list
- (let ((glyph (liece-xemacs-modeline-glyph)))
- (if glyph
- (cons liece-xemacs-modeline-left-extent glyph)
- (cons liece-xemacs-modeline-left-extent
- (substring id 0 chop))))
- (cons liece-xemacs-modeline-right-extent
- (substring id chop)))
- (cdr line)))
- line)))
-
-(defun liece-xemacs-suppress-modeline-format ()
- "Remove unnecessary information from `modeline-format'."
- (setq modeline-format
- (remrassq 'modeline-modified
- (delq 'modeline-multibyte-status
- (copy-sequence mode-line-format)))))
-
-;;; @ menus
-;;;
-(defun liece-xemacs-nick-popup-menu (widget &optional event)
- "Trigger function for popup menu."
- (let ((pos (widget-event-point event)))
- (when pos
- (goto-char pos)
- (if (eq major-mode 'liece-nick-mode)
- (liece-nick-update-region))
- (let ((menu (cdr liece-nick-popup-menu)))
- (setq menu (nconc (list "IRCHAT" ; title: not displayed
- " IRC commands"
- "--:shadowDoubleEtchedOut")
- (mapcar (lambda (spec)
- (if (stringp spec)
- "--:shadowEtchedOut"
- spec))
- menu)))
- (let (popup-menu-titles)
- (popup-menu menu))))))
-
-(fset 'liece-nick-popup-menu 'liece-xemacs-nick-popup-menu)
-
-;;; @ nick buffer decoration
-;;;
-(defun liece-xemacs-create-nick-glyph (file &optional string)
- "Return a glyph of nick indicator from FILE or STRING."
- (or
- (cdr-safe (assoc file liece-glyph-cache))
- (let ((glyph
- (make-glyph
- (nconc
- (if (setq file (liece-locate-icon-file file))
- (list (vector 'xpm :file file)))
- (if string
- (list (vector 'string :data string)))))))
- (push (cons file glyph) liece-glyph-cache)
- (set-glyph-face glyph 'default)
- glyph)))
-
-(defun liece-xemacs-glyph-nick-region (start end)
- "Decorate nick buffer between START and END."
- (save-excursion
- (setq start (progn (goto-char start)(beginning-of-line)(point))
- end (progn (goto-char end)(beginning-of-line 2)(point)))
- (save-restriction
- (narrow-to-region start end)
- (let ((buffer-read-only nil)
- (inhibit-read-only t)
- (case-fold-search nil)
- mark file glyph ext ant)
- (map-extents
- (lambda (e void)
- (when (or
- (extent-property
- e 'liece-xemacs-glyph-nick-extent)
- (extent-property
- e 'liece-xemacs-glyph-nick-annotation))
- (delete-extent e)))
- (current-buffer) start end)
- (dolist (entry liece-nick-image-alist)
- (setq mark (car entry)
- file (cdr entry)
- glyph (liece-xemacs-create-nick-glyph
- file (char-to-string mark)))
- (when glyph
- (goto-char start)
- (while (not (eobp))
- (when (eq (char-after) mark)
- (mapcar 'delete-annotation
- (annotations-at (1+ (point))))
- (setq ext (make-extent (point) (1+ (point)))
- ant (make-annotation glyph (1+ (point)) 'text))
- (set-extent-property ext 'end-open t)
- (set-extent-property ext 'start-open t)
- (set-extent-property ext 'invisible t)
- (set-extent-property ext 'intangible t)
- (set-extent-property
- ant 'liece-xemacs-glyph-nick-extent ext)
- (set-extent-property
- ext 'liece-xemacs-glyph-nick-annotation ant))
- (beginning-of-line 2))))))))
-
-(defun liece-xemacs-set-drop-functions (start end)
- "Initialize drag and drop in DCC between START and END.
-This function needs window system independent drag and drop
-support (21.0 b39 or later)"
- (interactive "r")
- (liece-xemacs-set-drop-functions-buffer
- (current-buffer) start end)
- (goto-char end))
-
-(defun liece-xemacs-set-drop-functions-buffer (&optional buffer start end)
- "Initialize BUFFER drag and drop DCC settings between START and END.
-This function needs window system independent drag and drop
-support (21.0 b39 or later)"
- (interactive)
- (when (and (featurep 'x) (featurep 'dragdrop))
- (save-excursion
- (when buffer
- (set-buffer buffer))
- (setq start (or start (point-min))
- end (or end (point-max)))
- (goto-char start)
- (setq start (line-beginning-position))
- (goto-char end)
- (setq end (line-beginning-position))
- (goto-char end)
- (when (not (eobp))
- (beginning-of-line 2)
- (setq end (point)))
- (save-restriction
- (narrow-to-region start end)
- (let (buffer-read-only case-fold-search)
- (map-extents
- (function
- (lambda (e void)
- (when (extent-property e 'liece-xemacs-drop-extent)
- (delete-extent e))))
- buffer start end)
- (goto-char start)
- (let (st nd nick func)
- (while (not (eobp))
- (forward-char)
- (setq st (point)
- nd (line-end-position)
- nick (buffer-substring st nd))
- (mapcar 'delete-annotation (annotations-at nd))
- (setq func (intern (concat "liece-xemacs-drop-function-" nick)))
- (fset func
- (list 'lambda (list 'object)
- (list 'liece-xemacs-drop-function 'object nick)))
- (let ((ext (make-extent st nd)))
- (set-extent-property ext 'liece-xemacs-drop-extent t)
- (set-extent-property ext 'dragdrop-drop-functions (list func)))
- (beginning-of-line 2))))))))
-
-(defun liece-xemacs-drop-function (object nick)
- "Drag and drop handler.
-Always two arguments are passed, OBJECT and NICK."
- (if (and (eq (car object) 'dragdrop_URL)
- (stringp (cdr object))
- (string-match "^[^:]*:\\(.*\\)" (cdr object)))
- (let ((filename (match-string 1 (cdr object))))
- (liece-command-dcc-send filename nick))))
-
-(defadvice easy-menu-add-item
- (around liece-fix-menu-path-switch-buffer activate)
- "Advice for XEmacs 20.4 or earlier."
- (save-excursion
- (set-buffer liece-command-buffer)
- (add-menu-button
- (cons (car (ad-get-arg 0)) (ad-get-arg 1))
- (ad-get-arg 2) (ad-get-arg 3))))
-
-(eval-and-compile
- (setq liece-x-face-insert-function
- (function liece-x-face-insert-with-xemacs))
-
- (defun liece-x-face-insert-with-xemacs (buffer str nick)
- (save-excursion
- (let ((glyph (cdr-safe (assoc nick liece-glyph-cache))))
- (unless glyph
- (setq glyph (make-glyph
- (list (vector 'xface :data str)
- (vector 'string :data str))))
- (when glyph
- (push (cons nick glyph) liece-glyph-cache)
- (set-glyph-face glyph 'default)))
- (set-buffer buffer)
- (goto-char (point-max))
- (when glyph
- (set-extent-end-glyph (make-extent (point) (point)) glyph))))))
-
-;;; @ startup splash
-;;;
-(eval-when-compile
- (defvar filename)
- (setq load-path
- `(,(if (and (boundp 'filename)
- (stringp filename)
- (file-exists-p filename))
- (file-name-directory filename)
- default-directory)
- ,@load-path)))
-
-(when (featurep 'xpm)
- (eval-when-compile
- (defmacro liece-xemacs-logo ()
- (let ((logo "liece.xpm")
- (dir (if (and (boundp 'filename)
- (stringp filename)
- (file-exists-p filename))
- (file-name-directory filename)
- default-directory)))
- (setq logo (expand-file-name logo dir))
- (if (file-exists-p logo)
- (let ((buffer (generate-new-buffer " *liece-logo*"))
- (coding-system-for-read (quote binary))
- buffer-file-format format-alist
- insert-file-contents-post-hook
- insert-file-contents-pre-hook)
- (prog1
- (save-excursion
- (set-buffer buffer)
- (insert-file-contents logo)
- (buffer-string))
- (kill-buffer buffer)))
- (progn
- (byte-compile-warn
- "Warning: file \"%s\" not found." logo)
- (sit-for 2)
- nil))))))
-
-(defconst liece-xemacs-logo
- (when (featurep 'xpm)
- (liece-xemacs-logo)))
-
-(defun liece-xemacs-splash-at-point (&optional height)
- "Display splash logo in HEIGHT."
- (or (bolp) (insert "\n"))
- (let ((bow (point))
- (glyph (make-glyph
- (list (vector 'xpm :data liece-xemacs-logo)
- [nothing])))
- (lh (/ (window-pixel-height) (window-height)))
- (lw (/ (window-pixel-width) (window-width)))
- (liece-insert-environment-version nil)
- bov)
-
- (insert-char ?\n (max 0 (/ (- (or height (window-height))
- (/ (glyph-height glyph) lh))
- 2)))
- (insert-char ?\ (max 0 (/ (- (window-width)
- (/ (glyph-width glyph) lw))
- 2)))
- (set-extent-end-glyph
- (make-extent (point) (point))
- glyph)
- (insert "\n")
- (insert-char ?\ (max 0 (/ (- (window-width) (length (liece-version))) 2)))
- (setq bov (point))
- (insert (liece-version))
- (and (find-face 'bold-italic)
- (put-text-property bov (point) 'face 'bold-italic))
- (goto-char bow)
- (set-window-start (get-buffer-window (current-buffer)) (point))
- (redisplay-frame)))
-
-(defun liece-xemacs-splash (&optional arg)
- "Display splash logo interactively.
-If ARG is given, don't hide splash buffer."
- (interactive "P")
- (and liece-xemacs-logo
- (let ((frame (selected-frame))
- config buffer
- (liece-insert-environment-version nil))
- (and frame
- (unwind-protect
- (progn
- (setq config (current-window-configuration))
- (setq buffer (generate-new-buffer
- (concat (if arg "*" " *")
- (liece-version) "*")))
- (switch-to-buffer buffer)
- (delete-other-windows)
- (liece-xemacs-splash-at-point)
- (set-buffer-modified-p nil)
- (or arg (sleep-for 2)))
- (unless arg
- (kill-buffer buffer)
- (set-window-configuration config)
- (redisplay-frame frame)))))))
-
-(unless (or liece-inhibit-startup-message
- (eq 'stream (device-type)))
- (liece-xemacs-splash))
-
-;;; @ unread mark
-;;;
-(defun liece-xemacs-unread-mark (chnl)
- (if liece-display-unread-mark
- (with-current-buffer liece-channel-list-buffer
- (let* ((buffer-read-only nil)
- (file (liece-xemacs-icon-path
- liece-xemacs-unread-icon))
- (glyph (make-glyph
- (list (vector 'xpm :file file)
- (vector 'string
- :data liece-channel-unread-character))))
- ext)
- (goto-char (point-min))
- (when (re-search-forward (concat "^ ?[0-9]+: " chnl "$") nil t)
- (goto-char (match-end 0))
- (insert " ")
- (setq ext (make-extent (match-end 0) (1+ (match-end 0))))
- (set-extent-end-glyph ext glyph))))))
-
-(defun liece-xemacs-read-mark (chnl)
- (if liece-display-unread-mark
- (with-current-buffer liece-channel-list-buffer
- (let ((buffer-read-only nil))
- (goto-char (point-min))
- (when (re-search-forward (concat "^ ?[0-9]+: " chnl " $") nil t)
- (goto-char (1- (match-end 0)))
- (delete-char 1))))))
-
-(defun liece-xemacs-redisplay-unread-mark ()
- (if liece-display-unread-mark
- (dolist (chnl liece-channel-unread-list)
- (liece-xemacs-unread-mark chnl))))
-
-\f
-;;; @ emulation functions
-;;;
-(defun liece-xemacs-map-extents (function)
- "Map FUNCTION over the extents which overlap the current buffer."
- (map-extents (lambda (extent ignore)
- (if (overlayp extent) (funcall function extent)))))
-
-(defun liece-xemacs-kill-all-overlays ()
- "Delete all extents in the current buffer."
- (liece-xemacs-map-extents #'delete-extent))
-
-(defun liece-xemacs-overlays-at (pos)
- "Return a list of the overlays that contain position POS."
- (let ((ext (extent-at pos)))
- (and ext (overlayp ext) (list ext))))
-
-(fset 'liece-mode-line-buffer-identification
- 'liece-xemacs-mode-line-buffer-identification)
-
-(fset 'liece-suppress-mode-line-format
- 'liece-xemacs-suppress-modeline-format)
-
-(fset 'liece-kill-all-overlays 'liece-xemacs-kill-all-overlays)
-(fset 'liece-map-overlays 'liece-xemacs-map-extents)
-(fset 'liece-locate-data-directory 'locate-data-directory)
-
-(add-hook 'liece-nick-insert-hook 'liece-xemacs-glyph-nick-region)
-(add-hook 'liece-nick-insert-hook 'liece-xemacs-set-drop-functions)
-
-(add-hook 'liece-nick-replace-hook 'liece-xemacs-glyph-nick-region)
-(add-hook 'liece-nick-replace-hook 'liece-xemacs-set-drop-functions)
-
-(fset 'liece-redisplay-unread-mark 'liece-xemacs-redisplay-unread-mark)
-(add-hook 'liece-channel-unread-functions 'liece-xemacs-unread-mark)
-(add-hook 'liece-channel-read-functions 'liece-xemacs-read-mark)
-
-(provide 'liece-xemacs)
-
-;;; liece-xemacs.el ends here
-
+++ /dev/null
-;;; liece.el --- IRC client for Emacsen
-;; Copyright (C) 1998-2000 Daiki Ueno
-
-;; Author: Daiki Ueno <ueno@unixuser.org>
-;; Created: 1998-09-28
-;; Revised: 2000-03-20
-;; Keywords: IRC, liece
-
-;; This file is part of Liece.
-
-;; 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
-;; 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 GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'liece-inlines)
-(require 'liece-handle)
-(require 'liece-filter)
-(require 'liece-hilit)
-(require 'liece-intl)
-(require 'liece-menu)
-(require 'liece-window)
-(require 'liece-tcp)
-(if (featurep 'xemacs)
- (require 'liece-xemacs)
- (require 'liece-emacs))
-(require 'liece-commands)
-
-(autoload 'mule-caesar-region "mule-caesar" nil t)
-(autoload 'liece-command-browse-url "liece-url" nil t)
-(autoload 'liece-command-dcc-send "liece-dcc" nil t)
-(autoload 'liece-command-dcc-receive "liece-dcc" nil t)
-(autoload 'liece-command-dcc-list "liece-dcc" nil t)
-(autoload 'liece-command-dcc-chat-listen "liece-dcc" nil t)
-(autoload 'liece-command-dcc-chat-connect "liece-dcc" nil t)
-(autoload 'liece-command-dcc-accept "liece-dcc" nil t)
-(autoload 'liece-command-mail-compose "liece-mail" nil t)
-(autoload 'liece-command-submit-bug-report "liece-mail" nil t)
-
-(eval-and-compile
- (defvar liece-server-keyword-map
- '((:host (getenv "IRCSERVER"))
- (:service liece-service)
- (:password liece-password)
- (:prescript)
- (:prescript-delay)
- (:type liece-tcp-connection-type)
- (:relay))
- "Mapping from keywords to default values.
-All keywords that can be used must be listed here."))
-
-(defadvice save-buffers-kill-emacs
- (before liece-save-buffers-kill-emacs activate)
- "Prompt user to quit IRC explicitly."
- (run-hooks 'liece-before-kill-emacs-hook) )
-
-(add-hook 'liece-before-kill-emacs-hook 'liece-command-quit)
-
-(defvar liece-tmp-server-name nil "Temporaly server name.")
-(defvar liece-buffer-last-check-time nil)
-(defvar liece-timers-list-initialized-p nil
- "Are liece internal timers in place?")
-
-(defconst liece-obarray-size 1327
- "The size of obarray used by liece on channelname and username space.
-For efficiency this should be prime. See documentation of intern and
-`make-vector' for more information. Here is a list of some small primes...
-
-13, 29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521,
-631, 761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839,
-7013, 8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353,
-43627, 52361, 62851, 75431, 90523, 108631, 130363, 156437, 187751,
-225307, 270371, 324449, 389357, 467237, 560689, 672827, 807403, 968897,
-1162687, 1395263, 1674319, 2009191, 2411033, 2893249.")
-
-(defvar liece-channel-list-mode-map (make-sparse-keymap))
-(defvar liece-nick-mode-map (make-sparse-keymap))
-(defvar liece-client-query-map (make-sparse-keymap))
-(defvar liece-dcc-map (make-sparse-keymap))
-(defvar liece-friends-map (make-sparse-keymap))
-
-(defvar liece-dialogue-mode-map
- (let ((keymap (make-keymap)))
- (suppress-keymap keymap 'nodigit)
- keymap))
-
-(defvar liece-command-mode-map (make-keymap))
-(defvar liece-command-map (make-sparse-keymap))
-
-(defvar liece-command-mode-syntax-table nil)
-
-(put 'liece-command-mode 'mode-class 'special)
-(put 'liece-dialogue-mode 'mode-class 'special)
-(put 'liece-channel-list-mode 'mode-class 'special)
-(put 'liece-nick-mode 'mode-class 'special)
-(put 'liece-channel-mode 'derived-mode-parent 'liece-dialogue-mode)
-(put 'liece-others-mode 'derived-mode-parent 'liece-dialogue-mode)
-
-(defvar liece-buffer-mode-alist
- '((liece-dialogue-buffer liece-dialogue-mode)
- (liece-others-buffer liece-others-mode)
- (liece-channel-list-buffer liece-channel-list-mode)
- (liece-private-buffer liece-dialogue-mode)
- (liece-KILLS-buffer)
- (liece-IGNORED-buffer)
- (liece-WALLOPS-buffer)))
-
-(eval-and-compile
- (dotimes (n 20)
- (fset (intern (format "liece-switch-to-channel-no-%d" (1+ n)))
- `(lambda ()
- (interactive)
- (funcall #'liece-switch-to-channel-no ,n)))))
-
-(defvar liece-select-keys
- '("1" liece-switch-to-channel-no-1
- "2" liece-switch-to-channel-no-2
- "3" liece-switch-to-channel-no-3
- "4" liece-switch-to-channel-no-4
- "5" liece-switch-to-channel-no-5
- "6" liece-switch-to-channel-no-6
- "7" liece-switch-to-channel-no-7
- "8" liece-switch-to-channel-no-8
- "9" liece-switch-to-channel-no-9
- "0" liece-switch-to-channel-no-10
- "\C-c1" liece-switch-to-channel-no-11
- "\C-c2" liece-switch-to-channel-no-12
- "\C-c3" liece-switch-to-channel-no-13
- "\C-c4" liece-switch-to-channel-no-14
- "\C-c5" liece-switch-to-channel-no-15
- "\C-c6" liece-switch-to-channel-no-16
- "\C-c7" liece-switch-to-channel-no-17
- "\C-c8" liece-switch-to-channel-no-18
- "\C-c9" liece-switch-to-channel-no-19
- "\C-c0" liece-switch-to-channel-no-20))
-
-;;; Keymap macros. -- borrowd from `gnus-util.el'.
-
-(defmacro liece-local-set-keys (&rest plist)
- "Set the keys in PLIST in the current keymap."
- `(liece-define-keys-1 (current-local-map) ',plist))
-
-(defmacro liece-define-keys (keymap &rest plist)
- "Assign KEYMAP keys from PLIST."
- `(liece-define-keys-1 ',keymap ',plist))
-
-(defmacro liece-define-keys-safe (keymap &rest plist)
- "Assign KEYMAP keys from PLIST without overwriting previous definitions."
- `(liece-define-keys-1 ',keymap ',plist t))
-
-(put 'liece-define-keys 'lisp-indent-function 1)
-(put 'liece-define-keys-safe 'lisp-indent-function 1)
-(put 'liece-local-set-keys 'lisp-indent-function 1)
-
-(defun liece-define-keys-1 (keymap plist &optional safe)
- "Assign KEYMAP keys from PLIST.
-If optional argument SAFE is nil, overwrite previous definitions."
- (unless keymap
- (error "Can't set keys in a null keymap"))
- (cond
- ((symbolp keymap)
- (setq keymap (symbol-value keymap)))
- ((keymapp keymap))
- ((listp keymap)
- (set (car keymap) nil)
- (define-prefix-command (car keymap))
- (define-key (symbol-value (caddr keymap)) (cadr keymap) (car keymap))
- (setq keymap (symbol-value (car keymap)))))
- (let (key)
- (while plist
- (when (symbolp (setq key (pop plist)))
- (setq key (symbol-value key)))
- (if (or (not safe)
- (eq (lookup-key keymap key) 'undefined))
- (define-key keymap key (pop plist))
- (pop plist)))))
-
-(when t
- (liece-define-keys liece-dialogue-mode-map
- "\177" scroll-down
- [delete] scroll-down
- [backspace] scroll-down
- [return] scroll-up
- " " scroll-up
- "$" end-of-buffer
- "/" liece-command-generic
- ">" end-of-buffer
- "<" beginning-of-buffer
- "!" liece-command-exec
- "|" liece-command-show-last-kill
- "a" liece-command-away
- "b" liece-command-submit-bug-report
- "B" liece-dialogue-beep
- "c" liece-command-point-back-to-command-buffer
- "f" liece-command-finger
- "F" liece-dialogue-freeze
- "O" liece-dialogue-own-freeze
- "i" liece-command-invite
- "j" liece-command-join
- "k" liece-command-kill
- "\C-k" liece-command-kick
- "l" liece-command-list
- "L" liece-command-load-vars
- "S" liece-command-save-vars
- "m" liece-dialogue-enter-message
- "M" liece-command-modec
- "n" liece-command-nickname
- "o" other-window
- "p" liece-command-mta-private
- "P" liece-command-toggle-private
- "q" liece-command-quit
- "r" liece-command-reconfigure-windows
- "x" liece-command-tag-region
- "t" liece-command-topic
- "T" liece-command-timestamp
- "\C-t" liece-command-find-timestamp
- "u" liece-command-lusers
- "U" liece-command-userhost
- "v" liece-command-browse-url
- "w" liece-command-who)
-
- (liece-define-keys (liece-client-query-map "\C-c" liece-dialogue-mode-map)
- "a" liece-command-ctcp-action
- "v" liece-command-ctcp-version
- "u" liece-command-ctcp-userinfo
- "h" liece-command-ctcp-help
- "c" liece-command-ctcp-clientinfo
- "g" liece-command-ctcp-generic
- "p" liece-command-ctcp-ping
- "t" liece-command-ctcp-time
- "x" liece-command-ctcp-x-face
- "X" liece-command-ctcp-x-face-from-xbm-file
- "U" liece-command-ctcp-userinfo-from-minibuffer)
-
- (liece-define-keys (liece-dcc-map "\C-d" liece-dialogue-mode-map)
- "s" liece-command-dcc-send
- "r" liece-command-dcc-receive
- "l" liece-command-dcc-list
- "cl" liece-command-dcc-chat-listen
- "cc" liece-command-dcc-chat-connect
- "g" liece-command-dcc-accept)
-
- (liece-define-keys (liece-friends-map "\C-i" liece-dialogue-mode-map)
- " " liece-command-ison
- "a" liece-command-activate-friends
- "d" liece-command-deactivate-friends
- "s" liece-command-display-friends)
-
- (liece-define-keys liece-command-mode-map
- "\r" liece-command-enter-message
- [tab] liece-command-complete
- [(meta control c) >] liece-command-push
- [(meta control c) <] liece-command-pop
- [(meta control c) o] liece-command-mode+o
- [(meta control c) O] liece-command-mode-o
- [(meta control c) v] liece-command-mode+v
- [(meta control c) V] liece-command-mode-v)
-
- (liece-define-keys (liece-command-map "\C-c" liece-command-mode-map)
- "\177" liece-command-scroll-down
- [delete] liece-command-scroll-down
- [backspace] liece-command-scroll-down
- " " liece-command-scroll-up
- "$" liece-command-end-of-buffer
- ">" liece-command-next-channel
- "<" liece-command-previous-channel
- "a" liece-command-away
- "c" liece-command-inline
- "\C-a" liece-command-previous-channel
- "\C-f" liece-command-freeze
- "\C-j" liece-command-next-channel
- "\C-n" liece-command-names
- "\C-u" liece-command-unread-channel
- "l" liece-command-list
- "L" liece-command-load-vars
- "M" liece-command-own-freeze
- "\C-m" liece-command-modec
- "o" liece-command-mode+o
- "O" liece-command-toggle-nick-buffer-mode
- "\C-o" liece-command-toggle-channel-buffer-mode
- "\C-p" liece-command-part
- "r" liece-command-reconfigure-windows
- "\C-r" mule-caesar-region
- "s" liece-command-set-window-style
- "S" liece-command-save-vars
- "v" liece-command-mode+v
- "\C-v" liece-command-browse-url
- "\C-y" liece-command-yank-send)
- (set-keymap-parent liece-command-map liece-dialogue-mode-map)
-
- (liece-define-keys liece-nick-mode-map
- "o" liece-command-mode+o
- "O" liece-command-mode-o
- "v" liece-command-mode+v
- "V" liece-command-mode-v
- "f" liece-command-finger
- " " liece-command-nick-scroll-up
- "\177" liece-command-nick-scroll-down
- [delete] liece-command-nick-scroll-down
- [backspace] liece-command-nick-scroll-down
- "m" liece-command-mail-compose
- "c" liece-command-point-back-to-command-buffer)
-
- (liece-define-keys liece-channel-list-mode-map
- ">" liece-command-next-channel
- "<" liece-command-previous-channel
- "u" liece-command-unread-channel
- "o" other-window
- "c" liece-command-point-back-to-command-buffer)
-
- (liece-define-keys-1 liece-dialogue-mode-map liece-select-keys)
- (liece-define-keys-1 liece-channel-list-mode-map liece-select-keys))
-
-;;;###liece-autoload
-(defmacro liece-server-opened ()
- "Return server process status.
-Return non-nil if stream is opened."
- '(and liece-server-process
- (memq (process-status liece-server-process)
- '(open run))))
-
-(defun liece-start-server (&optional confirm)
- "Open network stream to remote irc server.
-If optional argument CONFIRM is non-nil, ask the host that the server
-is running on."
- (if (liece-server-opened)
- ;; Stream is already opened.
- nil
- ;; Open IRC server.
- (when (or confirm (null liece-server))
- (setq liece-server
- (completing-read (_ "IRC server: ") liece-server-alist)))
- (and confirm
- liece-ask-for-nickname
- (setq liece-nickname
- (read-string (_ "Enter your nickname: ") liece-nickname)))
- ;; If no server name is given, local host is assumed.
- (and
- (stringp liece-server)
- (string-equal liece-server "")
- (setq liece-server (system-name)))
- (let ((host (liece-server-host)))
- (liece-message
- (_ "Connecting to IRC server on %s...") host)
- (cond
- ((liece-open-server liece-server liece-service))
- ((and (stringp liece-status-message-string)
- (> (length liece-status-message-string) 0))
- ;; Show valuable message if available.
- (error liece-status-message-string))
- (t (error (_ "Cannot open IRC server on %s") host))))))
-
-(defun liece-close-server-internal ()
- "Close connection to chat server."
- (if (liece-server-opened)
- (delete-process liece-server-process))
- (if liece-server-buffer
- (kill-buffer liece-server-buffer))
- (setq liece-server-buffer nil
- liece-server-process nil
- liece-server nil))
-
-;;;###liece-autoload
-(defun liece-close-server (&optional quit-string)
- "Close chat server."
- (unwind-protect
- (progn
- ;; Unset default sentinel function before closing connection.
- (when (and liece-server-process
- (eq 'liece-sentinel
- (process-sentinel liece-server-process)))
- (set-process-sentinel liece-server-process nil))
- ;; We cannot send QUIT command unless the process is running.
- (when (liece-server-opened)
- (if quit-string
- (liece-send "QUIT :%s" quit-string)
- (liece-send "QUIT"))))
- (liece-close-server-internal)))
-
-(defmacro liece-server-keyword-bind (plist &rest body)
- "Return a `let' form that binds all variables in PLIST.
-After this is done, BODY will be executed in the scope
-of the `let' form.
-
-The variables bound and their default values are described by
-the `liece-server-keyword-map' variable."
- `(let ,(mapcar
- (lambda (keyword)
- (list (intern (substring (symbol-name (car keyword)) 1))
- (if (cadr keyword)
- `(or (plist-get plist ',(car keyword))
- ,(cadr keyword))
- `(plist-get plist ',(car keyword)))))
- liece-server-keyword-map)
- ,@body))
-
-(put 'liece-server-keyword-bind 'lisp-indent-function 1)
-(put 'liece-server-keyword-bind 'edebug-form-spec '(form body))
-
-(defun liece-server-parse-string (string)
- "Convert a STRING set as `liece-server' and return a property list."
- (when (or (string-match "^\\[\\([^]]+\\)\\]:?\\([0-9]*\\)" string)
- (string-match "^\\([^:]+\\):?\\([0-9]*\\)" string))
- (let ((host (match-string 1 string))
- (service (match-string 2 string))
- (password (substring string (match-end 0)))
- plist)
- (push `(:host ,host) plist)
- (unless (string= service "")
- (push `(:service ,(string-to-int service)) plist))
- (cond
- ((string= password ":")
- (setq liece-ask-for-password t))
- ((string= password ""))
- (t (push `(:password ,(substring password 1)) plist)))
- (apply #'nconc plist))))
-
-(defun liece-open-server (host &optional service)
- "Open chat server on HOST.
-If HOST is nil, use value of environment variable \"IRCSERVER\".
-If optional argument SERVICE is non-nil, open by the service name."
- (let* ((host (or host (getenv "IRCSERVER")))
- (plist
- (if (listp host)
- host
- (or (cdr (string-assoc-ignore-case host liece-server-alist))
- (liece-server-parse-string host))))
- status)
- (setq liece-status-message-string "")
- (when (stringp plist) ;; Old style server entry...
- (setq plist (liece-server-parse-string host)))
- (when (and (stringp host)
- (null (string-assoc-ignore-case host liece-server-alist)))
- (push (cons host plist) liece-server-alist)
- (setq liece-save-variables-are-dirty t))
- (liece-server-keyword-bind plist
- ;; Execute preconnecting script
- (when prescript
- (if (fboundp prescript)
- (funcall prescript)
- (call-process shell-file-name nil nil nil
- shell-command-switch prescript))
- (when prescript-delay
- (sleep-for prescript-delay)))
- (if password
- (setq liece-ask-for-password nil
- liece-password password))
- (if (and (memq type '(rlogin telnet)) relay)
- (setq liece-tcp-relay-host relay))
- (setq liece-tmp-server-name host);; temporary
- (liece-message (_ "Connecting to IRC server %s...") host)
- (cond
- ((null host)
- (setq liece-status-message-string
- (_ "IRC server is not specified.")))
- ((liece-open-server-internal host service type)
- (setq liece-after-registration nil)
- (liece-maybe-poll)
- (setq status (liece-wait-for-response "^:[^ ]+ [4P][5O][1N][ G]"))
- (if (null status)
- (progn
- (setq liece-status-message-string
- (format (_ "Connection to %s timed out") host))
- ;; We have to close connection here, since the function
- ;; `liece-server-opened' may return incorrect status.
- (liece-close-server-internal))
- (setq liece-after-registration t)
- (set-process-sentinel liece-server-process 'liece-sentinel)
- (set-process-filter liece-server-process 'liece-filter)
- (if (or liece-ask-for-password liece-reconnect-with-password)
- (let ((passwd-echo ?*) password)
- (setq password (read-passwd (_ "Server Password: ")))
- (or (string= password "")
- (setq liece-password password))))
- (if liece-password
- (liece-send "PASS %s" liece-password))
- (setq liece-reconnect-with-password nil)
- (liece-send "USER %s * * :%s"
- (or (user-real-login-name) "Nobody")
- (if (and liece-name (not (string= liece-name "")))
- liece-name
- "No Name"))
- (or liece-real-nickname
- (setq liece-real-nickname liece-nickname))
- (setq liece-real-nickname
- (truncate-string liece-real-nickname liece-nick-max-length)
- liece-nickname-last liece-real-nickname
- liece-nick-accepted 'sent
- liece-after-registration t)
- (liece-send "NICK %s" liece-real-nickname)))))
- status))
-
-(defun liece-open-server-internal (host &optional service type)
- "Open connection to chat server on HOST by SERVICE (default is irc).
-Optional argument TYPE specifies connection types such as `program'."
- ;; canonicalize host representation
- (unless (string-match "^[^\\[]" host)
- (setq host (substring host 1 (1- (length host)))))
- (condition-case error
- (save-excursion
- (let ((liece-tcp-connection-type type))
- (as-binary-process
- (setq liece-server-process
- (liece-open-network-stream
- "IRC" " *IRC*" host (or service "irc"))))
- (setq liece-server-buffer (process-buffer liece-server-process))
- (set-buffer liece-server-buffer)
- (set-buffer-multibyte nil)
- (kill-all-local-variables)
- (buffer-disable-undo)
- (erase-buffer)
- (setq liece-server-name host)
- (run-hooks 'liece-server-hook)
- ;; return the server process
- liece-server-process))
- (error
- (setq liece-status-message-string (cadr error)
- liece-server-process nil))))
-
-(defun liece-initialize-timers ()
- "Initialise internal timers."
- (dolist (timer liece-timers)
- (if (caddr timer)
- (cancel-timer (caddr timer))
- (let ((handler (car timer)) (interval (cadr timer)))
- (and (liece-functionp handler)
- (symbolp interval) (boundp interval)
- (setq interval (symbol-value interval))
- (setcdr (cdr timer)
- (list (run-at-time 1 interval handler)))))))
- (setq liece-timers-list-initialized-p t))
-
-(defun liece-read-variables-files (&optional file)
- "Read variables FILEs."
- (and (not (file-directory-p liece-directory))
- (file-exists-p liece-directory)
- (yes-or-no-p "Upgrade the location of the data files? ")
- (let ((file
- (expand-file-name
- (make-temp-name "liece") temporary-file-directory)))
- (unwind-protect
- (progn
- (rename-file liece-directory file 'ok-if-exists)
- (make-directory liece-directory)
- (copy-file file (expand-file-name
- (file-name-nondirectory liece-variables-file)
- liece-directory)))
- (ignore-errors (delete-file file)))))
- (or (file-directory-p liece-directory)
- (make-directory liece-directory))
- (let ((files (if file
- (progn
- (setq liece-variables-file file
- liece-variables-files (list file)))
- liece-variables-files)))
- (dolist (file files)
- (if (file-readable-p (expand-file-name file))
- (load (expand-file-name file) t)))))
-
-;;;###autoload
-(defun liece (&optional confirm)
- "Connect to the IRC server and start chatting.
-If optional argument CONFIRM is non-nil, ask which IRC server to connect.
-If already connected, just pop up the windows."
- (interactive "P")
- (liece-read-variables-files
- (car command-line-args-left))
- (pop command-line-args-left)
- (run-hooks 'liece-after-load-startup-hook)
- ;; Save initial state of window configuration.
- (when (interactive-p)
- (liece-window-configuration-push))
- (unless liece-intl-message-alist
- (liece-intl-load-catalogue))
- (if (liece-server-opened)
- (liece-configure-windows)
- (unwind-protect
- (progn
- (switch-to-buffer
- (liece-get-buffer-create liece-command-buffer))
- (unless (eq major-mode 'liece-command-mode)
- (liece-command-mode))
- (liece-start-server confirm))
- (if (not (liece-server-opened))
- (liece-command-quit)
- ;; IRC server is successfully open.
- (with-current-buffer liece-command-buffer
- (setq mode-line-process (concat " " (liece-server-host))))
- (let (buffer-read-only)
- (unless liece-keep-buffers
- (erase-buffer))
- (sit-for 0))
-
- (liece-initialize-buffers)
- (liece-configure-windows)
- (setq liece-current-channels nil)
- (cond
- (liece-current-channel
- (liece-command-join liece-current-channel))
- (liece-startup-channel
- (liece-command-join liece-startup-channel))
- (liece-startup-channel-list
- (dolist (chnl liece-startup-channel-list)
- (if (listp chnl)
- (liece-command-join (car chnl) (cadr chnl))
- (liece-command-join chnl)))))
- (unless (string-equal liece-away-message "")
- (liece-command-away liece-away-message))
- (run-hooks 'liece-startup-hook)
- (setq liece-obarray
- (or liece-obarray (make-vector liece-obarray-size nil)))
- (unless liece-timers-list-initialized-p
- (liece-initialize-timers))
- (liece-command-timestamp)
- (message (substitute-command-keys
- "Type \\[describe-mode] for help"))))))
-
-;;;###liece-autoload
-(defun liece-command-mode ()
- "Major mode for Liece. Normal edit function are available.
-Typing Return or Linefeed enters the current line in the dialogue.
-The following special commands are available:
-For a list of the generic commands type \\[liece-command-generic] ? RET.
-\\{liece-command-mode-map}"
- (interactive)
- (kill-all-local-variables)
-
- (setq liece-nick-alist (list (list liece-nickname))
- major-mode 'liece-command-mode
- mode-name "Commands"
- liece-privmsg-partner nil
- liece-private-indicator nil
- liece-away-indicator "-"
- liece-beep-indicator "-"
- liece-freeze-indicator "-"
- liece-own-freeze-indicator "-"
- mode-line-buffer-identification
- (liece-mode-line-buffer-identification
- '("Liece: "
- mode-line-modified
- liece-private-indicator
- liece-away-indicator
- "-- " liece-current-channel " " liece-real-nickname)))
- (liece-suppress-mode-line-format)
- (use-local-map liece-command-mode-map)
-
- (when liece-display-frame-title
- (make-local-variable 'frame-title-format)
- (setq frame-title-format 'liece-channel-status-indicator))
-
- (unless liece-blink-parens
- (make-local-variable 'blink-matching-paren)
- (setq blink-matching-paren nil))
-
- (unless liece-command-mode-syntax-table
- (setq liece-command-mode-syntax-table
- (copy-syntax-table (syntax-table)))
- (set-syntax-table liece-command-mode-syntax-table)
- (mapcar
- (function (lambda (c) (modify-syntax-entry c "w")))
- "^[]{}'`"))
-
- (run-hooks 'liece-command-mode-hook))
-
-;;;###liece-autoload
-(defun liece-dialogue-mode ()
- "Major mode for displaying the IRC dialogue.
-All normal editing commands are turned off.
-Instead, these commands are available:
-\\{liece-dialogue-mode-map}"
- (kill-all-local-variables)
-
- (make-local-variable 'liece-beep)
- (make-local-variable 'liece-beep-indicator)
- (make-local-variable 'liece-freeze)
- (make-local-variable 'liece-freeze-indicator)
- (make-local-variable 'liece-own-freeze)
- (make-local-variable 'liece-own-freeze-indicator)
- (make-local-variable 'tab-stop-list)
-
- (setq liece-beep liece-default-beep
- liece-beep-indicator (if liece-beep "B" "-")
- liece-freeze liece-default-freeze
- liece-freeze-indicator (if liece-freeze "F" "-")
- liece-own-freeze liece-default-own-freeze
- liece-own-freeze-indicator (if liece-own-freeze "M" "-")
-
- major-mode 'liece-dialogue-mode
- mode-name "Dialogue"
- mode-line-buffer-identification
- (liece-mode-line-buffer-identification
- '("Liece: "
- mode-line-modified
- liece-away-indicator
- liece-beep-indicator
- liece-freeze-indicator
- liece-own-freeze-indicator
- " " liece-channels-indicator " "))
- buffer-read-only t
- tab-stop-list liece-tab-stop-list)
- (liece-suppress-mode-line-format)
- (use-local-map liece-dialogue-mode-map)
- (buffer-disable-undo)
-
- (unless liece-keep-buffers
- (erase-buffer))
-
- (run-hooks 'liece-dialogue-mode-hook))
-
-;;;###liece-autoload
-(define-derived-mode liece-others-mode liece-dialogue-mode
- "Others"
- "Major mode for displaying the IRC others message except current channel.
-All normal editing commands are turned off.
-Instead, these commands are available:
-\\{liece-others-mode-map}")
-
-;;;###liece-autoload
-(define-derived-mode liece-channel-mode liece-dialogue-mode
- "Channel"
- "Major mode for displaying the IRC current channel buffer.
-All normal editing commands are turned off.
-Instead, these commands are available:
-\\{liece-channel-mode-map}"
- (setq mode-line-buffer-identification
- (liece-mode-line-buffer-identification
- '("Liece: "
- mode-line-modified
- liece-away-indicator
- liece-beep-indicator
- liece-freeze-indicator
- liece-own-freeze-indicator
- " "
- liece-channel-indicator))))
-
-;;;###liece-autoload
-(defun liece-channel-list-mode ()
- "Major mode for displaying channel list.
-All normal editing commands are turned off."
- (kill-all-local-variables)
- (setq major-mode 'liece-channel-list-mode
- mode-name "Channels"
- mode-line-buffer-identification
- (liece-mode-line-buffer-identification
- '("Liece: " liece-command-buffer-mode-indicator " "))
- truncate-lines t
- buffer-read-only t)
- (use-local-map liece-channel-list-mode-map)
- (run-hooks 'liece-channel-list-mode-hook))
-
-;;;###liece-autoload
-(defun liece-nick-mode ()
- "Major mode for displaying members in the IRC current channel buffer.
-All normal editing commands are turned off.
-Instead, these commands are available:
-\\{liece-nick-mode-map}"
- (kill-all-local-variables)
- (setq mode-line-modified "--- "
- major-mode 'liece-nick-mode
- mode-name "Liece Channel member"
- mode-line-buffer-identification
- (liece-mode-line-buffer-identification
- '("Liece: " liece-channel-indicator " "))
- truncate-lines t
- buffer-read-only t)
- (if (boundp 'transient-mark-mode)
- (set (make-local-variable 'transient-mark-mode) t))
- (use-local-map liece-nick-mode-map)
- (run-hooks 'liece-nick-mode-hook))
-
-(fset 'liece-dialogue-beep 'liece-command-beep)
-(fset 'liece-dialogue-freeze 'liece-command-freeze)
-(fset 'liece-dialogue-own-freeze 'liece-command-own-freeze)
-
-(defun liece-initialize-buffers ()
- "Initialize buffers."
- (dolist (spec liece-buffer-mode-alist)
- (let ((buffer (symbol-value (car spec)))
- (mode (cadr spec)))
- (or (get-buffer buffer)
- (save-excursion
- (set-buffer (liece-get-buffer-create buffer))
- (or (eq major-mode mode)
- (null mode)
- (funcall mode)))))))
-
-;;;###liece-autoload
-(defun liece-clear-system ()
- "Clear all Liece variables and buffers."
- (interactive)
- (dolist (buffer liece-buffer-list)
- (when (and (get-buffer buffer) (buffer-live-p buffer))
- (funcall liece-buffer-dispose-function buffer)))
- (if (vectorp liece-obarray)
- (dotimes (i liece-obarray-size)
- (aset liece-obarray i nil)))
- (dolist (timer liece-timers)
- (if (caddr timer)
- (cancel-timer (caddr timer)))
- (if (cdr timer)
- (setcdr (cdr timer) nil)))
- (setq liece-channel-buffer-alist nil
- liece-nick-buffer-alist nil
- liece-current-channels nil
- liece-current-channel nil
- liece-current-chat-partners nil
- liece-current-chat-partner nil
- liece-timers-list-initialized-p nil
- liece-friends-last nil
- liece-polling 0
- liece-channel-indicator "No channel"))
-
-(defun liece-wait-for-response (regexp &optional timeout)
- "Wait for server response which match REGEXP.
-Optional argument TIMEOUT specifies connection timeout."
- (save-excursion
- (let ((status t) (wait t) (timeout (or timeout liece-connection-timeout)))
- (set-buffer liece-server-buffer)
- (with-timeout (timeout nil)
- (while wait
- (liece-accept-response)
- (goto-char (point-min))
- (cond ((looking-at "ERROR") (setq status nil wait nil))
- ((looking-at ".") (setq wait nil))))
- ;; Save status message.
- (end-of-line)
- (setq liece-status-message-string
- (buffer-substring (point-min) (point)))
- (when status
- (while wait
- (goto-char (point-max))
- (forward-line -1)
- (if (looking-at regexp)
- (setq wait 0)
- (liece-message (_ "Reading..."))
- (liece-accept-response))))
- ;; Successfully received server response.
- t))))
-
-(defun liece-accept-process-output (process &optional timeout)
- "Wait for output from PROCESS and message some dots.
-Optional argument TIMEOUT specifies connection timeout."
- (save-excursion
- (set-buffer liece-server-buffer)
- (accept-process-output process (or timeout 1))))
-
-(defun liece-accept-response ()
- "Read response of server. Only used at startup time."
- (unless (liece-server-opened)
- (cond
- ((not liece-reconnect-automagic)
- (error "Liece: Connection closed"))
- (liece-grow-tail
- (let ((liece-nickname (concat liece-nickname liece-grow-tail)))
- (liece)))
- (t (liece))))
- (condition-case code
- (liece-accept-process-output liece-server-process)
- (error
- (or (string-equal "select error: Invalid argument" (nth 1 code))
- (signal (car code) (cdr code))))))
-
-(defmacro liece-replace-internal (buffer match defstring oldstring newstring)
- "Helper function only used from `liece-replace'.
-
-Replace in buffer or list of buffers BUFFER with matching MATCH.
-Argument DEFSTRING used when no matches are there.
-Argument OLDSTRING is replaced with NEWSTRING."
- `(save-excursion
- (set-buffer (get-buffer ,buffer))
- (let (buffer-read-only (inhibit-read-only t))
- (goto-char (point-max))
- (previous-line liece-compress-treshold)
- (save-match-data
- (if (not (re-search-forward ,match nil t))
- (liece-insert ,buffer ,defstring)
- (while (re-search-forward ,match nil t))
- (beginning-of-line)
- (if (re-search-forward ,oldstring nil t)
- (replace-match ,newstring nil t)
- (liece-insert ,buffer ,defstring))
- (liece-insert ,buffer ""))))))
-
-;;;###liece-autoload
-(defun liece-replace (buffer match defstring oldstring newstring)
- "Replace in buffer or list of buffers BUFFER with matching MATCH.
-Argument DEFSTRING used when no matches are there.
-Argument OLDSTRING is replaced with NEWSTRING."
- (unless (listp buffer)
- (setq buffer (list buffer)))
- (dolist (buf buffer)
- (when (get-buffer buf)
- (liece-replace-internal buf match defstring oldstring newstring))))
-
-(defun liece-check-buffers ()
- "Check if there is a buffer larger than `liece-buffer-max-size'.
-If such a buffer is found, shrink it."
- (let ((liece-buffer-check-interval 0))
- (when (> liece-buffer-max-size 0)
- (save-excursion
- (dolist (buffer liece-channel-buffer-alist)
- (set-buffer (cdr buffer))
- (when (< liece-buffer-max-size (buffer-size))
- (let ((inhibit-read-only t)
- buffer-read-only)
- (delete-region (point-min)
- (progn
- (goto-char (- (buffer-size)
- liece-buffer-default-size))
- (beginning-of-line -1)
- (point)))
- (garbage-collect)
- (setq liece-buffer-last-check-time (current-time)))))))))
-
-(defun liece-check-buffers-if-interval-expired ()
- "Timer handler for `liece-check-buffers'.
-Only used from `liece-before-insert-functions'."
- (and (> liece-buffer-check-interval 0)
- (or (null liece-buffer-last-check-time)
- (> (liece-time-difference liece-buffer-last-check-time
- (current-time))
- liece-buffer-check-interval))
- (liece-check-buffers)))
-
-(defun liece-refresh-buffer-window (buffer)
- "Center point in window of BUFFER and redisplay frame."
- (let ((window (liece-get-buffer-window buffer)))
- (when (and window (not (pos-visible-in-window-p (point-max) window)))
- (save-selected-window
- (select-window window)
- (goto-char (point-max))
- (if (null liece-scroll-step)
- (recenter (- (liece-window-height window) 1))
- (vertical-motion
- (- (or liece-scroll-step
- (1+ (/ (liece-window-height window) 2)))
- (liece-window-height window)))
- (set-window-start window (point))
- (goto-char (point-max)))))))
-
-(defmacro liece-save-point (&rest body)
- "Execute BODY, then goto the point that was around before BODY."
- (let ((liece-save-point (liece-gensym "lsp")))
- `(let ((,liece-save-point (point-marker)))
- (unwind-protect
- (progn ,@body)
- (goto-char ,liece-save-point)
- (set-marker ,liece-save-point nil)))))
-
-(defvar liece-before-insert-functions
- '(liece-check-buffers-if-interval-expired
- liece-command-timestamp-if-interval-expired))
-
-(defun liece-insert-internal (buffer string)
- "Helper function only used from `liece-insert'.
-
-Insert before point of BUFFER STRING with decorating."
- (run-hooks 'liece-before-insert-functions)
- (with-current-buffer (liece-get-buffer-create buffer)
- (or (eq (derived-mode-class major-mode) 'liece-dialogue-mode)
- (liece-dialogue-mode))
- (liece-save-point
- (let ((inhibit-read-only t)
- buffer-read-only
- (from (goto-char (point-max))))
- (unless (liece-is-message-ignored string (current-buffer))
- (and liece-display-time (not (string-equal string ""))
- (liece-insert-time-string))
- (insert string)
- (run-hook-with-args 'liece-after-insert-functions from (point)))))
- (unless (liece-frozen (current-buffer))
- (liece-refresh-buffer-window (current-buffer)))))
-
-;;;###liece-autoload
-(defun liece-insert (buffer string)
- "Insert before point of BUFFER STRING with decorating."
- (or (listp buffer)
- (setq buffer (list buffer)))
- (dolist (buf buffer)
- (when (get-buffer buf)
- (liece-insert-internal buf string))))
-
-(provide 'liece)
-
-;;; liece.el ends here
+++ /dev/null
-#define noname_width 500
-#define noname_height 200
-static char noname_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0d,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x8a,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0e,0x29,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1b,0x5d,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x6a,
- 0xd2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xf6,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xad,0x9d,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x86,0x31,0xdb,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x1a,0xee,0x9d,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1d,0x2b,
- 0xfb,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xb8,0x6b,0x54,0x95,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x66,0x4c,0xb6,0xd3,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0xd3,0x68,0xde,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7b,0x6e,0x88,0x2e,0x1c,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x55,0x96,0xf1,
- 0x56,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,
- 0xfa,0x28,0x29,0xf7,0x5c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x0b,0xb6,0xdc,0xa3,0xa2,0x2d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x34,0x4a,0x61,0x66,0xcd,0x6a,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x4a,0x34,0x5b,0x85,0x12,0x5b,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x6d,0x74,0x51,0xcd,
- 0x1b,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x92,
- 0x98,0x56,0x0d,0x27,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x12,0xef,0xb8,0xa6,0x9a,0x6d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x60,0x6f,0xdc,0x61,0xcd,0x15,0x56,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x04,0x00,0x00,0x98,0x28,0xa6,0xb2,0x4a,0x1a,0x32,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x71,0x00,0x00,0xa4,0xd6,0xd4,0x22,0xa9,0x2d,
- 0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xde,0x00,0x00,0xea,0x6a,0x68,
- 0xc3,0x9b,0x32,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xbb,0x07,0x00,
- 0x56,0x1c,0x90,0x4c,0x66,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xef,0x12,0x00,0x6e,0x01,0x70,0x8b,0xaa,0x35,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xd0,0xba,0x0f,0x00,0xec,0x08,0xd0,0x86,0xbb,0x15,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xef,0x2a,0x3d,0x92,0x57,0x60,0x19,0x55,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0xba,0xdf,0xcd,0x54,0xd5,0x43,
- 0x25,0x54,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x77,0x55,0x5d,
- 0x6c,0xbb,0x4f,0x3a,0xfa,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,
- 0xdd,0xff,0xd2,0x59,0x97,0x80,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xda,0x77,0x7d,0xab,0xb0,0x59,0x9f,0x6a,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x74,0xdd,0xef,0xbb,0x43,0xb7,0x34,0xb7,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xde,0x77,0xb5,0x4a,0xa2,0x7a,0x35,
- 0x4b,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0xba,0x7f,0xb3,
- 0x06,0x80,0x4d,0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xdb,
- 0xef,0xfa,0xcb,0x02,0x28,0x5d,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xbf,0xba,0xf7,0xb6,0x03,0x34,0xce,0x28,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc8,0xea,0xef,0x7e,0x97,0x0f,0x5b,0x2e,0x08,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xff,0xba,0xef,0xb9,0x15,0xb3,0x5a,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0xd5,0xef,0x7a,0x5b,
- 0x2a,0xc5,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x7f,
- 0x75,0xff,0xb6,0x6d,0xba,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xde,0xd5,0xdf,0xdd,0x39,0x55,0x24,0x15,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0xf4,0x7e,0x75,0xfb,0x56,0xd7,0x58,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xaf,0xeb,0xdf,0xdf,0x36,0x6e,0x60,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xfb,0x7e,0xf5,0xbd,0xe9,
- 0x52,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf2,0x6d,0xeb,
- 0xaf,0x5e,0xb7,0x4c,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x68,0xdf,0xbf,0xfa,0x3f,0xf6,0xd9,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x08,0xbf,0x75,0xf5,0xaf,0x2f,0x86,0x59,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe2,0xee,0xdf,0x5f,0xf5,0x4f,0x74,0x52,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0xfd,0xbb,0x7a,0xf5,0xdf,0x0b,0x68,
- 0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb5,0x5b,0xdd,0xaf,0xbf,
- 0xf5,0x2f,0x58,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xee,
- 0x77,0xfd,0xea,0xfe,0x8e,0x92,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xac,0x7b,0xdd,0x57,0xbf,0xff,0xb5,0xa5,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x74,0xef,0xbb,0xfe,0xf5,0x6e,0xf7,0x53,0x00,0x00,0x00,
- 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0xba,0xee,0x57,0xdf,0xdf,0x16,0x0c,
- 0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf7,0xbb,0xfe,0xfa,
- 0x57,0xbb,0x03,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x5d,
- 0xdd,0xab,0xff,0xad,0xc4,0x05,0x00,0x00,0x00,0x00,0x60,0x05,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xb0,0xf7,0x77,0xff,0xbf,0x8b,0x75,0x01,0x00,0x00,0x00,0x00,0xfd,0x11,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe8,0x59,0xdd,0xf5,0xf7,0x0d,0x5e,0x00,0x00,0x00,0x00,
- 0x40,0xbc,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0xf0,0xfb,0xdf,0xbe,0x0e,0x2a,0x00,
- 0x00,0x00,0x00,0x00,0xf7,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0xb5,0x7e,0xed,0x6b,
- 0x19,0x04,0x00,0x00,0x00,0x00,0x80,0xde,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x67,0xf8,
- 0xfd,0x15,0xbb,0x1f,0x00,0x00,0x00,0x00,0x00,0x80,0x7b,0xbf,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xb0,0x08,0x5a,0x57,0x4a,0xaa,0x3c,0x00,0x00,0x00,0x00,0x00,0x80,0xee,0x6b,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xa8,0x1a,0xee,0x5f,0x01,0x55,0x19,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xbf,0xbf,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x56,0x95,0x7a,0x3f,0x00,0xac,0x0e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xeb,0x76,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xed,0x1a,0xd7,0x4b,0x10,0x38,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x5f,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2d,0x4b,0xfd,
- 0x1f,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,0xfd,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x95,0x82,0xeb,0x3f,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x57,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x9c,0x6a,0xd4,0xbe,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x50,0xad,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x17,0x6d,0xe1,0xeb,0x5b,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xa4,0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x6a,0xd3,0x52,0xed,0xd6,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x33,0x6a,0xf8,0x9b,
- 0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x10,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x1e,
- 0x9a,0x50,0xb7,0xbe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xcc,0x06,0x24,0xfe,0x5d,0xd6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x73,0x0e,0x5c,0x5a,0x2f,0x94,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x16,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x50,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x5a,0x0b,0x00,0xef,0x1f,0xbc,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x80,0xf4,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xea,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0xa5,0x92,0x91,0xba,0x35,
- 0x68,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x5e,0x00,0x00,0x00,0x00,0xdd,
- 0xff,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xfe,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0xed,0xf6,
- 0xc1,0xd7,0x1f,0x28,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xd0,0x3f,0x00,0x00,
- 0x00,0xa8,0xff,0xf6,0x00,0x00,0x00,0x00,0x48,0x05,0x00,0x00,0xc8,0xff,0x7b,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x52,0xc7,0xae,0x4b,0xed,0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0xa0,
- 0x6f,0x02,0x00,0x00,0xc2,0xde,0xff,0x05,0x00,0x00,0x00,0xe2,0x3f,0x00,0x00,
- 0xf1,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x48,0x81,0x49,0xe0,0x5b,0x25,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x2d,0x00,0xe4,0xba,0x00,0x00,0x00,0xf8,0xfb,0xde,0x12,0x00,0x00,0x20,0xfd,
- 0x7f,0x00,0x00,0xfc,0xff,0x7f,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x24,0x40,0x55,0xf5,0xbe,0x3b,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x9c,0x00,0xb1,0xff,0x0a,0x00,0x00,0xfd,0xff,0xf7,0x0b,0x00,
- 0x00,0x88,0xff,0xfe,0x02,0x40,0xfe,0xef,0xfe,0x0a,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa9,0xff,0x0b,0xbb,0xa8,0xfd,0x0b,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0xfc,0xb6,0x02,0x00,0x20,0x9f,0xb6,
- 0x7f,0x03,0x00,0x00,0xf1,0xff,0xff,0x02,0x00,0x9f,0xfe,0xf7,0x05,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0xab,0x5d,0x26,
- 0xb8,0x57,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xbc,0x02,0xd8,0xef,0x01,0x00,
- 0x88,0x47,0xf9,0xfd,0x17,0x00,0x40,0xbc,0xdd,0xef,0x09,0xd0,0x47,0xf9,0xff,
- 0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xad,
- 0x7e,0xf7,0x28,0x4f,0xad,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x40,0x7f,
- 0x7b,0x05,0x00,0xc0,0xa9,0xea,0xb7,0x05,0x00,0x10,0x47,0xf4,0xfd,0x02,0xe0,
- 0xa9,0xfa,0x7f,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x48,0xfb,0xd7,0xbd,0x87,0x5a,0x7f,0x05,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xbc,0x02,0xda,0xff,0x02,0x00,0xe8,0xaa,0x72,0xff,0x2b,0x00,0xc4,0x13,0x52,
- 0xff,0x17,0xf4,0x52,0xf9,0xfe,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xaf,0x7e,0xf7,0x9e,0x63,0xed,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x15,0xa0,0x7f,0xbb,0x02,0x00,0x72,0x94,0xf0,0xff,0x02,0x00,
- 0xf8,0x40,0xd5,0xb6,0x04,0x79,0x94,0xf0,0x77,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xf5,0xd7,0xad,0xf7,0x7e,0x11,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x5c,0x89,0xd6,0x7f,0x01,0x00,0xb8,0x4a,0xe4,
- 0xb6,0x0b,0x40,0xfe,0x94,0x90,0x7a,0x43,0xbc,0x4a,0xfa,0xff,0x0a,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdd,0x5f,0xbd,0x7f,0xdd,
- 0xb9,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0xc2,0x7f,0xaf,0x08,0x80,
- 0xbe,0x12,0xf1,0xff,0x02,0x00,0x3f,0x4a,0x44,0x4a,0x09,0x1e,0x25,0xf0,0xdf,
- 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0xea,
- 0xef,0xd5,0xb7,0xe6,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xac,0xe0,0xed,
- 0x5b,0x00,0x00,0x2c,0x25,0xb0,0x7b,0x09,0xa0,0x5b,0x05,0x00,0xa0,0x02,0x5f,
- 0x09,0xf9,0x7e,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x60,0xbe,0xbf,0xba,0xbe,0xfe,0xab,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xae,0xa8,0xff,0x27,0x01,0x20,0x5f,0x01,0xfd,0xaf,0x02,0xc4,0xaf,0x12,0x00,
- 0x09,0xa0,0x4f,0x05,0xfc,0xb7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0xad,0xd5,0xdf,0xeb,0xab,0xbe,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x4e,0xf2,0x6b,0x15,0x00,0x40,0xaf,0x2a,0xb4,0xdd,0x00,0xf0,
- 0xbf,0x02,0x00,0x00,0x80,0x57,0x01,0xfd,0x5f,0x04,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xfe,0xbf,0x6a,0x5f,0xff,0x55,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x2b,0xb8,0xfe,0x0a,0x00,0x80,0x4b,0x80,0x7e,
- 0x37,0x00,0xf9,0x6d,0x01,0x00,0x40,0xc8,0xab,0x28,0x5f,0x95,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xd7,0x56,0xfd,0xf5,0x55,
- 0xff,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x56,0xed,0xbf,0x02,0x00,0xa0,
- 0x17,0x89,0xaf,0x9a,0x00,0xf8,0xbf,0x08,0x00,0x00,0x40,0x07,0xc0,0x5f,0x2b,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x81,0xfd,0x4b,
- 0xab,0xdf,0xfe,0xda,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x27,0xbc,0x6d,
- 0x01,0x00,0xc0,0x85,0xf4,0xd3,0x05,0x80,0xde,0xab,0x02,0x00,0x00,0xe8,0x93,
- 0xfe,0xe3,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x23,0xb7,0x2d,0xd4,0xb5,0xaf,0x77,0x9d,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x55,0xee,0x5f,0x00,0x00,0xe8,0xf7,0xbf,0xa8,0x2a,0x00,0x7e,0x7f,0x00,0x00,
- 0x00,0xe0,0xf7,0x7f,0x94,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x38,0x05,0xfd,0x8e,0x50,0xff,0xfa,0xde,0x77,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xd0,0x2b,0x7b,0x2b,0x01,0x00,0x60,0xbf,0x0b,0x92,0x00,0x40,0xfb,
- 0xaf,0x00,0x00,0x00,0xf4,0xff,0x05,0x29,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xd8,0x42,0xdb,0x15,0x04,0x54,0x5f,0xb7,0xdd,0x0b,
- 0x00,0x00,0x00,0x00,0x00,0xc4,0x12,0xde,0x1f,0x00,0x00,0xe8,0xdb,0xa0,0x4a,
- 0x04,0x00,0xff,0x5f,0x00,0x00,0x00,0xf0,0x5b,0xa0,0x54,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x05,0xb7,0x2a,0x20,0xfe,0xf5,
- 0xfd,0x76,0x47,0x00,0x00,0x00,0x00,0x00,0x70,0x8d,0x7b,0x23,0x00,0x00,0x70,
- 0x2f,0x95,0x24,0x01,0x90,0xdf,0x3d,0x01,0x00,0x00,0xf9,0xad,0x96,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x53,0x0d,0xbb,0x6a,
- 0x00,0xab,0xbe,0xae,0xdf,0x3d,0x00,0x00,0x00,0x00,0x00,0xd2,0x92,0xee,0x1d,
- 0x00,0x00,0xf2,0xfb,0x24,0x09,0x00,0x80,0xf7,0x5f,0x00,0x00,0x40,0xf8,0x7f,
- 0x21,0x28,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0xd2,
- 0x0f,0xbb,0x75,0xc8,0xfe,0xeb,0x7b,0x7d,0xf7,0x02,0x00,0x00,0x00,0x00,0x7c,
- 0x8d,0xbf,0x03,0x00,0x00,0xd8,0x2f,0x09,0x00,0x00,0xa4,0x7f,0xb7,0x00,0x00,
- 0x00,0xde,0x2b,0x8a,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x98,0xa6,0x38,0x6e,0x8a,0x82,0x6b,0x7d,0xdd,0xd7,0x5d,0x2b,0x00,0x00,
- 0x00,0x80,0xba,0xa6,0xed,0x5f,0x00,0x00,0x72,0x5b,0x82,0x00,0x00,0xc1,0xfd,
- 0x5f,0x00,0x00,0x10,0xfb,0x5f,0x01,0x00,0x00,0x31,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x50,0x62,0x1b,0x55,0xd5,0xe8,0xaa,0xd7,0x77,0x7d,0xf7,
- 0x2d,0x01,0x00,0x00,0x28,0x6f,0x89,0xbf,0x02,0x00,0x10,0xfc,0xaf,0x00,0x00,
- 0x00,0xf8,0xef,0xbf,0x00,0x00,0xc5,0xfd,0x26,0x10,0x00,0x00,0x18,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x8d,0x2c,0xae,0x0b,0xf4,0xd4,0xba,
- 0xdd,0xd7,0x7d,0xff,0x10,0x00,0x00,0xc0,0xbb,0x85,0xeb,0x27,0x00,0x04,0xef,
- 0x3d,0x11,0x00,0x80,0xd8,0xff,0xbd,0x04,0x40,0x70,0xf8,0x9f,0x02,0x00,0x40,
- 0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x61,0xc9,0x6a,0x9a,0x20,
- 0x1b,0x15,0xd4,0x76,0x7f,0xd7,0xd5,0x97,0x10,0x90,0xfa,0xaf,0xd2,0x7e,0x9f,
- 0x52,0xd0,0xb9,0x77,0x04,0x00,0x08,0xce,0xbe,0x6f,0x02,0x04,0x9e,0xfc,0x7f,
- 0x00,0x00,0x04,0x27,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xc7,0x96,
- 0xad,0x74,0xc8,0x5e,0x4a,0xa9,0xdf,0xd5,0x7d,0xbf,0x7d,0x85,0x84,0xb6,0x6a,
- 0x85,0xef,0xf6,0x00,0xfd,0xf8,0xff,0x43,0x24,0xc2,0xc7,0xf7,0xff,0x20,0xa1,
- 0x2f,0xdc,0xff,0x4b,0x12,0xd1,0x85,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x5c,0x24,0xe9,0xd2,0xac,0xff,0x4b,0x09,0xa0,0xba,0x7f,0xb7,0xf5,0xb6,0x7f,
- 0xfb,0xff,0x57,0xe0,0xbe,0xdf,0xff,0x77,0x6d,0xdb,0x1f,0x81,0xe8,0xe9,0xff,
- 0xfd,0x05,0xfc,0x47,0xfd,0xff,0x17,0x40,0xf8,0x11,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x27,0xcd,0xaa,0x6c,0xd9,0x57,0xad,0x22,0x88,0xee,0xd5,0xef,
- 0xbf,0xef,0xdb,0x7e,0xdb,0xba,0x82,0xeb,0x77,0xff,0xbe,0xf8,0xff,0xfd,0x55,
- 0xfe,0xc5,0xbd,0xdf,0xff,0xf7,0x53,0xf8,0x7d,0xff,0x2d,0xff,0x25,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xdd,0x8e,0xbe,0xdb,0x74,0xf5,0x15,0x04,0x40,
- 0xb8,0xbe,0xba,0xf6,0xbe,0xee,0xeb,0x7d,0x57,0xc0,0x7f,0xfd,0xdd,0xab,0xb2,
- 0xbb,0xef,0xff,0x7f,0xd4,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0xff,0xff,0x3f,
- 0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xf2,0x19,0x45,0x57,0xb3,0x4d,
- 0x49,0x01,0x00,0xca,0xef,0xef,0xbb,0xeb,0xfb,0x7e,0xd7,0x2d,0x80,0xda,0xbf,
- 0xf7,0x5f,0xf9,0xee,0x7e,0xff,0xb7,0x8a,0xef,0xfb,0xbb,0xff,0x4a,0xf8,0xef,
- 0xff,0xff,0xbf,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x95,0x2e,0xd5,
- 0x54,0x75,0xa7,0x22,0x00,0x00,0x50,0xbd,0xbe,0xef,0xbe,0xaf,0xdb,0x7f,0x93,
- 0x80,0x7f,0xdb,0x5f,0x6b,0xf5,0xff,0xfb,0x6d,0x5f,0xe5,0x7e,0xdf,0xfe,0xaf,
- 0x2a,0xbc,0xff,0xfb,0xff,0x57,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
- 0x33,0x29,0xb6,0xd1,0xaa,0x15,0x08,0x00,0x00,0x80,0xee,0xeb,0xba,0x6f,0xfb,
- 0x7f,0xfb,0x0d,0x00,0xdb,0xff,0xfa,0xbf,0xa0,0xfb,0xef,0xff,0xdf,0x8a,0xfb,
- 0xff,0xff,0xbb,0x05,0xf0,0xff,0xff,0xff,0xef,0x12,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x65,0x55,0x94,0x29,0xb5,0x47,0x02,0x00,0x00,0x24,0xb9,0xbf,
- 0xef,0xfa,0x5d,0xf5,0xaf,0x02,0x00,0xff,0xf6,0xef,0x56,0xf2,0x6f,0x7f,0xff,
- 0xba,0x80,0xdf,0xf7,0xef,0x6e,0x15,0xf0,0xbf,0xbf,0xbb,0x5b,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0x01,0x7b,0x6e,0xb4,0xd3,0xae,0x00,0x00,0x00,0x00,
- 0x00,0xd2,0xea,0xbb,0x6f,0xf7,0xbf,0xbb,0x00,0x00,0xb6,0xbf,0xfd,0x2f,0xc0,
- 0xfd,0xff,0xb7,0xdf,0x0a,0xff,0xfe,0xff,0x5f,0x01,0xc0,0xf7,0xff,0xff,0xbf,
- 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x81,0x55,0x6b,0xcc,0xe4,0x4a,0x01,
- 0x00,0x00,0x00,0x00,0xa8,0xbf,0xfe,0xfe,0xdf,0xf6,0x4d,0x02,0x00,0xfa,0xf6,
- 0x77,0x95,0x80,0xdf,0xed,0xfd,0x37,0x01,0xfe,0xbf,0xfd,0x5b,0x04,0xe0,0xfe,
- 0xfd,0xff,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x02,0xa5,0x35,0xb0,
- 0x25,0x19,0x20,0x00,0x00,0x00,0x00,0x40,0xea,0xaf,0x57,0xb5,0x7f,0x2b,0x00,
- 0x00,0xbc,0xdf,0xfe,0x05,0x40,0xf7,0xbf,0xff,0x4d,0x00,0xec,0xfb,0xff,0xaa,
- 0x00,0x80,0xff,0xef,0xff,0x5b,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5c,0x03,
- 0xb4,0x2e,0x98,0xcd,0x06,0x00,0x00,0x00,0x00,0x00,0x21,0x6d,0xfd,0xfe,0xff,
- 0xef,0x02,0x00,0x00,0xf0,0xfe,0x5f,0x09,0x00,0xbd,0xfb,0xb7,0x2b,0x00,0xf9,
- 0xff,0xb7,0x0b,0x00,0x40,0xff,0x7f,0xb7,0x05,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xb0,0x0c,0x74,0x39,0x60,0x4d,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,
- 0xb7,0xdb,0xfe,0x3a,0x49,0x00,0x00,0xc8,0xeb,0xb7,0x02,0x00,0xfa,0xff,0xfe,
- 0x0a,0x00,0x74,0xbf,0xff,0x12,0x00,0x08,0xbd,0xff,0xff,0x2a,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0xa8,0x05,0x94,0x0a,0x20,0x91,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xa1,0xfa,0xff,0xeb,0x45,0x00,0x00,0x00,0x50,0xbf,0x2a,0x00,0x80,
- 0x6c,0xef,0x5f,0x05,0x00,0xd0,0xfb,0x96,0x08,0x00,0x00,0xfa,0xff,0xad,0x02,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xb0,0x0d,0xb8,0x03,0xc0,0x1d,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x4a,0xb5,0x5d,0x2a,0x02,0x00,0x00,0x82,0xea,
- 0x16,0x01,0x00,0xa8,0xfb,0x6b,0x11,0x00,0xa0,0xee,0x55,0x02,0x00,0x80,0xa4,
- 0xbb,0xb7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0xa0,0x0f,0xa8,0x04,0xa0,
- 0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xa8,0xaa,0xaa,0x00,0x00,0x00,
- 0x00,0x20,0x55,0x21,0x00,0x00,0x50,0xaf,0x16,0x00,0x00,0x88,0x5a,0x0b,0x00,
- 0x00,0x00,0x68,0xed,0x4a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xad,0x81,0x30,
- 0x50,0x0d,0xc0,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x05,
- 0x12,0x00,0x00,0x00,0x00,0x48,0x04,0x00,0x00,0x84,0xb4,0x49,0x01,0x00,0x20,
- 0xa5,0x44,0x00,0x00,0x00,0x10,0x5b,0x15,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0x76,0xe1,0x16,0xb0,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x24,0x24,0x10,0x00,0x00,0x00,0x00,0x80,0x24,0x00,0x00,0x00,0x20,0x49,0x02,
- 0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x40,0xaa,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0x4d,0x87,0x6d,0xa0,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,
- 0x00,0x92,0x10,0x00,0x00,0x00,0x42,0x01,0x00,0x00,0x00,0x00,0x01,0x0a,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x52,0x85,0xad,0x40,0x19,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x6d,0x0b,0x59,0xc0,0x3d,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x75,0x0b,0xad,
- 0x80,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xcb,0x3a,0x9a,0x81,0x6a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x6d,0x53,0x6c,0x29,0xad,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x69,0x75,0xca,0x76,0x3a,0x00,0x00,0x00,0x00,
- 0x00,0x28,0x0a,0x00,0x00,0x50,0x01,0x00,0x00,0x40,0x01,0x00,0x00,0xa0,0x16,
- 0x00,0x00,0x30,0x04,0x03,0x00,0x00,0x00,0x28,0x14,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x02,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0xa0,0x02,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4b,0x8b,0x18,0x4f,0x06,0x00,
- 0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x01,0xa0,0x00,0x00,0x00,0x81,0x00,0x00,
- 0x00,0x40,0x29,0x00,0x00,0x08,0x80,0x00,0x00,0x00,0x00,0x10,0x14,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xa0,0x00,0x40,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd6,0xb4,0xd4,
- 0xea,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x42,0x45,0x05,0x90,0x20,0x85,0x42,
- 0x45,0x0a,0x2a,0x54,0x40,0x10,0x2a,0x54,0x21,0x16,0x50,0x42,0x50,0x01,0x54,
- 0x0a,0x28,0xa8,0x50,0xa1,0x82,0x0a,0x21,0x05,0x15,0x40,0x88,0x90,0x80,0x20,
- 0x22,0x90,0x40,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x6c,0x76,0x59,0xb6,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x21,0x89,0x04,0x48,
- 0xa8,0x62,0x85,0xa4,0x94,0x12,0x12,0x40,0x10,0x29,0x28,0x89,0x88,0xa2,0xaa,
- 0x48,0x02,0x28,0x04,0x25,0x24,0x24,0x90,0xa2,0x8a,0x50,0xa1,0x12,0xa0,0x50,
- 0x21,0x29,0x41,0xd5,0x20,0x83,0xa4,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xca,0x54,0xa3,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x42,
- 0x44,0x01,0x48,0x11,0x14,0x48,0x81,0x08,0x41,0x04,0x40,0x28,0x42,0x80,0x90,
- 0x86,0x10,0x89,0x14,0x01,0x08,0x2a,0xa2,0x04,0x08,0x00,0x51,0x08,0x21,0x8a,
- 0x08,0x20,0x14,0x55,0x10,0x45,0x20,0x81,0x50,0x41,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xac,0x9a,0x65,0x2f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xa0,0x10,0x44,0x00,0x84,0x08,0x21,0x44,0x20,0x48,0x30,0x05,0xa0,0x92,
- 0x20,0x40,0x14,0x01,0x21,0x42,0x04,0x01,0x32,0x89,0x40,0x02,0x04,0x20,0x22,
- 0x44,0x09,0x62,0x14,0x40,0x00,0x22,0x04,0x12,0x08,0x10,0x25,0x10,0x08,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x67,0x5a,0x02,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0xa8,0x8a,0x00,0x84,0x10,0x15,0x94,0x40,0x94,0x0d,
- 0x02,0xa0,0x0a,0x55,0x5a,0x09,0x81,0x10,0x84,0xaa,0x02,0x84,0x12,0x2d,0x2a,
- 0x54,0xac,0x12,0x0a,0x28,0x14,0x08,0x50,0x18,0x11,0x74,0x51,0x30,0x48,0x11,
- 0x60,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0xb4,0xd2,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x90,0xa0,0x00,0x55,0x09,0x12,0x48,
- 0x50,0x48,0x10,0x01,0x10,0x42,0x09,0x45,0x84,0x40,0x08,0xa1,0x44,0x00,0x52,
- 0x89,0x20,0x54,0xa8,0x10,0x09,0xc4,0x10,0x21,0x04,0x20,0x84,0x28,0x08,0x21,
- 0x00,0x94,0x12,0x88,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xd8,0x56,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x10,0x40,0x00,0x92,
- 0x14,0x11,0x44,0x20,0x84,0x00,0x04,0x40,0x84,0x00,0x81,0x10,0x81,0x28,0x45,
- 0x02,0x00,0x42,0x50,0x01,0x40,0x40,0x04,0x29,0x04,0x08,0x15,0x08,0x50,0x08,
- 0x09,0x04,0x10,0x18,0x04,0x11,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xb0,0x6a,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x08,
- 0x10,0x80,0x40,0x88,0x0a,0x22,0x10,0xa8,0x80,0x02,0x28,0x42,0x00,0xa1,0x8c,
- 0x40,0x08,0x22,0x04,0x00,0xa1,0x88,0x00,0x20,0x80,0x8a,0x10,0xa1,0x04,0x12,
- 0x0a,0x00,0x8a,0x10,0x0a,0x10,0x10,0x82,0x08,0x10,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x8b,0x16,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x10,0x50,0xc5,0x80,0x42,0x85,0x20,0x45,0x21,0x44,0x14,0x01,0x20,0x4a,
- 0x25,0x4a,0x40,0xa5,0x14,0x41,0x95,0x00,0x42,0x90,0x2a,0x40,0x41,0x84,0x52,
- 0x86,0x10,0x61,0x05,0x50,0x04,0x29,0x24,0x21,0x08,0x2a,0x51,0x28,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x8e,0x05,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x50,0x22,0x03,0x81,0x04,0xa9,0x50,0x12,0x82,0x89,
- 0x00,0x28,0x14,0x95,0x2a,0x86,0x48,0x08,0x21,0x54,0x80,0x22,0x88,0x12,0x55,
- 0x5a,0xaa,0x50,0x21,0x8c,0x90,0x00,0x28,0x42,0xa4,0x48,0x08,0x04,0x94,0xa8,
- 0xa1,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1a,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,0x40,0x40,0x00,0x09,0x00,0x00,
- 0x01,0x04,0x02,0x02,0x00,0x80,0x00,0x40,0x00,0x02,0x80,0x00,0x00,0x00,0x40,
- 0x10,0x04,0x09,0x04,0x10,0x00,0x84,0x00,0x02,0x06,0x00,0x00,0x11,0x90,0x20,
- 0x10,0x00,0x01,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0x01,0x00,0xa8,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x2e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x01,0x00,0x50,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+++ /dev/null
-/* XPM */
-static char * liece_xpm[] = {
-"500 200 25 1",
-" c None",
-". c #2B050D",
-"+ c #AFAEAC",
-"@ c #818180",
-"# c #B3082C",
-"$ c #5F595B",
-"% c #DE6A7C",
-"& c #969493",
-"* c #E3DBDB",
-"= c #820B24",
-"- c #C9606E",
-"; c #3E3637",
-"> c #9E9E9C",
-", c #C2C2C0",
-"' c #5C051A",
-") c #AF5460",
-"! c #E3717F",
-"~ c #EDC2C8",
-"{ c #E99EA4",
-"] c #262221",
-"^ c #8D454C",
-"/ c #BA485D",
-"( c #F2EFEF",
-"_ c #D496A3",
-": c #B54159",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" >* ",
-" +;;+( ",
-" (>;-!-$, ",
-" ,$!!!!]@* ",
-" ( *@;]]!]$, ",
-" *@@>*(,$]%!-!@*( ",
-" ,>$];;&((&$%!%!;+* ",
-" ,@]]];];>*,$!!];!@* ",
-" ,$]%!!-!]@*>]!%]-;>* ",
-" *@])!]!]]]@,@]%%!]@, ",
-" (*** *$-%;-!;!]$@;])%-$&* ",
-" (>@$@>( @;-!!!;!!]$$];!!];+( ",
-" ,@;%-%$;@* *$)]!!;]-]!]]]!-]!@* ",
-" +$;]!!;%!];&* +;;]!]!!]]!];]];%;+( ",
-" *@;]]!);--$-;+(*@]!!!!!-!%%!!%]%$$, ",
-" *@]!!!])%!!;!!$+ +;!!;!%]]%%!-!]%%]>( ",
-" +]!!!-$@]!%!!-]@*(>;%]!%!]]]]!];]!]@, ",
-" *( (@]!%]]$(@]]]!!;$> *$%%%%%]]]!!!!!!%]@* ",
-" *@& (&^%!]-$>,;%-!-!!$( >;]^!-;;$%%%%%!-!;+( ",
-" +@]%] @;%%]]]$,>!%!!!%;>(,@;)!];;,$]];!!]]]@, ",
-" ,&$]!]-&( +$]%]]!;,*;]-!;]!$,(+;%!%!!@+$-]%!])!;+* ",
-" (&]!%%!!;, *$%-%!%%$,+!!!]!!]&(*@;!-!%]*,$]%%!]%)$* ",
-" (,;!!-!-!&**&;!]]!!]>(;!%$%!!$+(*$!!]!!&*+@]!);!;$* ",
-" *(( @]!!]!%;+(*@%];%!;@,>;!]%%%]$( @]];!%;+(,@%!-;@,( ",
-" +@$@,((+$%!-!!-$((+]!%!%!]@,@%!%]!;$+(,$];]!!$*(,$$@,* ",
-" +$!;!!$>((&]]]!!]]>(*@;]%%%!;+,;!!%-!]$( >;;]!!;& *,* ",
-" (**,( (>$;!;;]!)$,(,$;;]);];( ,$]-!;;;@,>]]!!!!;+(,@]!%%!] ( ",
-" ,~~~~~~* ( ,@]!!!!%!%!]$,(>;!!%!%%&**@;!-!%!;+(;-!%$%]@((,$-!;$@* ",
-" ~~~~_-::_*(*(( *$%!!!%!-%%$!;+ ($%%!]!!;,(,@!!!!!)@,>]]-];!@( *&$$@,* ",
-" ,~~{:######>**(*( @$-%]]$@$!%-;@,( ,$%!]%-;@((+]!]]!!;>*$!!!!-$* ,@>*( ",
-" ~~~{#########@,**(( *$]%!%]&,@]);@,( (@]%%!-%]> *$!!]!!!$+>]!%!!@( *( ",
-" *~~{:##########>,,*(( *;;]!-;&,,@&,*( ,$)]!!$%; +;!]!%!]$;]%!!]>( ",
-" (~~~############=>+,*(( ,+** ,$;;!]];>(,*((( (&;;];;!!+(*@;;!];%);-!!)$, ",
-" ~~~/#######=#####$&+,,>@;;;$,*(@!!!!!!]$$@@>&,,( ,$;%!%%!$,(,$!%!;%!!]];@, ",
-" *~~!###########=##=@&@$;-!;!!;>(+]!%!!!];!!;!];$@+((>;%%!-%^&((+$%%]!%!!]$+( ",
-" (~~{###############=$$;))%-;]!]@,(@)!]^%]]!!;$%]]]]@ (@-!]!!]$+ (,$);;];$@* ",
-" ~~~-########=######=.]]$--%%-!-]$ *]%!%!]]!%]%%!%!!%>*+;!]%!!;$ *&&@&+,* ",
-" *~~!############=####'].^);-!!!!]%,(>;]-!];!%]%-!%!;];+,&]])%!;]> (( ( ",
-" (~~~##################=]]^]@$;]-!]%$*(>$;!]]%%;]%^%%)$!$,,$]]!-]!;* ",
-" {~~/##############=###=];^]@+$]!!!!], (,+@$@$;$]]-!!]!!;&,&;%%!!!!+( ",
-" ~~~!###########=####=##=..^^;(>;!%]!;+( (*((**++>$]!;]-!$(*$!%!]]$,( ",
-" *~~{####################'.];^]>+@!!;!$, (,&&+*,@%;]!!;, +;!]@>,( ",
-" ~~~~###############=#####'].^^]$&$-!;;$,*( ,$!;$, +]]!!!;& (@$@,( ",
-" *~~~/#################=###'..;^]]$;!!;];$$>( ,@-!!;$&*,$]]%!$, ,,(( ",
-" *~~~/#############=#####=##'].;^)-;;%!];@;-],(,$]!-;%$>&]%]%!$, ( ",
-" *~~~/######################='..^^)-%]-!-!%%!!$,*@;!!!%!]]!%%!;>( ",
-" (~~~~/##################=####=]]].^]--];$;^%]]%]& *$%%;)!;]!];;>* ",
-" *~~~~:################=####=##'.]];))%!];,>;-!!%!$,(+;!!!!%!%]$@* ",
-" ~~~~{##########################.];;]))-%;%+,$;;-%!]$ (+]%%%%];$>( ",
-" *,~~~!#####################=###==.];$;)];%;;$++$;;!]]!, +>$$@++( ",
-" (*~~~~{:###################=######=..]$@$]--%;]^@*@^!-!%_$* ((**(( ",
-" (*~~~~{%#########################=##'...;&>$]%%]]-],,;)%%%-^> ",
-" (*~~~~~{%#############################=..]]$>,>;]%;;];$*&$]!]]-@* ",
-" (**~~~~~~{/#######################=##=###=...]$@+*,@]!!!!;],,$;!!^;&* ",
-" *****,~~~~~~~~_%################################=...];@+,*(,$!%%%%!$,&;%]@+*( ",
-" *~~~~~~~~~!%:#################################=#....]$>,*(((&;!]]%]]&*>@+* ",
-" *!%/:::##################################=###=.....];>,((((*$!%!!]%$,(,( ",
-" !##########################################'..]]];^]@*(+@>(>;%!%!;@* ",
-" (-#######################################=.....;;^^)$+&$;$+,@;!]@,* (* ",
-" ((/#####################################'.]]]];;.])-;;];]]$*,@@>, ,~~ ",
-" ((*/#################################='...];$$]^)]--]!%!!!;>*,*( ~~~_@*(((( ",
-" ((*~:##############################='.....];@@@^);!-]-!;;!$+( ( (,~~{==:*(((( ",
-" (*~{%###########################=....].]]]@>>,$-%-!-!-]$$+* (~~~~#='=@*,**(( ",
-" ((*&;:=######################='......]];^^$+,*>;%!%]]]$&*( (~~~!======&,,*(( ",
-" (,$]^.=%%/##############='......]]].;^.^]$+(((&;]%]$@,* ~~~!========&+,,(( ",
-" ( *$]/))~~{########'...]]];]]]]]];;]]^^^))]>( ,$!;&,* *~~!=='==='===>+,**( ",
-" ,,,*(+;-]_~~%#######..]];;;;$$$;];=^^:;)))--]$, (,$>, ~~{============&+,**( ",
-" *>@;$$$,(@$>~~{#######=]]];$$$@@@@&@;^^^];-];]];;+ *( *~-========'=='=$+,*(( ",
-" (@;]-%%!!$+,,~~~:######'.]]$$@@&&>>++,@;-/-;%-%!]]]@( (~:====='========$+,*(( ",
-" ,]!]!!-!!]$,~~~%#######..];$@>+,,,,*,*,&]%-%%%%%!];>( *:========'==='=^>+**(( ",
-" +$;!!!)!!--!${~~{#######].]]$@&,,**((((((,$]-]%%!-]@>, {=========='==;$@>+*(( ",
-" *$!]!!];]!-!%$,~~:######'.]]]$>,**((((((( (,$%;%!]$&,( ((&===='====='];$@&,**( ",
-" (,;!]]!$>@;]!;~~~%######...]];],,(((( (,]]^;&,* (*>)=====''.]];$@>+*(( ",
-" >,( @]!!!$@*,@;@~~~_######=]]..;.]@((( (@@$+( ((*,>@$;;];]];;$$@+,*( ",
-" *&$;$,*@^!%%%;+,,>,~~{######^]].];^^];, (,** ((*,>&$$;$;$$$@&>,,((( ",
-" (+@$;-;+(+;%;;%]$@+,~~~/#####:$;]].]^)]-@* ((*,,>&@@@$@@@&+,**( ",
-" >;;$!!!$,,;!!%!!;^!{~~%#####^$$;$];^)--!;+ ((**,++>>>>++,,*((( ",
-" *>$^%];%!]$+*&!%)!!]!~~~!######$;;$@$])--%%!$( (((**,*,,,,**(((( ",
-" ,@;;]%%;]]@+( *;!]!!;&~~~#####=]]$$$@&@;]]]!!;> (((((**((*(((( *((**( (((**( ",
-" ,,;!%]%!]]@,( (>;%%!{~~~######';.;$&>,>$]-;!%]$( ((((((((( (**,~~~~~~~* ( (,~~~~~~~~*( ( ",
-" *&$]*&]!]!%;]@ @$:_~~~/#####;;;];$&,*,&;-]!!%-+( *,~,* ( (*~~~~~~~__!:&_**((( *~~~~~~~+!&^-&,*(((( ",
-" ,&$]!!@>$;%!%]%] *,((+&~~~-#####^=.;;]$>**(*$!;]!]@+ *( ,~~~~~~((( (*~~~~~_%='''''''=>**((( (( *,~~~~{!^........$**((( ",
-" ,@;]]-!]&>]!%!-!!@,>@$+ (~~~!####=];]]=;]]>*(((>;-]$>,( (~, (~~~{/==')(**(( (~~~~~{-=''='''''''''&,,*(( (*~,~~,~,*( (*~~~~~-;............$,,*(( ",
-" (@;-!!!]!;@,@;]!]]!;@$]]@*~~~!####/@$.;.^^]]@(( (@$@,( (~~!, ( ( *~~~{#======***((( *~~~~_:'''=''''''''''''+,***( (*,~~~~~~~~__~~(((( **~~~{)................@+,**( ",
-" ,+$@$!!]!];@,(,;]!]]!!]$];;~~~~####=;$$;]]^^]]$( *,*( *~!==**((( (~~~_======'=$,,,(( (~~~~_:''=''''=''''''''''$>+**( *~~~~~~{!^='.'..]),(*(( ~~~~{)..................;&+,*(( ",
-" (*,~~~~~~~~~+&@+(( $]-!!-!%!%!~~~{####:^.;@$;]^-)%@* ( ~!==_***(( ~~~!=========^&+,*(( *~~~{)'''''=''''''='''''''$@&,*(( (,~~~~~_)'.'....'.'...,***(( (,~~~-]...................]@&+,(( ",
-" (*~~~~~~~~!_!_!{~~~~*((+$-!-!!!!!&~~{:####^];]$@;])--]@( ~!==),*,*(( ~~~{===========@>+,*( ~~~~{=='='=''''=''''''''''';$@+,*( *~~~~*,!='.'.'.'.'..'.'.],,**( ~~~~{^.....................]$@>,*(( ",
-" (,~~~~~!%:##########/!_~~*&;;^%];%&~~~:###=);];.;$]]]-;$, ~~#=:,,,**( *~~{#=========';$@>,*(( ,~~~)''''=@))^'='''''''''''';$@>,*( *,~**(~^'...'..'..'..'...'.&+,*(( *~~~_.....$@$;].............];@&+*(( ",
-" *~~~~{%##################/{~&;-%%;{~~~/###&;.^^^^^)--%-]>( ~{==^+++,*(( *~~~============;;@&,*( (~~~~='''-++&@@@{=''=''''''''.;;$>,*( (*~~~* _''.'^^^^.'.'..'...'...@@+,*(( (~~~~^...;&+&@@@_;............];$@,,* ",
-" ,~~~{########################!~@--_~~{/###~>$];=$^))--];>( ~~#=^&>>,*(( (~~~/===========.];$&,,(( (~~~~=='={++&@@$@+-'''''''''''.;$@>,*(( *~~~~*-.''&~*,,+>>@^''..'.'...'$@&,,(( ,~~~)...&,_>&@@$&~............];$&+*(( ",
-" ~~~~%###########################-~{~~{####_+@@$]]])];);@>* (~~==^&>>,,(((~~~%=#=========.];$@>,*( (~~{_=''),+>@&@&@@{~'='=''''''.]];@>,*( (~~~~~-'.'&*,,,+++>&@@$$;''...']]$$@,,(( ~~~~]..]_+>&@@@&@&~;..........]]$$>+*( ",
-" ,~~{###############################-{~:##/~@$;@@$;]]];$@,( (~~#=:@&>+**(*~~!===========.]];$@>,*( ~~~_''=:,+>&@&&&+>,~:''''''''']];$@+**( *~~~~)'.'',,,,,,+++>>&@@@$$;;;]];;$@&+*((*~~{'..'+++&&&&>&>,~!..........]]$@>,*( ",
-" ~~~~######################################$@;.]$&,>&@+,*( *~_==^&@>,,(~~~{#========='.]];$@>,*(( ~~~_'='^,>&&&&>+,,,~~:''''''''.];;@&,*(( (~~~~!=.'.=+++++++,++,++>&&@@@$$;$;$$@>,*(*~~~;..'++&&@&&++,,~~@.........]];$&+**( ",
-" *~~{######################################{$]];^;@+*((( ~~!=#)&&>+,*~~~==========..]];$@@+,*(( *~~{=='=>>&@@>++,**~~~^'''''''..];$@+,(( (,~~{^'.'''+++&>>,+,,,*,*,,++>@@@@$@@@>+,(*~~~^...@+&&&&>+,**~~~-........]]]$@>,*(( ",
-" ,~~~:#######################################%_^;^]$+*( (~~-==@@&>+*~~~/#======='.]];;$@&+,((( *~~~=''=&>@@&&+,,*(~~~_''''''']]];$@>,,(( *~~~_=.''.'@&&@>>+,*****(****,,,++>>&>>,,*(~~~)...)>&@@&++,***~~~]........]]$@@+**( ",
-" ,@@~~-##########################################_!^;@,(( *~~:#=&&@>,~~~!====#===']]];;@@&+,*(( ~~~/===)>&@@&+,***~~~~:'''''']]];$@&+*(( *~~~!''.'.'^@@@@&>,,**(((((((((***,,,,,,*((~~~!...'+&@@&&+**(~~~~-......]]];;@@+,*(( ",
-" *@]_~{#####:;;;^;;################################:_>+*((( ~~{===>@&>~~~_========]]];;$$@>,,*(( *~~!'''=>@@@&>,,*~~~~{:'''=';;]];$$&,,*(( (~~~)'.'''.'$$$@@&,,*((( ( ( ((((*((*****(((~~~'...@@@@@>,,*~~~~~@.....]]]];$$@+,*(( ",
-" @]~~!####'..];;$$;$;=##############################-{,**(( *~~-=#)>@@+~~{#=======]]];;$@>+,*((( ~~{=='=)&@@@+,~~~~~~!=''''^^;;;$$@&+,*(( (~~~:.''.''.;$$$$&+,*((( (((((((((((*~~^...;&@@@>+~~~~~~{;.....$$;;;$$&+,*(( ",
-" (,,( (+@~~####^^;];];@$@$@$$:##############################!,,*((( ~~~#==@&&&~~~-======#];];$$@>+,**(( *~~-'='=+_~~~~~~~~~_=''''^$@$$;$$@&,,((( (~~~!'.''.''';;$$@>,*(( ( ( (~~_.'.._+{~~~~~~~~_^.....$@$$$$$@&>,**( ",
-" *>@$, *&~~###']];.^.;@>>&@@@$$:##############################!~,*((( ,~~%==#>&@>~~_=======];];$$&>,,(((( ~~{'='=)~~~~{~__^:''''=)>&&$$$@@@>,,*(( *~~!.''.''.''];;@&+,((( ~~~=...'~~~~~{,_)$.....;&>&@$$$$@&+,*((( ",
-" ,$$];@( (+~{###^].;.^^;$+,,,++&@@)##############################:!,,*((( *~~{#==)&@&{~~#==#====]];$@@+,**(( *~~)='=':^^=^'''''''^)>,+>&@&$@@>+,,((( (~~~='''.'''.'];;@>,*( (~~_....;^^;=........^@,+>&@@@@&&>,,*(( ",
-" ,@]!%!%$+ ,~!##:;;].]^)]]@,**,,,+&@@%###############################{,**((( (~~~:==#+@@&~~{=======;];;$@+,,((( ~~{='=''''''''==)-&,,,+>>&&@&@>>,,*((( *~~^.'.''.'.''];$@+,*( *~~;'..'........^^&+,,++>&@@@@&>+,*((( ",
-" (* ,$;-]]!;@( ~!##^.;;;;)-;%],*((**,,+~~~-##############################:-~,*((( (~~{-===)&@@+~~:#======];;$@>,*(( (~~)=''='===^^@+++++++>+>>&>>>+,,**(( (~~_'''''''''..];$@,,(( ~~_.....';';^$>++,++++>+>>>>>+,,,*((( ",
-" >@+*@!!!-!!;+( ~!##)^]$$))--%%$+((((**~~~~-########################=########!~***(( *~~~_#===>@@@~~{========]]$$>,**(( *~~=='=''$;$$$@>>++>>+>+>+++,,,,(*(( *~~='.'..'.'.''];$&+*(( *~~~).....;;;$@@>>>>+>+>>>++++,,,(((( ,( ",
-" +$);$ *]%!!!%]@, ~~##^;^;@;^-%%!!$*( ((~~{~:###############################=##=#-~,**((( ~~~~!==##@&@@&~~)========];$@>,*( *~_='='=';;;$@&&+>++++++,,,,,*((((( ~~~~''''''.''.'.];$&,,( (~~*~~'.....;;;$$@&>+++++,+,,,,,*(*((( (~* * ",
-" (+@;!;;]+(&%]]]^];&((~##:^.]@+$%!%%];&( *~~~~:####''=####################=##=#######=-_~,*(( *~~~~-====)&@@@_~~#========';$@+,(( ,~~%'=''''^];$@@>+++,,,,,***(((((( (,~~~-.'.'.''.''.'';$&+*(( (,~( *)...'..'';;$$@>+++,,,,,*,(*((((( *~( *]>( ( ",
-" *@]!!%%!;(*;!%%%];$,(~%##^^^$,&]%%!!!]&~~~~~####/@;;=;###############=###########=#####:!{~,*((( *~~~~{:#=#=:@@$@&{~{==#======;;$@+,(( (*~*~~:'='='='$;$@>+,,,**(***((((( *~~(~:''''''.''.''..]$@+,(( (~~~* {';-.......;;$@&+,,,,***(*(((((( (~~* >.+((((( ",
-" *&]!!!!%!+(@;)-!%]]&((_##)^^;>+$-!%!!@~~~~!####!&@$$$$$^######################=#####=##=#=/!~,~**( (**~~~~%======@@@@@&,~_==========:>@+,(* *,~~* {:'='='''='_&@+,,(**((((((( (,~~ ~'''.'.'.''.'.''']$@>,(( (,~~*(~;.)~)........^&@&+,**(*((((((( ,~~*($.>(**(((( ",
-" (*** *$]]!-!-$,*$!!%!]!;,*+)##!@);$]!-_{~~~~{:###:+>@@@@$@@$$:#############=##=###=##=########=##/!~~,~,**( (**~~~~~~%#=#=#=#@@$$@&+~~-=========='^,,,**(( ((*~~~~~*~:':'=''='=''')~++**(((((( (~~~*(-'=_''.''''.''.'.'.$@&,,*( (*~~~~*,^.=+~~^.........;{,,,**(((((( (*~~~(_].>******(( ",
-" ,+@$@+( &$]!!!!-@ +]-!!^!]@**$:##{~&&_{~~~~~!/####!{+&@@@@>>>>@@$:#####=###=#####=####=##=#=#=####=#=#:-!~~~~,~~,*****,~~~~~~~_-#======#$$$@@@>,~~:=============){~,~~,~,~~~~~~~~!^'=)~='='=''='='=!~~,*(((( *,~~~*{;''~!.'''.'.''.''.''.@>+,((( (**,~~~~~{^..^,~~~^...........){~~*(((( (,~~~~*^..&**,,***(( ",
-" ,$!-;];>(*$;%!]!!;>+$]!;]%%$+*>;###-{~~~~~{^#####/++>&@&&>+,,,,+&@@$=###############=####=#####=#=###=#=#=#::_!{~~~~~~~~~~~{!:#=#=#=#=#=$@$$$@&,*~~:==============':)_{~~~~~~__/:'=='_~!='''='=''''''=){~~~**(***(***~~~~~~_^''^,~_'.'.'''.'.'.'.''.)~~,,*,~~~~~~~~_-'...),,,~~..............^_,~~******(***~~~~~~{@..]>*,,,,,**(( ",
-" *>$$%-!!-!;+(+$-!!!-!;$]!!%!%!]$,,$-:####:########:;@+&&&&&>+,*****,+&@@$=######=#=######=###=#=#=##=#=##=###=#=#=#=##::::::#=#=#=========$$$$$&>+***~:#=========='=========='='=='='==&,~_'='='''='='=''''=)_~~~~~~~~~~~~~{!='''^*,~%'''.'.'.''.''.'.'.'!~~~~~~~~_-^'....'+,,++,~'................^!{,~~~~~~~~~~~~!;....,,,+,,,**(( ",
-" *+$;%%!!!!!!;$,*&]%%!!%!!]%%!]%%];&(>)]::#########::;$@>&&>>+,***(((**,,+&@$^=#=######=#=##=#=######=###=#=#=#=#=##=#==#=###=#==#===##=#=#=$$$$$@&,,*((~:=============='=='='===='=='='=&>&{~''''='=''''''='''''''^^!_!_!_-:='''''^++>~&'.'''''''.'.'.'.'...'.^:^^'.'....'.^++>>>++~^....................;^-&!&!&!^;......+++++,,,*((( ",
-" (@$;;^;;);;%!;;@ *$!]]];]!]]-!]])]-$,+$.]^:]:^@-$];;$@&>&>>+,,**((( ((((*,,+&@$^#####=#########=#=#=##==##=#=#=#=#==#=##=#==#=#=#=#=#=====;$;;$$@>+,*(((~!========'======'==='='='='==':@@@&>~:='='''='='''''''''''''''.'''''''.'.-+>>>+~''.'...'.'.'.'.'.''..'.......'.'.]@>&&&>>+,~-...................................;+>>&>++,*((( ",
-" ($!-!!!%;$$]!!!$;,(&]%%!!%%!]]%%%!)%]@,@^])^.^;&+@$$@&>>>>+,,,*((( (((**,,>@@$==###=##=#=#=###=##=###=#=#=##=#=##=#==#=#=#=#=======#=#;;;$$$@&,,((( (({==========='===='==='===='='^$$@@@&_)''''='''='='='''''''''''''''''''''$&@&@&>~=.'''''.'.'.'.'.'.'.'.'.''.'.'..^@@@@@&>+,,*_..................................;&&@&&>+,**(( ",
-" (@!!!%!!;+>$$%]]!$ ($!%%!!%]$&$)!-]!%$,&;]))]^;$+>&@&>++,,,**(((( (((**,++&@$;###=######=###=##=#=#=###=#=#=#==#=#=#===#==#=#=#==';;;;$$&>+,*(( (~:========'==='==='==='='==';;$$$@@>+{='=''=''''''''='''''''''''''.'.''@$@@@@>+~)'.'.'.''.''.'.'..'..'....'...'$$$@@@&&+,,**~;................................$$@@@@&+,**(( ",
-" *]!]%!!;@+&$%^]!!*(>$)%]%%;$(*^!!]%!]@+$;--])]@+++,+,,,,,**((( (((**,+&&$$==#=#=#=##=#=#=##=##=#==#=##=#=#=#=#=#=#==#====#']]];;$@@>,*((( (*-==='========='==='==='='=;;;$$@&>,,~/''=''='='='''''=''''''''''''''=$$$$@@>+,,{''.'''.'.'.'.'.'.'.'.''.'..';;$$$$@@>+,*(*(*_...............................;$$$$@&+,,*(( ",
-" +, @]]!!%%]@*$%%!%%@**@]%%!%];, $!!!!-!$&+;--];$>,,,,~,**((((( (((**,,+>@@$==###=#=##=##=##=#=##=#===#=#=#==#=#==#==#=#']]];;$$@&+,,(*( (*:====='========'==''===']];;$$&>+***+==''='''''''=''''''''''''.''';;;$$$@>+,**,)'.'.''.'.'.'.'.'..'...'.'';;;$$$@@>,,**((((*^............................];;$$$@&>,*((( ",
-" *&;]@* *$]]%!;]$,>;]]!]$, ,$%]%!]]$(*;%;]!];$,$%]@+,**(**(*((((( ((***,+>@@$;=####=##=#=#=#=#==#=##=#=#==#=#==#=#=#='.]]];$$@@&,,**( **_========'=='==='===''.]];;$@&>,,*(**_''''='''=''''''''''''''''''];;;$$@&+,**(*,'''.'.'''.'.'.'.'.'.'...]]];;$$@&+,**((( ((*+'..........................]];;;$@&>,,*(( ",
-" *>@]!]$>( >]$%-]%]@>]^;!]$* *&]^!!;%!+(&]]%%!%]@&$&,*((((((((((( ((**,,+&@@$;;#=#=#=#=#=##=##=#==#=#=#==#===#==='.]]];$$$@&+,,((( ((,@===='==='=='=='='=..]];;$@&>,*((((*,-'=''='''''''''''''''''''..]];$$&>+***(((*&'.''...'.'.'.'.'..'.'.]]];$$@@&+,,*(( (((*>]........................]]];;@@@+,*((( ",
-" +]%!!)!$,( ($%!!!!!];%!%!;@* ,$-%%]%!$,,$%%!!!]@,*( ( ( ((( (((**,,>>@@$$;==###=#=#=#==#=#=#==#=#=#=#=='..]]];;$$@&>+***((( (*,)=========='====..]];;$@@>,,**( (((*,)''''='='''='''''''''''.]];;$@@>+,*((((((,-'.'''.'.'.'.'..'....]];;$$@&+,**((( (*,&........................]];$$@&+,*((( ",
-" (>]]!!!!;&* *!-!];%))!];%$+ &;-%]]%]&(,;-!;;@*( (((**,,+>@@$$$]==##=#=###=#=#=#=#==#=''..]]];;$$@@&>,,*((( ((*+@=='=='='=='''.]]];$$@&+,,((( (**+@'='''''''''''''''''.]]];;$@@+,*(((( ((*,@''.'.'.'..'.'.'.].]];$$@@>+,**(( ((*,@]....................]];;$$@>,,*((( ",
-" * *$$;!;!!$, @%%^]!-%%%];&* *&]%%%%]$,($%;@+** ((((*,,+>&@@$$;;;''===#==#=#==='..]]]];]$;$$@@&>,,**((( (((,+&^======''.]]]];;$@@>+,*((( ((*,+@^'''''''''''''''..]];;$@@>+,**(( ((,+@;'.'.''.'.'...]];;;$@@>+,**(( ((**+&$.................]]];$$@&+,**((( ",
-" ,&+ (>$%!]!-]@* ,;!%!!!!%%$, +;!!!%%%$ *$>,( (((**,,+&&@@$$$;;;]]]]]]]]]]];];;;;$$$@@@>>,,**(((( ((*,+&@$;;]]]];];$$$@@>+,**((( ((*,+@$^''='''''''..]]]];$$@&>,,(((( (((,+&$^''.''.].]]];;$$@@&+,,(*((( (*,+&@;............]]]];$$@@>,,**(( ",
-" *&]]$* *@]!];%!;+ @]];!]]]& *&;]%%!];* *( ((((**,,++>&@@@$$$$$;;;;;;;$;$$$$@@@@>+,,,**((( ((*,+&@@$$$;$;$$$@@>+,,**(( (**,+@@$$=;]'.]]]]]];$$$@&>+,**(( ((*,+&@$$;;;;];;;$$$@@>+,,**(( ((*,+&@@;;]].].]]]]];;$$$@>+,,(((( ",
-" ,&$]!!-@,( (,$!;]$]]&* *$)]!%!!$* ,$]%%%]@* (((***,,++>>&&@@@@$@$@$@$@@@@&&>+,,,**(((( ((*,,>@@@@@$@@@>>+,,*((( ((*,+>@@$$;$;;;;;$$$$@@>+,**((( ((*,+>@@$$$$$$$$@@&++,,*(((( (((,,>@@$$;$;;;;;;$$$@@>+,,*((( ",
-" ,>$]]!-!!]@* *&!!!%!%;>* ,!!%!!!]@* (&]!]$,,( (((((***,,,+>&&>>>&&>>>>>++,,,,***((((( (((**,,+>>>>>++,,***((( (((**++&@@@$$$$@$$@@>>,,**((( (((,,+>&@@@@@&&>++,***(( (**,+>&@@$$$$$@$@@@++,,**(( ",
-" (@]!!;]!;]!;>( ,$]%%!-!$* *@]!-%%]$+ ,@$>, ((((*(*,*,*,,,,,,,,,,,,***((((((( (((***,,,,,,***((( ((**,,+>>>&&@&&>>+,,***((( (((*,,,++>+++,,,***((( (((**,+>>>&&&@&>>+,,,((((( ",
-" +]]!!]!!-;!]$> (>;]!]]!;@* *]%]]-];@, ,*(( ( ((((((*(*(******((((((((( ((((*(*(((*((((( ((((***,+,+,+,,,***(((( (((*,*,*,**,(((((( ((***,,+,+,+,,,,**(((( ",
-" *;$%%-!!!!!!];* ,$]!%]%!$, @]!!!%-;& ( (((((((((((((((((( (((((((((( ((**********(*(((( ((((((*(*((((( ((((((***,(**(((((( ",
-" (@$]!]]!;]!];-@*((+$%%]!-;&* ,$-]!]]]$* ( ( ( ( ( ( ((((((((((((( ( (((((( (((((((((((((( ",
-" (+$;!!!!;]!!]!]@* *&-!]!!!;+( &^%%!!!;>( ( ( ( ( ( ( ( ( ",
-" *$;%-!!;;]%^!-;&*(,;!]!!!-@, ((,$!-!)!!;, ",
-" (+;!];%;@$^]!!;$& (>^;%-;!;>*,+>,*]!!;%]&* ( ",
-" (;!!!!;@@;%!!]-]* ,$]!!;!!$>$;]&($%!;$>, ~-%+ _%-* ,* _%-%+ ,* !-_ ,%-!-%-%+ _%- + {-_ !%-* *-%- {-_ ,!-_ ,* (!%-%%, ",
-" @]!%%!$>@]!%!!!$,*>;!!!%!]]]!%$+,;$&,(( %!! (!!{ (!* (!!%!{ (!* *!!~ ~!!!!!!!% _%! ,! ,{~ (%!!~ ,!!% ,{~ ~%!{ (!* ,!!_{{( ",
-" *;]-!%$@+@]!]]!;+*,@]%;%-;]%-]]@*,,(( {!-( _!! *+___+* *{!%{_, {%_!%_ ~_+(___, *_-%-_( *{!%_{, ~%%~___, (~____, __~+__( {!- {%%* *+___+* ______, !!_ ~_!!__(({_* (__*~__, *__+ *____,( {!!!, !%!-( (~____, *_____* ~_____ *______( (~_____, ({{* *__({__+ *+_____( {!!, *__({__+ *{!%{_, (~____, __,{_{~_%!~*( *______( *_____* *+___+* ",
-" *@;!!%]$*,]!]]!!$&,+$!!%!]]%!;;@*( ,!!~~%%* *!!!!!%! _%!%!!~ *%%*!%{ _!%!!!!! *%%!{!!! _!!!!!~ _!%!!!!%* !!!!!!!~ (!%!!!! %!! _!% *!!!!!%! !!!!!!! *!%~(%!!!!! (!!~ !%!!!%%{!!!%{ +%!!!!%{ _%-!{ ,!!!%* !!!!!!!~ *!!!!!%( +%!!!!_ *%!!!!%{ (!!!!!!!{ (%%~ *%!!!!!%~ ,!!!!!!%~ %!% *%!!!!!%~_!!%!!~ !!!!!!!~ (!!!!!!!!%!!%* *%!!!!%{ ,!!!!!%~*!!!!!%! ",
-" (>$-!!]!, $!!-!-!;&*@%!-!%]%]$>, *!%_!!+ {%!*~~%%~~!!!~*( !!{ %!_ !!!~~!!- !!!( (!!~~%!!~*( !!!~*!%%(~!%~~*!!_ ~!!{~** *%!_ (!-_ {%!*~~%%, (*~*!!! ~%!~({!%{*, ~!!( ~%!{{_!!!{_!!{(%!{*~{%- *%%_%_ _%%%%, ~!%~~*!!_ !%_ *!%~ **~~!!+ !!%{{{!!+ ~%!( {!%~~{%!**!!!{{_!!* *!!! {!%~~{!!~~!!!~*(~%!~~*!!_ ~!!{~*~{%%_{{ **~~!!{(!!!~~** {!!*~~%%, ",
-" *$;!%;;@>$!]!%!]!],,$;!%];;@,(( !%!!! *%%~ (%%*~!!* ,%!( %!{ *!!~ _%_*%!~ %!~*%!* (!!~ {!! !%_ _%{ _!!( *%%!%-!%%~*%%~ (!!* *~*~*!!{ _%% _!% {!% _!%( ~!!~ (%%{~%%( ~%! {!!{!{*!%{%!~ !!_ _!{ !%{ ~!!~ ,*~*~%!~~!!~ ~!%~ +!% !!_ ~%%({%!( _-! ,!%_ !!_ {!!(~!!* !%_ _%{ _!!( ~!%* ,*~*~!!*~%!~ *%%~ (!!* ",
-" >;%%$]]$]%!]%%-!!$,@]!!;@,* {%!%* {%!%%%!!! {%%( (!!{ -%_ ~%!* %%{{!! %!~{%%( ~%!* !%_*!%%-%!%!* !!! {!%%!%%!{ {%%%%%%%% {!!!!!!%, !!! !-_ _!_ !%_ {%! ~!!~!%!%%%%!_ !!~{!!_!{{%!**%%%-%%%%* %!-!_* ~!%%_+( !!!!%!%!(_%! {%% {!_ (!%+ {%%(%!{ !!_ {-!, (!%+ {!% {%%( *!%%-%!%!* !!! {%% !!!!%%%%({%% {%%%%%%%% ",
-" ,;!!%!!%-!%]!%%!%!@+$;$&, *%%{ _!!{{{_{{ _!! {%!{_{!!! _%! ,!%~!!{ ,!! _%! _!! %!~~!!{{{{_{( %!{ !!! _%! {!!{{{{{{ !!!~~{%%~ %!_ (%!{ -!{ (!!{ !!_ {!! %!!{{{{{~ ,!!(~%%!%(~!%~*!!{{{{_{( +!!!%%* (_%!%%!(*%%{~~!%% %%{ %!_ -!{ *%!~ %!{~!!~ ,!!~ %!!( ~!!~ %!{ _%! *%!{{{{_{( %!{ !%{ ,!!!*~!%! %%{ _!!{{{{{{ ",
-" @]%]]!^!!;$%%]];];@++*( {%!, !%{ %%_ *!!%%!!!!- !%_ ~!!(!!, _!! !!_ !!_ ~!!~{%% ~!!, (!!_ {%!, !!{ *%!* {!% *!%, ~%!, *!!* ~%%, !%+ !%_~!!~ {!_ ~!!%_ ~!!~{!% ~_%%_ (~!!%~{%! %%{~!!, *!%+ *!!, {%% (%%~{%% {%%* (!!! {!% (%%, !!_ {!% ~!!, (!!, {!! %%{(%%+ !!{ ",
-" ,;%!%!]%;&&]!%%!;$>(( !!! %!{ * ,!!~ ( _%_~*~*%!!(!!~ _!! !!~ *%!{*%%~ ((!!~ {!! {!% (* +!!* ,!%{ *%%{ -%{ * {!% -!! ,!%* _!%( (~%%( _!!( ,!!~ (%%{*!%* * (%-~ ~!%%* ~!!~{%% (* (%!{ ~%!~!!{ ,!%~~!%_ (_!%~ ~%!( _!_ *%%*{!%~ *!!% ~!!{ _!! *%%*~%%~ (_!- (* +!!* ~%!* !!{ ,!!~~!%{ (%!{ * ",
-" (@!%%!^!$**>]--;@+* (!%_ !-%__{__ ~!%{~,* ~%%* %%!~!-* !!_ %!{((_%%(~%!+~~*~%%* _%_ {%%____! {!% {!!, %%%, !%%__{__ {%%_{{!!_ {!% _!%*~+ {!- !!! {%% ~!!*~%!!____, ~%%( ~!!! ~!%*{%%_____ , ({!!~, *!!! !!%{{_!!~(!%%%!!!% {%% %%+ {%! {%%%%_!!_ {%!, !!+ {!% ~!!+~~*{%%____! {!% {%% !!%{{_%%*~!!!,~_{*!%-__{__ ",
-" >]]!%]]], *@$$&,( *%%_ _!!!!%!~ _!%!!% !!{ %%%{!! *%%* +!%%%%!* _%%!!! ,%! %-{ *%%%!!!{ -%{ !!! _%!! _!%!!!!~ +!%%%{%!~ %%_ %%%!!{ !!{ *!!{ _!_ _!%( %%!!!!! !!_ (!!~ *%!~*%%%!!%{ _%-%!%!!(!%-!!%!{ !!%%!_!% {%%%~!!! !!{ ,!%~ !!{ (!!%!~%%~ !!%( ,!!~ !%{ _%%!!! ~!%%!!!{ -%{ !%{ !!%%!{%% !!%%!%! _!!!!%!~ ",
-" (+!%%!!]@*(,+,( ~{{, ({{{{{+ ~{{{{, ({{, {{{~{_ *{{~ *{{{~ ~{{{{, ~{_ {{* ~{{{{_( {{, {{_ ~{{, ({{{{{+ ({{{~*{{* {{+ {{{{{* {{, ({{, {{+ ~{{( *{{{{{, {{, {_ *{{~ ~{{{{_( {{{{{{~ ({{{{{{* *{{{({{_ * *!!+ ~_~ *{{* {{+ * {%%* {{{( *{{* {{+ ~{{{_~ ~{{{{_( {{, {{, *{{{({{_ ({{{{{* ({{{{{+ ",
-" $-!]!!$, (( %%-!%%%!* *%%-%%!-! ",
-" +]%];;@* !!%%!%!~ *!!%%!!!( ",
-" ^!!;>*( (*~*~* **~*~( ",
-" @;>,* ",
-" (,( ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
+++ /dev/null
-;;;; $Id: queue-m.el,v 1.1 1999/02/13 20:29:15 daiki Exp $
-;;;; This file implements a simple FIFO queue using macros.
-
-;; Copyright (C) 1991-1995 Free Software Foundation
-
-;; Author: Inge Wallin <inge@lysator.liu.se>
-;; Maintainer: elib-maintainers@lysator.liu.se
-;; Created: before 12 May 1991
-;; Keywords: extensions, lisp
-
-;;;;
-;;;; This file is part of the GNU Emacs lisp library, Elib.
-;;;;
-;;;; GNU Elib 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.
-;;;;
-;;;; GNU Elib 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 GNU Elib; see the file COPYING. If not, write to
-;;;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;;; Boston, MA 02111-1307, USA
-;;;;
-;;;; Author: Inge Wallin
-;;;;
-
-;;; Commentary:
-
-;;; The queue is implemented as a two cons cell list, the first
-;;; containing the tag 'QUEUE. The car of the the second cons
-;;; cell points at the first element of the queue and the cdr points
-;;; at the last. All entries and removals are done using destructive
-;;; functions.
-;;;
-;;; This file implements the short functions as macros for speed in
-;;; compiled code.
-;;;
-
-
-;;; Code:
-
-;; Provide the function version and remove the macro version
-(provide 'queue-m)
-(setq features (delq 'queue-f features))
-
-
-;;; ================================================================
-
-
-(defmacro queue-create ()
- "Create an empty fifo queue."
- (` (cons 'QUEUE (cons nil nil))))
-
-
-(defmacro queue-p (queue)
- "Return t if QUEUE is a queue, otherwise return nil."
- (` (eq (car-safe (, queue)) 'QUEUE)))
-
-
-(defun queue-enqueue (queue element)
- "Enter an element into a queue.
-Args: QUEUE ELEMENT"
- (let ((elementcell (cons element nil)))
- (if (null (car (cdr queue)))
- ;; QUEUE is empty
- (setcar (cdr queue)
- (setcdr (cdr queue)
- elementcell))
- (setcdr (cdr (cdr queue))
- elementcell)
- (setcdr (cdr queue)
- elementcell))))
-
-
-(defun queue-dequeue (queue)
- "Remove the first element of QUEUE and return it.
-If QUEUE is empty, return nil and do nothing."
- (if (not (null (car (cdr queue))))
- (prog1
- (car (car (cdr queue)))
- (setcar (cdr queue)
- (cdr (car (cdr queue))))
- (if (null (car (cdr queue)))
- (setcdr (cdr queue) nil)))))
-
-
-(defmacro queue-empty (queue)
- "Return t if QUEUE is empty, otherwise return nil."
- (` (null (car (cdr (, queue))))))
-
-
-(defmacro queue-first (queue)
- "Return the first element of QUEUE or nil if it is empty.
-The element is not removed."
- (` (car-safe (car (cdr (, queue))))))
-
-
-(defmacro queue-nth (queue n)
- "Return the nth element of a queue, but don't remove it.
-Args: QUEUE N
-If the length of the queue is less than N, return nil.
-
-The oldest element (the first one) has number 0."
- (` (nth (, n) (car (cdr (, queue))))))
-
-
-(defmacro queue-last (queue)
- "Return the last element of QUEUE or nil if it is empty."
- (` (car-safe (cdr (cdr (, queue))))))
-
-
-(defmacro queue-all (queue)
- "Return a list of all elements of QUEUE or nil if it is empty.
-The oldest element in the queue is the first in the list."
- (` (car (cdr (, queue)))))
-
-
-(defun queue-copy (queue)
- "Return a copy of QUEUE. All entries in QUEUE are also copied."
- (let* ((first (copy-sequence (car (cdr queue))))
- (last first))
- (while (cdr last)
- (setq last (cdr last)))
- (cons 'QUEUE (cons first last))))
-
-
-(defmacro queue-length (queue)
- "Return the number of elements in QUEUE."
- (` (length (car (cdr (, queue))))))
-
-
-(defmacro queue-clear (queue)
- "Remove all elements from QUEUE."
- (` (setcdr (, queue) (cons nil nil))))
-
-;;; queue-m.el ends here
+++ /dev/null
-;;; -*- emacs-lisp -*-
-
-(setq liece-intl-catalogue-directory "@pkgdatadir@/po"
- liece-window-style-directory "@pkgdatadir@/styles"
- liece-window-style-directory "@pkgdatadir@/icons")