add new quoteserv module
This commit is contained in:
parent
2852586676
commit
e4d209cf91
12 changed files with 1599 additions and 3 deletions
7
.gitattributes
vendored
7
.gitattributes
vendored
|
@ -417,6 +417,13 @@ modules/operlog/help.c -text
|
|||
modules/operlog/main.c -text
|
||||
modules/operlog/operlog.h -text
|
||||
modules/operlog/operlog.vcproj -text
|
||||
modules/quoteserv/Makefile.am -text
|
||||
modules/quoteserv/Makefile.in -text
|
||||
modules/quoteserv/discworld -text
|
||||
modules/quoteserv/help.c -text
|
||||
modules/quoteserv/main.c -text
|
||||
modules/quoteserv/quoteserv.h -text
|
||||
modules/quoteserv/quoteserv.vcproj -text
|
||||
modules/statserv/.indent.pro -text
|
||||
modules/statserv/GeoIP.dat -text
|
||||
modules/statserv/Makefile.am -text
|
||||
|
|
|
@ -4,6 +4,7 @@ Anything we add/remove/fix/change is in here (even our rants)
|
|||
Fish (F), Mark (M), DeadNotBuried (D)
|
||||
===============================================================================
|
||||
* NeoStats * Version 3.0.a3-dev
|
||||
- Add new module: QuoteServ. (M)
|
||||
- TextServ: Add moraleserv database. (M)
|
||||
- TextServ: Add loveserv database. (M)
|
||||
- TextServ: Add database reading support. (M)
|
||||
|
|
5
configure
vendored
5
configure
vendored
|
@ -1556,7 +1556,7 @@ x_maj=3
|
|||
x_min='0'
|
||||
x_rev="a3-dev"
|
||||
x_package='NeoStats'
|
||||
MODULES="connectserv hostserv statserv ircdauth extauth textserv operlog dccpartyline"
|
||||
MODULES="connectserv hostserv statserv ircdauth extauth textserv quoteserv operlog dccpartyline"
|
||||
#dont edit anything after this line!
|
||||
|
||||
x_version=$x_maj.$x_min.$x_rev
|
||||
|
@ -28326,7 +28326,7 @@ CFLAGS="$CFLAGS -fno-strict-aliasing"
|
|||
|
||||
|
||||
|
||||
ac_config_files="$ac_config_files Makefile include/Makefile src/Makefile src/protocol/Makefile src/dbm/Makefile src/dbm/bdb/Makefile src/dbm/gdbm/Makefile lib/Makefile lib/curl/Makefile lib/pcre/Makefile lib/event/Makefile modules/Makefile modules/connectserv/Makefile modules/extauth/Makefile modules/hostserv/Makefile modules/ircdauth/Makefile modules/statserv/Makefile modules/textserv/Makefile modules/operlog/Makefile modules/dccpartyline/Makefile neostats"
|
||||
ac_config_files="$ac_config_files Makefile include/Makefile src/Makefile src/protocol/Makefile src/dbm/Makefile src/dbm/bdb/Makefile src/dbm/gdbm/Makefile lib/Makefile lib/curl/Makefile lib/pcre/Makefile lib/event/Makefile modules/Makefile modules/connectserv/Makefile modules/extauth/Makefile modules/hostserv/Makefile modules/ircdauth/Makefile modules/statserv/Makefile modules/textserv/Makefile modules/quoteserv/Makefile modules/operlog/Makefile modules/dccpartyline/Makefile neostats"
|
||||
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
|
@ -28978,6 +28978,7 @@ do
|
|||
"modules/ircdauth/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/ircdauth/Makefile" ;;
|
||||
"modules/statserv/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/statserv/Makefile" ;;
|
||||
"modules/textserv/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/textserv/Makefile" ;;
|
||||
"modules/quoteserv/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/quoteserv/Makefile" ;;
|
||||
"modules/operlog/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/operlog/Makefile" ;;
|
||||
"modules/dccpartyline/Makefile" ) CONFIG_FILES="$CONFIG_FILES modules/dccpartyline/Makefile" ;;
|
||||
"neostats" ) CONFIG_FILES="$CONFIG_FILES neostats" ;;
|
||||
|
|
|
@ -13,7 +13,7 @@ x_maj=3
|
|||
x_min='0'
|
||||
x_rev="a3-dev"
|
||||
x_package='NeoStats'
|
||||
MODULES="connectserv hostserv statserv ircdauth extauth textserv operlog dccpartyline"
|
||||
MODULES="connectserv hostserv statserv ircdauth extauth textserv quoteserv operlog dccpartyline"
|
||||
#dont edit anything after this line!
|
||||
|
||||
x_version=$x_maj.$x_min.$x_rev
|
||||
|
@ -374,6 +374,7 @@ AC_CONFIG_FILES([Makefile
|
|||
modules/ircdauth/Makefile
|
||||
modules/statserv/Makefile
|
||||
modules/textserv/Makefile
|
||||
modules/quoteserv/Makefile
|
||||
modules/operlog/Makefile
|
||||
modules/dccpartyline/Makefile
|
||||
neostats])
|
||||
|
|
5
modules/quoteserv/Makefile.am
Normal file
5
modules/quoteserv/Makefile.am
Normal file
|
@ -0,0 +1,5 @@
|
|||
pkglib_LTLIBRARIES = quoteserv.la
|
||||
quoteserv_la_SOURCES = main.c quoteserv.h help.c
|
||||
quoteserv_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||
AM_CFLAGS = @PCRE_CFLAGS@ @CURL_CFLAGS@
|
||||
include $(top_srcdir)/autotools/rules.mk
|
581
modules/quoteserv/Makefile.in
Normal file
581
modules/quoteserv/Makefile.in
Normal file
|
@ -0,0 +1,581 @@
|
|||
# Makefile.in generated by automake 1.9.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
SOURCES = $(quoteserv_la_SOURCES)
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(top_srcdir)/autotools/rules.mk
|
||||
subdir = modules/quoteserv
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/autotools/acinclude.m4 \
|
||||
$(top_srcdir)/autotools/ax_maintainer_mode_auto_silent.m4 \
|
||||
$(top_srcdir)/autotools/ax_path_lib_curl.m4 \
|
||||
$(top_srcdir)/autotools/ax_path_lib_pcre.m4 \
|
||||
$(top_srcdir)/autotools/ccdv.m4 \
|
||||
$(top_srcdir)/autotools/libevent.m4 $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/autotools/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/include/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(pkglibdir)"
|
||||
pkglibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
||||
quoteserv_la_LIBADD =
|
||||
am_quoteserv_la_OBJECTS = main.lo help.lo
|
||||
quoteserv_la_OBJECTS = $(am_quoteserv_la_OBJECTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
|
||||
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
SOURCES = $(quoteserv_la_SOURCES)
|
||||
DIST_SOURCES = $(quoteserv_la_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkglibdir = $(prefix)/modules
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_CURL_FALSE = @BUILD_CURL_FALSE@
|
||||
BUILD_CURL_TRUE = @BUILD_CURL_TRUE@
|
||||
BUILD_PCRE_FALSE = @BUILD_PCRE_FALSE@
|
||||
BUILD_PCRE_TRUE = @BUILD_PCRE_TRUE@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CCDV = @CCDV@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CURL_CFLAGS = @CURL_CFLAGS@
|
||||
CURL_LIBS = @CURL_LIBS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EVNTLIBOBJS = @EVNTLIBOBJS@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
LIBDB = @LIBDB@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MODULES = @MODULES@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PCRE_CFLAGS = @PCRE_CFLAGS@
|
||||
PCRE_LIBS = @PCRE_LIBS@
|
||||
POW_LIB = @POW_LIB@
|
||||
PROTOCOL = @PROTOCOL@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
USECCDV = @USECCDV@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = $(prefix)/data
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
wi_PWD = @wi_PWD@
|
||||
pkglib_LTLIBRARIES = quoteserv.la
|
||||
quoteserv_la_SOURCES = main.c quoteserv.h help.c
|
||||
quoteserv_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||
AM_CFLAGS = @PCRE_CFLAGS@ @CURL_CFLAGS@
|
||||
LINK = $(LIBTOOL) --tag=CXX --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/autotools/rules.mk $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/quoteserv/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu modules/quoteserv/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
uninstall-pkglibLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@set -x; list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-pkglibLTLIBRARIES:
|
||||
-test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
|
||||
@list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
quoteserv.la: $(quoteserv_la_OBJECTS) $(quoteserv_la_DEPENDENCIES)
|
||||
$(LINK) -rpath $(pkglibdir) $(quoteserv_la_LDFLAGS) $(quoteserv_la_OBJECTS) $(quoteserv_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Plo@am__quote@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(mkdir_p) $(distdir)/../../autotools
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(pkglibdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-pkglibLTLIBRARIES
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-pkglibLTLIBRARIES
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-pkglibLTLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-pkglibLTLIBRARIES install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-pkglibLTLIBRARIES
|
||||
|
||||
|
||||
.c.o:
|
||||
@USECCDV@ @echo "Building $@"
|
||||
@am__fastdepCC_TRUE@ @if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.c.obj:
|
||||
@USECCDV@ @echo "Building $@"
|
||||
@am__fastdepCC_TRUE@ @if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
|
||||
|
||||
.c.lo:
|
||||
@USECCDV@ @echo "Building $@"
|
||||
@am__fastdepCC_TRUE@ @if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(pkglibdir)
|
||||
@list='ls .libs/*.so'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
$(CCDV) $(LIBTOOL) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(pkglibdir)/$$f; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
$(CCDV) $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
$(CCDV) $(dist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
install-dist_dataDATA: $(dist_data_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(datadir)" || $(mkdir_p) "$(DESTDIR)$(datadir)"
|
||||
@list='$(dist_data_DATA)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
$(CCDV) $(dist_dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(datadir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
done
|
||||
|
||||
install-dist_docDATA: $(dist_doc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
|
||||
@list='$(dist_doc_DATA)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
$(CCDV) $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
done
|
||||
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
|
||||
@list='$(include_HEADERS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
$(CCDV) $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
done
|
||||
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
$(CCDV) $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
$(CCDV) $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
if test "x#" != "x@USECCDV@"; then echo "Installing $$f"; fi; \
|
||||
else :; fi; \
|
||||
done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
391
modules/quoteserv/discworld
Executable file
391
modules/quoteserv/discworld
Executable file
|
@ -0,0 +1,391 @@
|
|||
The calender of the Theocracy of Muntab counts down, not up. No-one knows why, but it might not be a good idea to hang around and find out. -- (Terry Pratchett, Wyrd Sisters)
|
||||
Until an unfortunate axe incident, Gloria had been captain of the school basketball team. -- (Terry Pratchett, Soul Music)
|
||||
Rincewind could scream for mercy in nineteen languages, and just scream in another forty-four. -- (Terry Pratchett, Interesting Times)
|
||||
If the Creator had said, 'Let there be light' in Ankh-Morpork, he'd have gotten no further because of all the people saying 'What colour?' -- (Terry Pratchett, Men at Arms)
|
||||
From the back, Vetinari looked like a carnivorous flamingo. -- (Terry Pratchett, Men at Arms)
|
||||
The man gave a shrug which indicated that, although the world did indeed have many problems, this was one of them that was not his. -- (Terry Pratchett, Soul Music)
|
||||
'Scum,' said Crash, his voice low with resigned menace, 'you've bought a leopard, haven't you?' -- (Terry Pratchett, Soul Music)
|
||||
Of course, just because we've heard a spine-chilling, blood-curdling scream of the sort to make your very marrow freeze in your bones doesn't automatically mean there's anything wrong. -- (Terry Pratchett, Soul Music)
|
||||
Cuddy had only been a guard for a few days, but already he had absorbed one important and basic fact: it is almost impossible for anyone to be in a street without breaking the law. -- (Terry Pratchett, Men at Arms)
|
||||
After the stampede the artist Three Solid Frogs got to his feet, retrieved his brush from his nostril, pulled his easel out of a tree, and tried to think placid thoughts. -- (Terry Pratchett, Interesting Times)
|
||||
The Battle of Koom Valley is the only one known to history where both sides ambushed each other. -- (Terry Pratchett, Men at Arms)
|
||||
Just because it's not nice doesn't mean it's not miraculous. -- (Terry Pratchett, Interesting Times)
|
||||
++?????++ Out of Cheese Error. Redo From Start. -- (Terry Pratchett, Interesting Times)
|
||||
'Luck is my middle name,' said Rincewind, indistinctly. 'Mind you, my first name is Bad.' -- (Terry Pratchett,Interesting Times)
|
||||
Natural selection saw to it that professional heroes who at a crucial moment tended to ask themselves questions like 'What is my purpose in life?' very quickly lacked both. -- (Terry Pratchett, Interesting Times)
|
||||
'Stercus, stercus, stercus, moriturus sum.' -- (Terry Pratchett, Interesting Times)
|
||||
The Emperor had all the qualifications for a corpse except, as it were, the most vital one. -- (Terry Pratchett, Interesting Times)
|
||||
'I know about people who talk about suffering for the common good. It's never bloody them! When you hear a man shouting 'Forward, brave comrades!' you'll see he's the one behind the bloody big rock and the one wearing the only really arrow-proof helmet!' -- Rincewind gives a speech on politics. -- (Terry Pratchett, Interesting Times)
|
||||
Many an ancient lord's last words had been, 'You can't kill me because I've got magic aaargh.' -- Magic armour is not all it's cracked up to be. -- (Terry Pratchett, Interesting Times)
|
||||
Carrot was two metres tall but he'd been brought up as a dwarf, and then further up as a human. -- (Terry Pratchett, Men at Arms)
|
||||
'Young Edward thinks that there is no lake of blood too big to wade through to put a rightful king on a throne, no deed too base in defence of a crown. A romantic, in fact.' -- Lord Rust describing Edward d'Eath -- (Terry Pratchett, Men at Arms)
|
||||
The Ramkins were more highly bred than a hilltop bakery, whereas Corporal Nobbs had been disqualified from the human race for shoving. -- (Terry Pratchett, Men at Arms)
|
||||
He was said to have the body of a twenty-five year old, although no one knew where he kept it. -- The Life and Times of Corporal Nobbs -- (Terry Pratchett, Men at Arms)
|
||||
'Pride is all very well, but a sausage is a sausage.' -- Gaspode, of course -- (Terry Pratchett, Men at Arms)
|
||||
The river Ankh is probably the only river in the universe on which the investigators can chalk the outline of the corpse. -- (Terry Pratchett, Men at Arms)
|
||||
The Alchemist's Guild is opposite the Gambler's Guild. Usually. Sometimes it's above it, or below it, or falling in bits around it. -- (Terry Pratchett, Men at Arms)
|
||||
Sham Harga had run a succesful eatery for many years by always smiling, never extending credit, and realizing that most of his customers wanted meals properly balanced between the four food groups: sugar, starch, grease and burnt crunchy bits. -- (Terry Pratchett, Men at Arms)
|
||||
The Patrician relaxed, in a way which only then drew gentle attention to the foregoing moment of tension. -- (Terry Pratchett, Men at Arms)
|
||||
Sometimes it's better to light a flamethrower than curse the darkness. -- (Terry Pratchett, Men at Arms)
|
||||
Being a werewolf meant having the dexterity and jaw power to instantly rip out a man's jugular. It was a trick of her father's that had always annoyed her mother, especially when he did it just before meals. -- (Terry Pratchett, Men at Arms)
|
||||
The door was still ajar, but there was a tentative tap on it which said, in a kind of metaphorical morse code, that the tapper could see very well that Carrot was in his room with a scantily clad woman and was trying to knock without actually being heard. -- (Terry Pratchett, Men at Arms)
|
||||
'It's got three keyboards and a hundred extra knobs, including twelve with '?' on them.' -- The Unseen University Organ, as designed by B. S. Johnson -- (Terry Pratchett, Men at Arms)
|
||||
It is said that whosoever the gods wish to destroy, they first make mad. In fact, whosoever the gods wish to destroy, they first hand the equivalent of a stick with a fizzing fuse and Acme Dynamite Company written on the side. It's more interesting, and doesn't take so long. -- (Terry Pratchett, Soul Music)
|
||||
The question seldom addressed is *where* Medusa had snakes. Underarm hair is an even more embarassing problem when it keeps biting the top of the deodorant bottle. -- (Terry Pratchett, Soul Music)
|
||||
People came to Ankh-Morpork to seek their fortune. Unfortunately, other people sought it too. -- (Terry Pratchett, Soul Music)
|
||||
The class was learning about some revolt in which some peasants had wanted to stop being peasants and, since the nobles had won, had stopped being peasants *really quickly*. -- (Terry Pratchett, Soul Music)
|
||||
The hippo of recollection stirred in the muddy waters of the mind. -- (Terry Pratchett, Soul Music)
|
||||
SNH, SNH, SNH. -- (Terry Pratchett, Soul Music)
|
||||
Smoke was coming out of the stricken piano. The Librarian's hands were walking through the keys like Casanunda in a nunnery. -- (Terry Pratchett, Soul Music)
|
||||
They looked at one another in incomprehension, two minds driving opposite ways up a narrow street and waiting for the other man to reverse first. -- (Terry Pratchett, Soul Music)
|
||||
The students were staring at her in the manner of those who have heard of the species 'female' but have never expected to get this close to one. -- (Terry Pratchett, Soul Music)
|
||||
The Patrician was a pragmatist. He never tried to fix things that worked. Things that didn't work, however, got broken. -- (Terry Pratchett, Soul Music)
|
||||
'What duck?' -- (Terry Pratchett, Soul Music)
|
||||
There was a roar like the scream of a camel who has just seen two bricks. -- (Terry Pratchett, Soul Music)
|
||||
'Yes,' said the skull. 'Quit while you're a head, that's what I say.' -- (Terry Pratchett, Soul Music
|
||||
I have to admit that I drive past Bridgwater quite regularly. And fast. -- (Terry Pratchett, alt.fan.pratchett)
|
||||
'Real children don't go hoppity-skip unless they are on drugs.' -- Susan, the ultimate sensible governess -- (Terry Pratchett, Hogfather)
|
||||
Getting an education was a bit like a communicable sexual disease. It made you unsuitable for a lot of jobs and then you had the urge to pass it on. -- (Terry Pratchett, Hogfather)
|
||||
She'd become a governess. It was one of the few jobs a known lady could do. And she'd taken to it well. She'd sworn that if she did indeed ever find herself dancing on rooftops with chimney sweeps she'd beat herself to death with her own umbrella. -- (Terry Pratchett, Hogfather)
|
||||
It looked like the sort of book described in library catalogues as 'slightly foxed', although it would be more honest to admit that it looked as though it had beed badgered, wolved and possibly beared as well. -- Ah, but has it been hedgehogged? -- (Terry Pratchett, The Light Fantastic)
|
||||
He did of course sometimes have people horribly tortured to death, but this was considered to be perfectly acceptable behaviour for a civic ruler and generally approved of by the overhelming majority of citizens. [footnote: The overhelming majority of citizens being defined in this case as everyone not currently hanging upside down over a scorpion pit] -- (Terry Pratchett, Sourcery)
|
||||
There were a few seconds of total silence as everyone waited to see what would happen next. And then Nijel uttered the battle cry that Rincewind would never quite forget to the end of his life. 'Erm,' he said, 'excuse me...' -- (Terry Pratchett, Sourcery)
|
||||
'Bingeley bingeley beep!' -- (Terry Pratchett, Feet of Clay)
|
||||
'[...] a number of offences of murder by means of a blunt instrument, to whit, a dragon, and many further offences of generalized abetting [...]' -- (Terry Pratchett, Guards! Guards!)
|
||||
No enemies had ever taken Ankh-Morpock. Well *technically* they had, quite often; the city welcomed free-spending barbarian invaders, but somehow the puzzled raiders found, after a few days, that they didn't own their horses any more, and within a couple of months they were just another minority group with its own graffiti and food shops. -- (Terry Pratchett, Eric)
|
||||
Of course, Ankh-Morpork's citizens had always claimed that the river water was incredibly pure. Any water that had passed through so many kidneys, they reasoned, had to be very pure indeed. -- (Terry Pratchett, Sourcery)
|
||||
The Librarian of Unseen University had unilaterally decided to aid comprehension by producing an Orang-utan/Human Dictionary. He'd been working on it for three months. It wasn't easy. He'd got as far as 'Oook'. -- (Terry Pratchett, Men at Arms)
|
||||
The maze was so small that people got lost looking *for* it. -- Bloody Stupid Johnson at his finest -- (Terry Pratchett, Men at Arms)
|
||||
The Yen Buddhists are the richest religious sect in the universe. They hold that the accumulation of money is a great evil and a burden to the soul. They therefore, regardless of personal hazard, see it as their unpleasant duty to acquire as much as possible in order to reduce the risk to innocent people. -- (Terry Pratchett, Witches Abroad)
|
||||
'Chain letters,' said the Tyrant. 'The Chain Letter to the Ephebians. Forget Your Gods. Be Subjugated. Learn to Fear. Do not break the chain -- the last people who did woke up one morning to find fifty thousand armed men on their lawn.' -- (Terry Pratchett, Small Gods)
|
||||
'It would seem that you have no useful skill or talent whatsoever,' he said. 'Have you thought of going into teaching?' -- (Terry Pratchett, Mort)
|
||||
Only one creature could have duplicated the expressions on their faces, and that would be a pigeon who has heard not only that Lord Nelson has got down off his column but has also been seen buying a 12-bore repeater and a box of cartridges. -- (Terry Pratchett, Mort)
|
||||
'It's a god-eat-god world.' -- (Terry Pratchett, Small Gods)
|
||||
[...] Vimes's grin was as funny as the one that moves very fast towards drowning men. And has a fin on top. -- (Terry Pratchett, Jingo)
|
||||
'Taxation, gentlemen, is very much like dairy farming. The task is to extract the maximum amount of milk with the minimum of moo. And I am afraid to say that these days all I get is moo.' -- (Terry Pratchett, Jingo)
|
||||
She sighed again. She was familiar with the syndrome. They *said* they wanted a soulmate and helpmeet but sooner or later the list would include a skin like silk and a chest fit for a herd of cows. -- (Terry Pratchett, Jingo)
|
||||
The subject of wizards and sex is a complicated one, but as has already been indicated it does, in essence, boil down to this: when it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- (Terry Pratchett, Sourcery)
|
||||
The Librarian had seen many weird things in his time, but that had to be the 57th strangest. [footnote: he had a tidy mind] -- (Terry Pratchett, Moving Pictures)
|
||||
The duke had a mind that ticked like a clock and, like a clock, it regularly went cuckoo. -- (Terry Pratchett, Wyrd Sisters)
|
||||
...He hated the very idea of the world being divided into the shaved and the shavers. Or those who wore the shiny boots and those who cleaned the mud off them. Every time he saw Willikins the butler fold his, Vimes's, clothes, he suppressed a terrible urge to kick the butler's shiny backside as an affront to the dignity of man. -- (Terry Pratchett, Feet of Clay)
|
||||
'There must be a hundred silver dollars in here,' moaned Boggis, waving a purse. 'I mean, that's not my league. That's not my class. I can't handle that sort of money. You've got to be in the Guild of Lawyers or something to steal that much.' -- (Terry Pratchett, Wyrd Sisters)
|
||||
Although the scythe isn't pre-eminent among the weapons of war, anyone who has been on the wrong end of, say, a peasants' revolt will know that in skilled hands it is fearsome. -- (Terry Pratchett, Mort)
|
||||
Asking someone to repeat a phrase you'd not only heard very clearly but were also exceedingly angry about was around Defcon II in the lexicon of squabble. -- (Terry Pratchett, Witches Abroad)
|
||||
'What is this thing, anyway?' said the Dean, inspecting the implement in his hands. 'It's called a shovel,' said the Senior Wrangler. 'I've seen the gardeners use them. You stick the sharp end in the ground. Then it gets a bit technical.' -- (Terry Pratchett, Reaper Man)
|
||||
'Woof bloody woof.' -- Gaspode the Wonder Dog -- (Terry Pratchett, Moving Pictures)
|
||||
The Librarian looked out at the jolting scenery. He was sulking. This had a lot to do with the new bright collar around his neck with the word 'PONGO' on it. Someone was going to suffer for this. -- The Librarian travels incognito -- (Terry Pratchett, Lords and Ladies)
|
||||
'When it's time to stop living, I will certainly make Death my number one choice!' -- (Terry Pratchett, The Last Continent)
|
||||
'You can't trample infidels when you're a tortoise. I mean, all you could do is give them a meaningful look.' -- (Terry Pratchett, Small Gods)
|
||||
'That's right,' he said. 'We're philosophers. We think, therefore we am.' -- (Terry Pratchett, Small Gods)
|
||||
One of the universal rules of happiness is: always be wary of any helpful item that weighs less than its operating manual. -- (Terry Pratchett, Jingo)
|
||||
His philosophy was a mixture of three famous schools -- the Cynics, the Stoics and the Epicureans -- and summed up all three of them in his famous phrase, 'You can't trust any bugger further than you can throw him, and there's nothing you can do about it, so let's have a drink.' -- We meet Dydactylos the philosopher -- Terry Pratchett, Small Gods)
|
||||
Dhblah sidled closer. This was not hard. Dhblah sidled everywhere. *Crabs* thought he walked sideways. -- (Terry Pratchett, Small Gods)
|
||||
'Kneel and deliver!' -- Casanunda, the worlds smallest lover turns highwaydwarf -- (Terry Pratchett, Lords and Ladies)
|
||||
No-one would have believed, in the final years of the Century of the Fruitbat, that Discworld affairs were being watched keenly and impatiently by intelligences greater than Man's, or at least much nastier; that their affairs were being scrutinised and studied as a man with a three-day appetite might study the All-You-Can-Gobble-For-A-Dollar menu outside Harga's House of Ribs... -- (Terry Pratchett, Moving Pictures)
|
||||
'The knuckles! The horrible knuckles!' -- (Terry Pratchett, The Light Fantastic)
|
||||
'Have another drink, not-Corporal Nobby?' said Sergeant Colon unsteadily. 'I do not mind if I do, not-Sgt Colon,' said Nobby. -- The joys of working undercover -- (Terry Pratchett, Guards! Guards!)
|
||||
The vermine is a small black and white relative of the lemming, found in the cold Hublandish regions. Its skin is rare and highly valued, especially by the vermine itself; the selfish little bastard will do anything rather than let go of it. -- Discworld wildlife -- Terry Pratchett, Sourcery)
|
||||
Tourist, Rincewind decided, meant 'idiot'. -- (Terry Pratchett, The Colour of Magic)
|
||||
The person on the other side was a young woman. Very obviously a young woman. There was no possible way that she could have been mistaken for a young man in any language, especially Braille. -- The goddess with the nice earrings -- (Terry Pratchett, Maskerade)
|
||||
'But you read a lot of books, I'm thinking. Hard to have faith, ain't it, when you've read too many books?' -- (Terry Pratchett, Carpe Jugulum)
|
||||
- 'We've got a lot of experience of not having any experience' - 'But the point is... the point is... the point is we've not been experienced for a lot longer than you.' -- Stop being so negative -- (Terry Pratchett, Witches Abroad)
|
||||
The only way housework could be done in this place was with a shovel or,for preference, a match. -- (Terry Pratchett, Witches Abroad)
|
||||
People didn't hit you over the head with farmhouses back home. -- Nanny Ogg gets homesick -- (Terry Pratchett, Witches Abroad)
|
||||
Racism was not a problem on the Discworld, because -- what with trolls and dwarfs and so on -- speciesism was more interesting. Black and white lived in perfect harmony and ganged up on green. -- (Terry Pratchett, Witches Abroad)
|
||||
Nanny Ogg quite liked cooking, provided there were other people around to do things like chop up the vegetables and wash the dishes afterwards. -- Home Pragmatics -- (Terry Pratchett, Witches Abroad)
|
||||
'Emberella,' thought Magrat. 'I'm fairy godmothering a girl who sounds like something you put up in the rain.' -- (Terry Pratchett, Witches Abroad)
|
||||
Magrat was annoyed. She was also frightened, which made her even more annoyed. It was hard for people when Magrat was annoyed. It was like being attacked by damp tissue. -- (Terry Pratchett, Witches Abroad)
|
||||
Nanny Ogg looked him up and down or, at least, down and further down. 'You're a dwarf,' she said. -- Nanny Ogg meets Casanunda -- (Terry Pratchett, Witches Abroad)
|
||||
It was the sort of thing you expected in the Street of Alchemists. The neighbours *preferred* explosions, which were at least identifiable and soon over. They were better than the smells, which crept up on you. -- (Terry Pratchett, Moving Pictures)
|
||||
'Meat pies! Hot sausages! Inna bun! So fresh the pig h'an't noticed they're gone!' -- Genuine pig portion packages -- (Terry Pratchett, Moving Pictures)
|
||||
The Archchancellor's most important job, as the Bursar saw it, was to sign things, preferably, from the Bursar's point of view, without reading them first. -- Middle management explained -- (Terry Pratchett, Moving Pictures)
|
||||
By and large, the only skill the alchemists of Ankh-Morpork had discovered so far was the ability to turn gold into less gold. -- (Terry Pratchett, Moving Pictures)
|
||||
Most alchemists were nervous, in any case; it came from not knowing what the crucible of bubbling stuff they were experimenting with was going to do next. -- (Terry Pratchett, Moving Pictures)
|
||||
'If you put butter and salt on it, it tastes like salty butter.' -- Popcorn comes to the Discworld -- (Terry Pratchett, Moving Pictures)
|
||||
'Students?' barked the Archchancellor. 'Yes, Master. You know? They're the thinner ones with the pale faces? Because we're a *university*? They come with the whole thing, like rats --' -- (Terry Pratchett, Moving Pictures)
|
||||
Of course, it is very important to be sober when you take an exam. Many worthwhile careers in the street-cleansing, fruit-picking and subway-guitar-playing industries have been founded on a lack of understanding of this simple fact. -- (Terry Pratchett, Moving Pictures)
|
||||
And then you bit onto them, and learned once again that Cut-me-own-Throat Dibbler could find a use for bits of an animal that the animal didn't know it had got. Dibbler had worked out that with enough fried onions and mustard people would eat *anything*. -- A fact McDonalds knows about as well -- (Terry Pratchett, Moving Pictures)
|
||||
'The thing is that Mr. Dibbler can even sell sausages to people who have bought them off him *before*.' -- Now *that's* marketing -- (Terry Pratchett, Moving Pictures)
|
||||
- 'You pay for it before you eat it? What happens if it's dreadful?' - 'That's why.' -- (Terry Pratchett, Moving Pictures)
|
||||
'One minute I'm just another rabbit and happy about it, next minute *whazaam*, I'm thinking. That's a major drawback if you're looking for happiness as a rabbit, let me tell you. You want grass and sex, not thoughts like 'What's it all about, when you get right down to it?'' -- (Terry Pratchett, Moving Pictures)
|
||||
'I'm a cat person, myself,' she said, vaguely. A low-level voice said: 'Yeah? Yeah? Wash in your own spit, do you?' -- It's a dog's life -- (Terry Pratchett, Moving Pictures)
|
||||
'Why's it called Ming?' said the Archchancellor, on cue. The Bursar tapped the pot. It went *ming*. -- Discworld archeology revealed -- (Terry Pratchett, Moving Pictures)
|
||||
Azhural raised his staff. 'It's fifteen hundred miles to Ankh-Morpork,' he said. 'We've got three hundred and sixty-three elephants, fifty carts of forage, the monsoon's about to break and we're wearing... we're wearing... sort of things, like glass, only dark... dark glass things on our eyes...' -- (Terry Pratchett, Moving Pictures)
|
||||
People who used magic without knowing what they were doing usually came to a sticky end. All over the entire room, sometimes. -- (Terry Pratchett, Moving Pictures)
|
||||
'He's in love,' said Gaspode. 'It's very tricky.' 'Yeah, I know how it is,' said the cat sympathetically. 'People throwing old boots and things at you.' -- (Terry Pratchett, Moving Pictures)
|
||||
'In a word -- im-possible!' 'That's two words,' said Dibbler. -- (Terry Pratchett, Moving Pictures)
|
||||
'I'm vice-president of Throwing Out People Mr Dibbler Doesn't like the Face of.' -- (Terry Pratchett, Moving Pictures)
|
||||
Old Tom was the single cracked bronze bell in the University bell tower. The clapper dropped out shortly after it was cast, but the bell still tolled out some tremendously sonorous silences every hour. -- (Terry Pratchett, Eric)
|
||||
Rincewind had been told that death was just like going into another room. The difference is, when you shout, 'Where's my clean socks?', no-one answers. -- (Terry Pratchett, Eric)
|
||||
'Nac mac Feegle wha hae!' -- (Terry Pratchett, Carpe Jugulum)
|
||||
In Ghat they believe in vampire watermelons, although folklore is silent about *what* they believe about vampire watermelons. Possibly they suck back. -- (Terry Pratchett, Carpe Jugulum)
|
||||
Perdita thought that not obeying rules was somehow *cool*. Agnes thought that rules like 'Don't fall into this huge pit of spikes' were there for a purpose. -- (Terry Pratchett, Carpe Jugulum)
|
||||
It was true about the time measurement as well. The Tezumen had realized long ago that everything was steadily getting worse and, having a terrible little-mindedness, had developed a complex system to keep track of how much worse each succeeding day was. -- (Terry Pratchett, Eric)
|
||||
'These people were not only cheering, they were throwing flowers and hats. The hats were made of stone, but the thought was there.' -- Life among the primitive Discworld tribes -- (Terry Pratchett, Eric)
|
||||
While working his way along a wall he came to a huge door, which artistically portrayed a group of prisoners apparently being given a complete medical check-up [footnote: From a distance it did, anyway. Close to, no]. -- Rincewind visits the Tezumen tribe -- (Terry Pratchett, Eric)
|
||||
The trouble is that things *never* get better, they just stay the same, only more so. -- (Terry Pratchett, Eric)
|
||||
'Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life.' -- (Terry Pratchett, Jingo)
|
||||
'*Veni, vici*...Vetinari.' -- (Terry Pratchett, Jingo)
|
||||
- 'What're quantum mechanics?' - 'I don't know. People who repair quantums, I suppose.' -- (Terry Pratchett, Eric)
|
||||
No one was avoiding him, it was just that an apparent random Brownian motion was gently moving everyone away. -- (Terry Pratchett, Reaper Man)
|
||||
'Dock-a-loodle-fod!' -- Dyslexic roosters are a sad sight -- (Terry Pratchett, Reaper Man)
|
||||
People have believed for hundreds of years that newts in a well mean that the water's fresh and drinkable, and *in all that time* never asked themselves whether the newts got out to go to the lavatory. -- (Terry Pratchett, Reaper Man)
|
||||
He'd never realized that, deep down inside, what he really wanted to do was make things go splat. -- (Terry Pratchett, Reaper Man)
|
||||
DROP THE SCYTHE, AND TURN AROUND SLOWLY. -- Dirty Death -- (Terry Pratchett, Reaper Man)
|
||||
Five exclamation marks, the sure sign of an insane mind. -- (Terry Pratchett, Reaper Man)
|
||||
It is traditional, when loading wire trolleys, to put the most fragile items at the bottom. -- (Terry Pratchett, Reaper Man)
|
||||
No matter how fast light travels it finds the darkness has always got there first, and is waiting for it. -- (Terry Pratchett, Reaper Man)
|
||||
'Could have bin worse, mister. I could have said 'miaow'.' -- Our hero meets Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Worlds only harmonica-playing dog. Tuppence.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Seems I can't get me 'ead down these days without rescuin' people or foilin' robbers or sunnink.' -- It's a wonder dog's life -- (Terry Pratchett, Moving Pictures)
|
||||
'How's he in the mysterious senses department?' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Walk a mile on these paws and call me a liar.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Woof. In tones of low menace.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'There's nothin' wrong with bein' a son of a bitch.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I thought it was going to be bucket-of-water time myself.' -- Gaspode's way of saying 'I'm sorry, was I intruding?' -- (Terry Pratchett, Moving Pictures)
|
||||
'I can explain it in Dog, but you only listen in Human.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I mean are we talking Thicko City here or what?' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I wouldn't give it to a dog, and I *am* one.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Does that look like ten per cent to you, Victor?' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
And there was nothing finer than a wizard dressed up formally, until someone could find a way of inflating a Bird of Paradise, possibly by using an elastic band and some kind of gas. -- (Terry Pratchett, Jingo)
|
||||
''Chapter Fifteen, Elementary Necromancy'', she read out loud. ''Lesson One: Correct Use of Shovel...'' -- (Terry Pratchett, Jingo)
|
||||
'One o'clock pee em! Hello, Insert Name Here!' -- The Dis-organizer -- (Terry Pratchett, Jingo)
|
||||
'... Percy the Pup here with a cold nose, bright eyes, glossy coat and the brains of a stunned herring.' -- Gaspode the wonder dog on 'Laddie' -- (Terry Pratchett, Moving Pictures)
|
||||
'Maybe you should loosen her clothing or something.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I could send you a bone with a file in it, only you'd eat it.' -- (Terry Pratchett, Moving Pictures)
|
||||
'Well, 'scuse me. I was jus' tryin' to save the world.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'If gharstely creatures from before the Dawna Time starts wavin' at you from under your bed, jus' you don't come complainin' to me,' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'Idiot I may be, but tied up I ain't.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'ER...HO. HO. HO.' -- Death makes a career move -- (Terry Pratchett, Hogfather)
|
||||
Biers was where the undead drank. And when Igor the barman was asked for a Bloody Mary, he didn't mix a metaphor. -- (Terry Pratchett, Hogfather)
|
||||
'And Howondaland Smith, Balrog Hunter, practic'ly eats the dark for his tea.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
Nanny Ogg found herself embarrassed to even think about this, and this was unusual because embarrassment normally came as naturally to Nanny as altruism comes to a cat. -- (Terry Pratchett, Maskerade)
|
||||
People who didn't need people needed people around to know that they were the kind of people who didn't need people. -- (Terry Pratchett, Maskerade)
|
||||
He had a unique stride: it looked as though his body was being dragged forward and his legs had to flail around underneath it, landing wherever they could find room. It wasn't so much a walk as a collapse, indefinitely postponed. -- (Terry Pratchett, Maskerade)
|
||||
She'd even given herself a middle initial - X - which stood for 'someone who has a cool and exciting middle name'. -- (Terry Pratchett, Maskerade)
|
||||
'Messin' around with girls in thrall to Creatures from the Void never works out, take my word for it. -- Gaspode gives Victor some practical advice -- (Terry Pratchett, Moving Pictures)
|
||||
In the fetid fleapit of Rincewind's brain the projectionist of memory put on reel two. Recollection began to flicker. -- (Terry Pratchett, The Last Continent)
|
||||
'Growl, growl.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I can bite your leg if you like.' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
'I expect I've saved the day, right?' -- Gaspode the wonder dog -- (Terry Pratchett, Moving Pictures)
|
||||
I MUST SAY THESE ARE VERY GOOD BISCUITS. HOW DO THEY GET THE BITS OF CHOCOLATE IN? -- Death has a snack -- (Terry Pratchett, Lords and Ladies)
|
||||
Nanny Ogg never did any housework herself, but she was the cause of housework in other people. -- (Terry Pratchett, Lords and Ladies)
|
||||
Verence would rather cut his own leg off than put a witch in prison, since it'd save trouble in the long run and probably be less painful. -- (Terry Pratchett, Lords and Ladies)
|
||||
I LIKE TO THINK I AM A PICKER-UP OF UNCONSIDERED TRIFLES. Death grinned hopefully. -- (Terry Pratchett, Lords and Ladies)
|
||||
Mustrum Ridcully did a lot for rare species. For one thing, he kept them rare. -- (Terry Pratchett, Lords and Ladies)
|
||||
Using a metaphor in front of a man as unimaginative as Ridcully was like a red flag to a bu-- was like putting something very annoying in front of someone who was annoyed by it. -- (Terry Pratchett, Lords and Ladies)
|
||||
The thing about iron is that you generally don't have to think fast in dealing with it. -- (Terry Pratchett, Lords and Ladies)
|
||||
Nanny Ogg looked under her bed in case there was a man there. Well, you never knew your luck. -- (Terry Pratchett, Lords and Ladies)
|
||||
The chieftain had been turned into a pumpkin although, in accordance with the rules of universal humour, he still had his hat on. -- (Terry Pratchett, Lords and Ladies)
|
||||
For Magrat, stepping into a man's bedroom was like an explorer stepping on to that part of the map marked Here Be Dragons. -- (Terry Pratchett, Lords and Ladies)
|
||||
'I wants your body, Mrs Ogg.' -- Casanunda makes his move -- (Terry Pratchett, Lords and Ladies)
|
||||
'I know she's in there,' said Verence, holding his crown in his hands in the famous Ai-Senor-Mexican-Bandits-Have-Raided-Our-Village position. -- (Terry Pratchett, Lords and Ladies)
|
||||
In fact, the mere act of opening the box will determine the state of the cat, although in this case there were three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious. -- Schrodinger's Moggy explained -- (Terry Pratchett, Lords and Ladies)
|
||||
The shortest unit of time in the multiverse is the New York Second, defined as the period of time between the traffic lights turning green and the cab behind you honking. -- (Terry Pratchett, Lords and Ladies)
|
||||
'Serve 'em right for not inviting me to their weddings.' -- Ridcully contemplates the Trousers of Time -- (Terry Pratchett, Lords and Ladies)
|
||||
Daggy stepped forward, but only comparatively; in fact, his mates had all, without discussion, taken one step backwards in the choreography of caution. -- (Terry Pratchett, The Last Continent)
|
||||
One day a tortoise will learn how to fly. -- (Terry Pratchett, Small Gods)
|
||||
History, contrary to popular theories, *is* kings and dates and battles. -- (Terry Pratchett, Small Gods)
|
||||
And it came to pass that in time the Great God Om spake unto Brutha, the Chosen One: 'Psst!' -- (Terry Pratchett, Small Gods)
|
||||
Brother Preptil, the master of the music, had described Brutha's voice as putting him in mind of a disappointed vulture arriving too late at the dead donkey. -- (Terry Pratchett, Small Gods)
|
||||
'There's very good eating on one of these, you know.' -- Eyeing the tortoise for tea -- (Terry Pratchett, Small Gods)
|
||||
'Pets are always a great help in times of stress. And in times of starvation too, o'course.' -- (Terry Pratchett, Small Gods)
|
||||
Words are the litmus paper of the minds. If you find yourself in the power of someone who will use the word 'commence' in cold blood, go somewhere else very quickly. But if they say 'Enter', don't stop to pack. -- (Terry Pratchett, Small Gods)
|
||||
The labyrinth of Ephebe is ancient and full of one hundred and one amazing things you can do with hidden springs, razor-sharp knives, and falling rocks. -- (Terry Pratchett, Small Gods)
|
||||
'Ah. Philosophy,' said Om. -- (Terry Pratchett, Small Gods)
|
||||
'Not a man to mince words. People, yes. But not words.' -- (Terry Pratchett, Small Gods)
|
||||
PEOPLE'S WHOLE LIVES *DO* PASS IN FRONT OF THEIR EYES BEFORE THEY DIE. THE PROCESS IS CALLED 'LIVING'. -- (Terry Pratchett, The Last Continent)
|
||||
'Nulli Sheilae sanguineae' -- (Terry Pratchett, The Last Continent)
|
||||
SQUEAK. -- The Death of Rats -- (Terry Pratchett, Small Gods)
|
||||
Bishops move diagonally. That's why they often turn up where the kings don't expect them to be. -- (Terry Pratchett, Small Gods)
|
||||
Cuius testiculos habes, habeas cardia et cerebellum. -- (Terry Pratchett, Small Gods)
|
||||
'Are you a philosopher? Where's your sponge?' -- (Terry Pratchett, Small Gods)
|
||||
REMIND ME AGAIN, he said, HOW THE LITTLE HORSE-SHAPED ONES MOVE. -- Death on symbolic last games -- (Terry Pratchett, Small Gods)
|
||||
What our ancestors would really be thinking, if they were alive today, is: 'Why is it so dark in here?' -- (Terry Pratchett, Pyramids)
|
||||
All assassins had a full-length mirror in their rooms, because it would be a terrible insult to anyone to kill them when you were badly dressed. -- (Terry Pratchett, Pyramids)
|
||||
Lancre operated on the feudal system, which was to say, everyone feuded all the time and handed on the fight to their descendants. -- (Terry Pratchett, Carpe Jugulum)
|
||||
'I name you ... Esmeralda Margaret Note Spelling of Lancre!' -- (Terry Pratchett, Carpe Jugulum)
|
||||
I AM DEATH, NOT TAXES. *I* TURN UP ONLY ONCE. -- (Terry Pratchett, Feet of Clay)
|
||||
Slab: Jus' say 'AarrghaarrghpleeassennononoUGH' -- Detritus' war on drugs -- (Terry Pratchett, Feet of Clay)
|
||||
And, while it was regarded as pretty good evidence of criminality to be living in a slum, for some reason owning a whole street of them merely got you invited to the very best social occasions. -- (Terry Pratchett, Feet of Clay)
|
||||
There were no public health laws in Ankh-Morpork. It would be like installing smoke detectors in Hell. -- (Terry Pratchett, Feet of Clay)
|
||||
'Reflected-sound-of-underground-spirits?' -- Economics explained -- (Terry Pratchett, The Colour of Magic)
|
||||
I WAS AT A PARTY, he added, a shade reproachfully. -- Death is summoned by the Wizards -- (Terry Pratchett, The Light Fantastic)
|
||||
If broomsticks were cars, this one would be a split-window Morris Minor. -- (Terry Pratchett, Equal Rites)
|
||||
'Do not meddle in the affairs of wizards because a refusal often offends, I read somewhere.' -- (Terry Pratchett, Mort)
|
||||
'When a man is tired of Ankh-Morpork, he is tired of ankle-deep slurry.' -- (Terry Pratchett, Mort)
|
||||
'I'd like to know if I could compare you to a summer's day. Because -- well, June 12th was quite nice, and...' -- (Terry Pratchett, Wyrd Sisters)
|
||||
'Ibid you already know.' -- More Discworld philosophers -- (Terry Pratchett, Pyramids)
|
||||
FABRICATI DIEM, PVNC. -- The motto of the Ankh-Morpork City Watch -- (Terry Pratchett, Guards! Guards!)
|
||||
'Pour encourjay lays ortras.' -- (Terry Pratchett, Guards! Guards!)
|
||||
'This is Lord Mountjoy Quickfang Winterforth IV, the hottest dragon in the city. It could burn your head clean off.' -- Captain Vimes addresses a band of rioters -- (Terry Pratchett, Guards! Guards!
|
||||
'Can't sing. Can't dance. Can handle a sword a little.' -- Victor's resume -- (Terry Pratchett, Moving Pictures)
|
||||
I EXPECT, he said, THAT YOU COULD MURDER A PIECE OF CHEESE? -- Death talks to the Death of Rats -- (Terry Pratchett, Reaper Man)
|
||||
On the fabled hidden continent of XXXX, somewhere near the rim, there is a lost colony of wizards who wear corks around their pointy hats and live on nothing but prawns. -- (Terry Pratchett, Reaper Man)
|
||||
'Bonsai!' -- (Terry Pratchett, Reaper Man)
|
||||
'Chap with a whip got as far as the big sharp spikes last week,' said the low priest. -- Life in the Temple of Offler -- (Terry Pratchett, Reaper Man)
|
||||
'You know,' said Windle, 'it's a wonderful afterlife.' -- (Terry Pratchett, Reaper Man)
|
||||
'Go on, do Deformed Rabbit... it's my favourite.' -- Shadow puppets are so cute -- (Terry Pratchett, Small Gods)
|
||||
'Hah, I can just see a real playsmith putting *donkeys* in a play!' -- (Terry Pratchett, Lords and Ladies)
|
||||
'Do not meddle in the affairs of wizards, especially simian ones. They are not all that subtle.' -- (Terry Pratchett, Lords and Ladies)
|
||||
I DON'T KNOW ABOUT YOU, he said, BUT I COULD MURDER A CURRY. -- Death addresses his new apprentice -- (Terry Pratchett, Mort)
|
||||
Poets have tried to describe Ankh-Morpork. They have failed. Perhaps it's the sheer zestful vitality of the place, or maybe it's just that a city with a million inhabitants and no sewers is rather robust for poets, who prefer daffodils and no wonder. -- (Terry Pratchett, Mort)
|
||||
It is a fact that although the Death of the Discworld is, in his own words, an ANTHROPOMORPHIC PERSONIFICATION, he long ago gave up using the traditional skeletal horses, because of the bother of having to stop all the time to wire bits back on. -- (Terry Pratchett, Mort)
|
||||
'You're dead,' he said. Keli waited. She couldn't think of any suitable reply. 'I'm not' lacked a certain style, while 'Is it serious?' seemed somehow too frivolous. -- Princess Keli in trouble -- (Terry Pratchett, Mort)
|
||||
Ankh-Morpork had dallied with many forms of government and had ended up with that form of democracy known as One Man, One Vote. The Patrician was the Man; he had the Vote. -- Discworld politics explained -- (Terry Pratchett, Mort)
|
||||
- I USHERED SOULS INTO THE NEXT WORLD. I WAS THE GRAVE OF ALL HOPE. I WAS THE ULTIMATE REALITY. I WAS THE ASSASSIN AGAINST WHOM NO LOCK WOULD HOLD. - 'Yes, point taken, but do you have any particular skills?' -- Death consults a job broker -- (Terry Pratchett, Mort)
|
||||
- 'Sodomy non sapiens,' said Albert under his breath. - 'What does that mean?' - 'Means I'm buggered if I know.' -- Mort and Albert are facing a problem -- (Terry Pratchett, Mort)
|
||||
Women's clothes were not a subject that preoccupied Cutwell much -- in fact, usually when he thought about women his mental pictures seldom included any clothes at all -- but the vision in front of him really did take his breath away. -- Princess Keli prepares for her coronation -- (Terry Pratchett, Mort)
|
||||
'You won't get away with this,' said Cutwell. He thought for a bit and added, 'Well, you will probably get away with it, but you'll feel bad about it on your deathbed and you'll wish -- ' He stopped talking. -- Cutwell tries to reason with the Duke of Sto Helit -- (Terry Pratchett, Mort)
|
||||
'It's going to look pretty good, then, isn't it,' said War testily, 'the One Horseman and Three Pedestrians of the Apocralypse.' -- The Four Horsemen of the Apocralypse encounter unexpected difficulties -- (Terry Pratchett, Sourcery)
|
||||
It wasn't blood in general he couldn't stand the sight of, it was just his blood in particular that was so upsetting. -- (Terry Pratchett, Sourcery)
|
||||
Still, it was a relief to get away from that macabre sight. Gander considered that gnolls didn't look any better inside than out. He hated their guts. -- (Terry Pratchett, Equal Rites)
|
||||
It became apparent that one reason why the Ice Giants were known as the Ice Giants was because they were, well, giants. The other was that they were made of ice. -- (Terry Pratchett, Sourcery)
|
||||
A Thaum is the basic unit of magical strength. It has been universally established as the amount of magic needed to create one small white pigeon or three normal sized billiard balls. -- (Terry Pratchett, The Light Fantastic)
|
||||
'That statement is either so deep it would take a lifetime to fully comprehend every particle of its meaning, or it is a load of absolute tosh. Which is it, I wonder?' -- (Terry Pratchett, Hogfather)
|
||||
'Real stupidity beats artificial intelligence every time.' -- Bursar 1 - Hex 0 -- (Terry Pratchett, Hogfather)
|
||||
He moved in a way that suggested he was attempting the world speed record for the nonchalant walk. -- (Terry Pratchett, The Light Fantastic)
|
||||
- 'What is it that a man may call the greatest things in life?' - 'Hot water, good dentishtry and shoft lavatory paper.' -- Cohen the Barbarian in conversation with Discworld nomads -- (Terry Pratchett, The Light Fantastic)
|
||||
The old shaman said carefully, 'You didn't just see two men go through upside down on a broomstick, shouting and screaming at each other, did you?' The boy looked at him levelly. 'Certainly not,' he said. The old man heaved a sigh of relief. 'Thank goodness for that,' he said. 'Neither did I.' -- Rincewind and Twoflower take up broomstick flying -- (Terry Pratchett, The Light Fantastic)
|
||||
There are many rhymes about magpies, but none of them is very reliable because they are not the ones the magpies know themselves. -- (Terry Pratchett, Carpe Jugulum)
|
||||
One or two of the old barrows had been exposed over the years, their huge stones attracting their own folklore. If you left your unshod horse at one of them overnight and placed sixpence on the stone, in the morning the sixpence would be gone and you'd never see your horse again, either... -- (Terry Pratchett, Carpe Jugulum)
|
||||
Hodgesaargh was an original storyteller and quite good in a very specific way. If he'd had to recount the saga of the Tsortean War, for example, it would have been in terms of the birds observed, every cormorant noted, every pelican listed, every battlefield raven taxonomically placed, no tern unturned. Some men in armour would have been involved at some stage, but only because the ravens were perching on them. -- (Terry Pratchett, Carpe Jugulum)
|
||||
Something small and distant broke through the cloud layer, trailing shreds of vapour. In the stratospheric calm the sounds of bickering came sharp and clear. 'You said you could fly one of these things!' 'No I didn't; I just said *you* couldn't!' -- Rincewind and Twoflower attempt broomstick flying -- (Terry Pratchett, The Light Fantastic)
|
||||
'Early to rise, early to bed, makes a man healthy, wealthy and dead.' -- Apparently Terry nicked this from James Thurber. Still a good quote, though. -- (Terry Pratchett, The Light Fantastic)
|
||||
The druid stiffened. '*Nice?*' he said. 'A triumph of the silicon chunk, a miracle of modern masonic technology -- *nice*?' 'Oh, yes,' said Twoflower, to whom sarcasm was merely a seven letter word beginning with S. -- (Terry Pratchett, The Light Fantastic)
|
||||
'Shut up and tell me what that other idiot ish doing!' 'No, but look, if I've got to shut up, how can I --' The knife at his throat became a hot streak of pain and Rincewind decided to give logic a miss. -- Cohen the Barbarian interrogates Rincewind -- (Terry Pratchett, The Light Fantastic)
|
||||
'Students made it long ago,' said Rincewind. 'Handy way in and out after lights out.' 'Ah,' said Twoflower, 'I *understand*. Over the wall and out to brightly-lit tavernas to drink and sing and recite poetry, yes?' 'Nearly right except for the singings and the poetry, yes,' said Rincewind. -- (Terry Pratchett, The Light Fantastic)
|
||||
The librarian was, ex officio, a member of the college council. No-one had been able to find any rule about orang-utans being barred, although they had surreptiously looked very hard for one. -- Unseen University politics at work -- (Terry Pratchett, Eric)
|
||||
I HOPE WE ARE NOT GOING TO HAVE ANY OF THIS 'FOUL FIEND' BUSINESS AGAIN. -- Death gets summoned by the college council -- (Terry Pratchett, Eric)
|
||||
There had been some desultory talk about putting up a statue to Rincewind but, by the curious alchemy that tends to apply in these sensitive issues, this quickly became a plaque, then a note on the Roll of Honour, and finally a motion of censure for being improperly dressed. -- Unseen University politics at work -- (Terry Pratchett, Eric)
|
||||
Any wizard bright enough to survive for five minutes was also bright enough to realise that if there was any power in demonology, then it lay with the demons. Using it for your own purposes would be like trying to beat mice to death with a rattlesnake. -- Why summoning demons is a Bad Idea -- (Terry Pratchett, Eric)
|
||||
The gods of the Disc have never bothered much about judging the souls of the dead, and so people only go to hell if that's where they believe, in their deepest heart, that they deserve to go. Which they won't do if they don't know about it. This explains why it is so important to shoot missionaries on sight. -- (Terry Pratchett, Eric)
|
||||
'You mean mysterious ancient races of Amazonian princesses who subject all male prisoners to strange and exhausting progenitative rites?' said Eric, his glasses beginning to fog. -- (Terry Pratchett, Eric)
|
||||
The consensus seemed to be that if really large numbers of men were sent to storm the mountain, then enough might survive the rocks to take the citadel. This is essentially the basis of all military thinking. -- (Terry Pratchett, Eric)
|
||||
A good bookshop is just a genteel Black Hole that knows how to read. -- (Terry Pratchett, Guards! Guards!)
|
||||
There was a thoughtful pause in the conversation as the assembled Brethrenmentally divided the universe into the deserving and the undeserving, and put themselves on the appropriate side. -- The Elucidated Brethren see the light -- (Terry Pratchett, Guards! Guards!)
|
||||
All dwarfs have beards and wear up to twelve layers of clothing. Gender is more or less optional. -- (Terry Pratchett, Guards! Guards!)
|
||||
*Glingleglingleglingle.* -- (Terry Pratchett, Hogfather)
|
||||
All dwarfs are by nature dutiful, serious, literate, obedient and thoughtful people whose only minor failing is a tendency, after one drink, to rush at enemies screaming 'Arrrrrrgh!' and axing their legs off at the knee. -- (Terry Pratchett, Guards! Guards!)
|
||||
People who are rather more than six feet tall and nearly as broad across the shoulders often have uneventful journeys. People jump out at them from behind rocks then say things like, 'Oh. Sorry. I thought you were someone else.' -- Carrot travels to Ankh-Morpork -- (Terry Pratchett, Guards! Guards!)
|
||||
He nodded to the troll which was employed by the Drum as a splatter [footnote: Like a bouncer, but trolls use more force]. -- Nobby takes Carrot for a drink in The Mended Drum -- (Terry Pratchett, Guards! Guards!)
|
||||
It was possibly the most circumspect advance in the history of military manoeuvres, right down at the bottom end of the scale that things like the Charge of the Light Brigade are at the top of. -- The City Watch takes action -- (Terry Pratchett, Guards! Guards!)
|
||||
Lady Ramkin's bosom rose and fell like an empire. -- (Terry Pratchett, Guards! Guards!)
|
||||
It's a metaphor of human bloody existence, a dragon. And if that wasn't bad enough, it's also a bloody great hot flying thing. -- Captain Vimes ponders his problems -- (Terry Pratchett, Guards! Guards!)
|
||||
The three rules of the Librarians of Time and Space are: 1) Silence; 2)Books must be returned no later than the date last shown; and 3) Do not interfere with the nature of causality. -- (Terry Pratchett, Guards! Guards!)
|
||||
A number of religions in Ankh-Morpork still practiced human sacrifice, except that they didn't really need to practice any more because they had got so good at it. -- (Terry Pratchett, Guards! Guards!)
|
||||
WHAT CAN THE HARVEST HOPE FOR, IF NOT FOR THE CARE OF THE REAPER MAN? -- Death appeals to Azrael -- (Terry Pratchett, Reaper Man)
|
||||
The sergeant put on the poker face which has been handed down from NCO to NCO ever since one protoamphibian told another, lower ranking protoamphibian to muster a squad of newts and Take That Beach. -- (Terry Pratchett, Eric)
|
||||
- 'What shall I do?' - 'Well, if you see anything crawl out of the sea and try to breathe, you could try telling it not to bother.' -- Rincewind and Eric at the Beginning of Time -- (Terry Pratchett, Eric)
|
||||
'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' -- Something that Terry feels strongly about, because a similar quote also appears in 'Reaper Man' -- (Terry Pratchett, Eric)
|
||||
The Supreme Life President of Hell wrote: 'What business are we in???' He thought for a bit, and then carefully wrote, underneath: 'We are in the damnation business!!!' -- (Terry Pratchett, Eric)
|
||||
'Tis not right, a woman going into such places by herself.' Granny nodded. She thoroughly approved of such sentiments so long as there was, of course, no suggestion that they applied to her. -- (Terry Pratchett, Wyrd Sisters)
|
||||
Above the hearth was a huge pokerwork sign saying 'Mother'. No tyrant in the whole history of the world had ever achieved a domination so complete. -- (Terry Pratchett, Wyrd Sisters)
|
||||
'A man could go far, knowing his rights like you do,' said Granny. 'But right now he should go home.' -- (Terry Pratchett, Wyrd Sisters)
|
||||
'I daresay,' said Granny, pushing the Fool aside and stepping over a writhing taproot. 'If anyone locked *me* in a dungeon, there'd be screams.' -- (Terry Pratchett, Wyrd Sisters)
|
||||
'He didn't take any notice!' whispered Tomjon. 'A born critic,' said the dwarf. -- Discworld stage actors in conversation -- (Terry Pratchett, Wyrd Sisters)
|
||||
'What sort of person,' said Salzella patiently, 'sits down and *writes* a maniacal laugh? And all those exclamation marks, you notice? Five? A sure sign of someone who wears his underpants on his head. Opera can do that to a man.' -- (Terry Pratchett, Maskerade)
|
||||
'The singers all loathe the sight of one another, the chorus despises the singers, they both hate the orchestra, and everyone fears the conductor; the staff on one prompt side won't talk to the staff on the opposite prompt side, the dancers are all crazed from hunger in any case...' -- (Terry Pratchett, Maskerade)
|
||||
Most people in Lancre, as the saying goes, went to bed with the chickens and got up with the cows. [footnote: Er. That is to say, they went to bed at the same time as the chickens went to bed, and got up at the same time as the cows got up. Loosely worded sayings can really cause misunderstandings.] -- (Terry Pratchett, Maskerade)
|
||||
'Actors,' said Granny, witheringly. 'As if the world weren't full of enough history without inventing more.' -- (Terry Pratchett, Wyrd Sisters)
|
||||
'You can't go around building a better world for people. Only people can build a better world for people. Otherwise it's just a cage.' -- (Terry Pratchett, Witches Abroad)
|
||||
'Just because someone's a member of an ethnic minority doesn't mean they're not a nasty small-minded little jerk [...]' -- (Terry Pratchett, Feet of Clay) '...my father is the Emperor of Klatch and my mother is a small tray of raspberry puddings.' -- Agnes tells Christine about herself -- (Terry Pratchett, Maskerade)
|
||||
Instead, people would take pains to tell her that beauty was only skin-deep, as if a man ever fell for an attractive pair of kidneys. -- (Terry Pratchett, Maskerade)
|
||||
A day ago the future had looked aching and desolate, and now it looked full of surprises and terror and bad things happening to people... If she had anything to do with it anyway. -- Granny Weatherwax commits optimism -- (Terry Pratchett, Maskerade)
|
||||
- 'There have been...accidents.' - 'What kind of accidents?' - 'The kind of accidents you prefer to call...accidents.' -- (Terry Pratchett, Maskerade)
|
||||
You never ever volunteered. Not even if a sergant stood there and said, 'We need someone to drink alcohol, bottles of, and make love, passionate, to women, for the use of.' There was *always* a snag. If a choir of angels asked for volunteers for Paradise to step forward, Nobby knew enough to take one smart pace to the rear. -- (Terry Pratchett, Feet of Clay)
|
||||
'Today Is A Good Day For Someone Else To Die!' -- (Terry Pratchett, Feet of Clay)
|
||||
- 'Have you any last words?' - YES. I DON'T WANT TO GO. - 'Well. Succinct, anyway.' -- Death at the other end of the scythe, for once -- (Terry Pratchett, Reaper Man)
|
||||
They both savoured the strange warm glow of being much more ignorant than ordinary people, who were only ignorant of ordinary things. -- Discworld scientists at work -- (Terry Pratchett, Equal Rites)
|
||||
'I meant,' said Iplsore bitterly, 'what is there in this world that makes living worthwhile?' Death thought about it. 'CATS,' he said eventually, 'CATS ARE NICE.' -- Death is obviously not a dog person -- (Terry Pratchett, Sourcery)
|
||||
Fewer birds could sit more meekly than the Lancre wowhawk, or lappet-faced worrier, a carnivore permanently on the lookout for the vegetarian option. -- (Terry Pratchett, Carpe Jugulum)
|
||||
In fact, no gods anywhere play chess. They prefer simple, vicious games, where you Do Not Achieve Transcendence but Go Straight to Oblivion; a key to the understanding of all religion is that a god's idea of amusement is Snakes and Ladders with greased rungs. -- (Terry Pratchett, Wyrd Sisters)
|
||||
They may have been ugly. they may have been evil. But when it came to poetry in motion, the Things had all the grace and coordination of a deck-chair. -- Meet the creatures from the Dungeon Dimensions -- (Terry Pratchett, Equal Rites)
|
||||
Everything starts somewhere, though many physicists disagree. But people have always been dimly aware of the problem with the start of things. They wonder how the snowplough driver gets to work, or how the makers of dictionaries look up the spelling of words. -- (Terry Pratchett, Hogfather)
|
||||
We took pity on him because he'd lost both parents at an early age. I think that, on reflection, we should have wondered a bit more about that. -- Lord Downey reflects on Mister Teatime -- (Terry Pratchett, Hogfather)
|
||||
Rumour is information distilled so finely that it can filter through anything. It does not need doors and windows -- sometimes it does not need people. It can exist free and wild, running from ear to ear without ever touching lips. -- (Terry Pratchett, Feet of Clay)
|
||||
In all, I've had seventeen demands for your badge. Some want parts of your body attached. Why did you have to upset everybody? -- Lord Vetinari reproves Vimes. -- (Terry Pratchett, Feet of Clay)
|
||||
The truth may be out there, but lies are inside your head. -- (Terry Pratchett, Hogfather)
|
||||
+++ Divide By Cucumber Error. Please Reinstall Universe And Reboot +++ -- (Terry Pratchett, Hogfather)
|
||||
'Millennium hand and shrimp.' -- (Terry Pratchett, Hogfather)
|
||||
'What do people like to drink here, then?' The landlord looked sideways at his customers, a clever trick given that they were directly in front of him. -- Mort goes out for a drink -- (Terry Pratchett, Mort)
|
||||
'You like it?' he said to Mort, in pretty much the same tone of voice people used when they said to St George, 'You killed a *what*?' -- Mort tastes scrumble for the first time -- (Terry Pratchett, Mort)
|
||||
'Go ahead, bake my quiche' -- Magrat instructs the castle cook -- (Terry Pratchett, Lords and Ladies)
|
||||
In the Beginning there was nothing, which exploded. -- (Terry Pratchett, Lords and Ladies)
|
||||
He had the look of a lawn mower just after the grass had organised a workers' collective. There was a definite suggestion that, deep inside, he knew this was not really happening. It could not be happening because this sort of thing did not happen. Any contradictory evidence could be safely ignored. -- (Terry Pratchett, Jingo)
|
||||
It was so much easier to blame it on Them. It was bleakly depressing to think that They were Us. If it was Them, then nothing was anyone's fault. If it was us, what did that make Me? After all, I'm one of Us. I must be. I've certainly never thought of myself as one of Them. *No one* ever thinks of themselves as one of Them. We're always one of Us. It's Them that do the bad things. -- (Terry Pratchett, Jingo)
|
||||
Remember, A Dragon is For Life, Not Just for Hogswatchnight -- Motto of The Sunshine Home for Sick Dragons in Morphic Street, Please Leave Donations of Coal by Side Door. -- (Terry Pratchett, Lords and Ladies)
|
||||
The place looked as though it had been visited by Gengiz Cohen [footnote: hence the term 'wholesale destruction']. -- (Terry Pratchett, Lords and Ladies)\
|
||||
'This is a lovely party,' said the Bursar to a chair, 'I wish I was here.' -- The Bursar is a man under a *lot* of stress -- (Terry Pratchett, Lords and Ladies)
|
||||
The Ephebians made wine out of anything they could put in a bucket, and ate anything that couldn't climb out of one. -- (Terry Pratchett, Pyramids)
|
||||
Nature abhors dimensional abnormalities, and seals them neatly away so that they don't upset people. Nature, in fact, abhors a lot of things, including vacuums, ships called the 'Marie Celeste', and the chuck keys for electric drills. -- (Terry Pratchett, Pyramids)
|
||||
'Yes, bugger all that.' said Nanny. 'Let's curse somebody.' -- Even Nanny Ogg gets upset occasionally -- (Terry Pratchett, Wyrd Sisters)
|
||||
On nights such as these the gods, as has already been pointed out, play games other than chess with the fates of mortals and the thrones of kings. It is important to remember that they always cheat, right up to the end... -- (Terry Pratchett, Wyrd Sisters)
|
||||
After you'd known Christine for any length of time, you found yourself fighting a desire to look into her ear to see if you could spot daylight coming the other way. -- (Terry Pratchett, Maskerade)
|
||||
'Remember -- that which does not kill us can only make us stronger.' - 'And that which *does* kill us leaves us *dead*!' -- (Terry Pratchett, Carpe Jugulum)
|
||||
'Let's just say that if complete and utter chaos was lightning, he'd be the sort to stand on a hilltop in a thunderstorm wearing wet copper armour and shouting 'All gods are bastards'.' -- Rincewind discussing Twoflower -- (Terry Pratchett, The Colour of Magic)
|
||||
There was not a lot that could be done to make Morpork a worse place. A direct hit by a meteorite, for example, would count as gentrification. -- (Terry Pratchett, Pyramids)
|
||||
'They say there's dwarf mines under the Ramtops,' she said inconsequentially. 'My, but them little buggers is in for a surprise.' -- Granny reflects on Esk's methods of lighting a fire. -- (Terry Pratchett, Equal Rites)
|
||||
'Right, you bastards, you're... you're geography' -- (Terry Pratchett, Guards! Guards!)
|
||||
'Oh, a very useful philosophical animal, your average tortoise. Outrunning metaphorical arrows, beating hares in races... very handy.' -- (Terry Pratchett, Small Gods)
|
||||
No male had ever touched Agnes before, except perhaps to push her over and steal her sweets. -- (Terry Pratchett, Maskerade)
|
||||
The pre-luncheon drinks were going quite well, Mr Bucket thought. Everyone was making polite conversation and absolutely no one had been killed up to the present moment. -- (Terry Pratchett, Maskerade)
|
||||
For animals, the entire universe has been neatly divided into things to (a) mate with, (b) eat, (c) run away from, and (d) rocks. -- (Terry Pratchett, Equal Rites)
|
||||
In retrospect, Victor was always a little unclear about those next few minutes. That's the way it goes. The moments that change your life are the ones that happen suddenly, like the one where you die. -- (Terry Pratchett, Moving Pictures)
|
||||
It was Carrot who'd suggested to the Patrician that hardened criminals should be given the chance to 'serve the community' by redecorating the homes of the elderly, lending a new terror to old age and, given Ankh-Morpork's crime rate, leading to at least one old lady having her front room wallpapered so many times in six months that now she could only get in sideways. -- (Terry Pratchett, Feet of Clay)
|
||||
It was hard enough to kill a vampire. You could stake them down and turn them into dust and ten years later someone drops a drop of blood in the wrong place and *guess who's back*? They returned more times than raw broccoli. -- (Terry Pratchett, Feet of Clay)
|
||||
No matter what she did with her hair it took about three minutes for it to tangle itself up again, like a garden hosepipe in a shed [Which, no matter how carefully coiled, will always uncoil overnight and tie the lawnmower to the bicycles]. -- (Terry Pratchett, Lords and Ladies)
|
||||
He married that Palliard girl, remember? The one with the air-cooled teeth? -- (Terry Pratchett, Lords and Ladies)
|
||||
And the child had a permanently runny nose and ought to be provided with a handkerchief or, failing that, a cork. -- (Terry Pratchett, Lords and Ladies)
|
||||
It was here that the thaum, hitherto believed to be the smallest possible particle of magic, was succesfully demonstrated to be made up of /resons/ (Lit.: 'Thing-ies') or reality fragments. Currently research indicates that each reson is itself made up of a combination of at least five 'flavours', known as 'up', 'down', 'sideways', 'sex appeal' and 'peppermint'. -- (Terry Pratchett, Lords and Ladies)
|
||||
A heap of discarded garments by the bed suggested that Verence had mastered the art of hanging up clothes as practised by half the population of the world, and that he had equally had difficulty with the complex topological manoeuvres necessary to turn the socks the right way out. -- (Terry Pratchett, Lords and Ladies)
|
||||
Chain-mail isn't much defence against an arrow. It certainly isn't when the arrow is being aimed between your eyes. -- (Terry Pratchett, Lords and Ladies)
|
||||
It's not enough to be able to pick up a sword. You have to know which end to poke into the enemy. -- (Terry Pratchett, Lords and Ladies)
|
||||
The Monks of Cool, whose tiny and exclusive monastery is hidden in a really cool and laid-back valley in the lower Ramtops, have a passing-out test for a novice. He is taken into a room full of all types of clothing and asked: Yo, my son, which of these is the most stylish thing to wear? And the correct answer is: Hey, whatever I select. -- (Terry Pratchett, Lords and Ladies)
|
||||
Greebo's technique was unscientific and wouldn't have stood a chance against any decent swordmanship, but on his side was the fact that it is almost impossible to develop decent swordmanship when you seem to have run into a food mixer that is biting your ear off. -- (Terry Pratchett, Witches Abroad)
|
||||
Gravity is a habit that is hard to shake off. -- (Terry Pratchett, Small Gods)
|
||||
The trouble with being a god is that you've got no one to pray to. -- (Terry Pratchett, Small Gods)
|
||||
There are hardly any excesses of the most crazed psychopath that cannot easily be duplicated by a normal kindly family man who just comes in to work every day and has a job to do. -- (Terry Pratchett, Small Gods)
|
||||
The people who really run organizations are usually found several levels down, where it is still possible to get things done. -- (Terry Pratchett, Small Gods)
|
||||
Guilt was the grease in which the wheels of the authority turned. -- (Terry Pratchett, Small Gods)
|
||||
Most gods find it hard to walk and think at the same time. -- (Terry Pratchett, Small Gods)
|
||||
When the least they could do to you was everything, then the most they could do to you suddenly held no terror. -- (Terry Pratchett, Small Gods)
|
||||
'What's a philosopher ?' said Brutha. 'Someone who's bright enough to find a job with no heavy lifting,' said a voice in his head. -- (Terry Pratchett, Small Gods)
|
||||
'Slave is an Ephebian word. In Om we have no word for slave,' said Vorbis. 'So I understand,' said the Tyrant. 'I imagine that fish have no word for water.' -- (Terry Pratchett, Small Gods)
|
||||
'He says gods like to see an atheist around. Gives them something to aim at.' -- (Terry Pratchett, Small Gods)
|
||||
'You're not one of us.' 'I don't think I'm one of them, either,' said Brutha. 'I'm one of mine.' -- (Terry Pratchett, Small Gods)
|
||||
Simony's eyes gleamed with the gleam of a man who had seen the future and found it covered with armour plating. -- (Terry Pratchett, Small Gods)
|
||||
'All holy piety in public, and all peeled grapes and self-indulgence in private.' -- (Terry Pratchett, Small Gods)
|
||||
When you can flatten entire cities at a whim, a tendency towards quiet reflection and seeing-things-from-the-other-fellow's-point-of-view is seldom necessary. -- (Terry Pratchett, Small Gods)
|
||||
'Take it from me, whenever you see a bunch of buggers puttering around talking about truth and beauty and the best way of attacking Ethics, you can bet your sandals it's all because dozens of other poor buggers are doing all the real work around the place.' -- (Terry Pratchett, Small Gods)
|
||||
'Why do you bother with him? He's had thousands of people killed!' 'Yes, but perhaps he thought that you wanted it.' -- (Terry Pratchett, Small Gods)
|
||||
The figures looked more or less human. And they were engaged in religion. You could tell by the knives (it's not murder if you do it for a god). -- (Terry Pratchett, Small Gods)
|
||||
The trouble was that he was talking in philosophy, but they were listening in gibberish. -- (Terry Pratchett, Small Gods)
|
||||
'He's muffed it,' said Simony. 'he could have done *anything* with them. And he just told them the facts. You can't inspire people with facts. They need a cause. They need a symbol.' -- (Terry Pratchett, Small Gods)
|
||||
'You can't find a hermit to teach you herming, because of course that rather spoils the whole thing.' -- (Terry Pratchett, Small Gods)
|
||||
Om began to feel the acute depression that steals over every realist in the presence of an optimist. -- (Terry Pratchett, Small Gods)
|
||||
'All the other prophets came back with commandments!' 'Where they get them?' 'I ... suppose they made them up.' 'You get them from the same place.' -- (Terry Pratchett, Small Gods)
|
||||
Brutha tried to nod, and thought: I'm on everyone's side. It'd be nice if, just for once, someone was on mine. -- (Terry Pratchett, Small Gods)
|
||||
Probably the last man who knew how it worked had been tortured to death years before. Or as soon as it was installed. Killing the creator was a traditional method of patent protection. -- (Terry Pratchett, Small Gods)
|
||||
Give anyone a lever long enough and they can change the world. It's unreliable levers that are the problem. -- (Terry Pratchett, Small Gods)
|
||||
'Now we've got a truth to die for!' 'No. Men should die for lies. But the truth is too precious to die for.' -- (Terry Pratchett, Small Gods)
|
||||
YOU HAVE PERHAPS HEARD THE PHRASE THAT HELL IS OTHER PEOPLE? 'Yes. Yes, of course.' Death nodded. IN TIME, he said, YOU WILL LEARN THAT IT IS WRONG. -- (Terry Pratchett, Small Gods)
|
||||
'I used to think that *I* was stupid, and then I met philosophers.' -- (Terry Pratchett, Small Gods)
|
||||
'I like the idea of democracy. You have to have someone everyone distrusts,' said Brutha. 'That way, everyone's happy.' -- (Terry Pratchett, Small Gods)
|
||||
'The significant owl hoots in the night.' -- (Terry Pratchett, Guards! Guards!)
|
||||
Mrs Evadne Cake was a medium, verging on small. -- (Terry Pratchett, Reaper Man)
|
||||
Nanny could get a statue to cry on her shoulder and say what it really thought about pigeons. -- (Terry Pratchett, Maskerade)
|
||||
Greebo could, in fact, commit sexual harrassment simply by sitting very quietly in the next room. -- (Terry Pratchett, Maskerade)
|
||||
It is the fate of all banisters worth sliding down that there is something nasty waiting at the far end. -- (Terry Pratchett, Maskerade)
|
||||
'All bastards are bastards, but some bastards is *bastards*.' -- (Terry Pratchett, The Last Continent)
|
||||
They say the heat and the flies here can drive a man insane. But you don't have to believe that, and nor does that bright mauve elephant that just cycled past. -- (Terry Pratchett, The Last Continent)
|
||||
Genua had once controlled the river mouth and taxed its traffic in a way that couldn't be called piracy because it was done by the city government. -- Local-body politics explained -- (Terry Pratchett, Witches Abroad)
|
||||
'Baths is unhygienic,' Granny declared. 'You know I've never agreed with baths. Sittin' around in your own dirt like that.' -- Taking personal hygiene to new limits -- (Terry Pratchett, Witches Abroad)
|
||||
'When You're Up to Your Ass in Alligators, Today Is the First Day of the Rest of Your Life.' -- Management slogan, Ridcully-style -- (Terry Pratchett, The Last Continent)
|
||||
Rincewind had always been happy to think of himself as a racist. The One Hundred Meters, the Mile, the Marathon -- he'd run them all. -- (Terry Pratchett, The Last Continent)
|
||||
You did something because it had always been done, and the explanation was 'but we've always done it this way.' A million dead people can't have been wrong, can they? -- (Terry Pratchett, The Fifth Elephant)
|
||||
There was no such thing as a dwarfish female pronoun or, once the children were on solids, any such thing as women's work. -- (Terry Pratchett, The Fifth Elephant)
|
||||
He wasn't strictly aware of it, but he treated even geography as if he was investigating a crime (did you see who carved out the valley? Would you recognize that glacier if you saw it again?) -- (Terry Pratchett, The Fifth Elephant)
|
||||
A marriage is always made up of two people who are prepared to swear that only the other one snores. -- (Terry Pratchett, The Fifth Elephant)
|
||||
As castles went, this one looked as though it could be taken by a small squad of not very efficient soldiers. For defence, putting a blanket over your head might be marginally safer. -- (Terry Pratchett, The Fifth Elephant)
|
||||
She moved like someone who had grown used to her body and, in general, looked like what Vimes had heard described as 'a woman of a certain age.' He'd never been quite certain what age that was. -- (Terry Pratchett, The Fifth Elephant)
|
64
modules/quoteserv/help.c
Normal file
64
modules/quoteserv/help.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
/* NeoStats - IRC Statistical Services
|
||||
** Copyright (c) 1999-2005 Adam Rutter, Justin Hammond, Mark Hetherington
|
||||
** http://www.neostats.net/
|
||||
**
|
||||
** 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
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id$
|
||||
*/
|
||||
|
||||
#include "neostats.h"
|
||||
|
||||
const char *qs_about[] =
|
||||
{
|
||||
"\2TextServ\2 is a text messaging service",
|
||||
NULL
|
||||
};
|
||||
|
||||
const char qs_help_add_oneline[] ="Add a database";
|
||||
const char qs_help_del_oneline[] ="Delete a database";
|
||||
const char qs_help_list_oneline[] ="List databases";
|
||||
const char qs_help_quote_oneline[] ="Fetch quote";
|
||||
|
||||
const char *qs_help_add[] = {
|
||||
"Syntax: \2ADD <database>\2",
|
||||
"",
|
||||
"Register a database with quoteserv.",
|
||||
"<database> is the name of the database to load",
|
||||
NULL
|
||||
};
|
||||
|
||||
const char *qs_help_del[] = {
|
||||
"Syntax: \2DEL <database>\2",
|
||||
"",
|
||||
"Delete a database.",
|
||||
NULL
|
||||
};
|
||||
|
||||
const char *qs_help_list[] = {
|
||||
"Syntax: \2LIST\2",
|
||||
"",
|
||||
"Lists loaded databases.",
|
||||
NULL
|
||||
};
|
||||
|
||||
const char *qs_help_quote[] = {
|
||||
"Syntax: \2QUOTE\2",
|
||||
"",
|
||||
"Get quote.",
|
||||
NULL
|
||||
};
|
357
modules/quoteserv/main.c
Normal file
357
modules/quoteserv/main.c
Normal file
|
@ -0,0 +1,357 @@
|
|||
/* NeoStats - IRC Statistical Services
|
||||
** Copyright (c) 1999-2005 Adam Rutter, Justin Hammond, Mark Hetherington
|
||||
** http://www.neostats.net/
|
||||
**
|
||||
** 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
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id$
|
||||
*/
|
||||
|
||||
#include "neostats.h"
|
||||
#include "quoteserv.h"
|
||||
|
||||
typedef struct database {
|
||||
char name[MAXNICK];
|
||||
char **stringlist;
|
||||
int stringcount;
|
||||
}database;
|
||||
|
||||
/** Bot command function prototypes */
|
||||
static int qs_cmd_add( CmdParams *cmdparams );
|
||||
static int qs_cmd_list( CmdParams *cmdparams );
|
||||
static int qs_cmd_del( CmdParams *cmdparams );
|
||||
static int qs_cmd_quote( CmdParams* cmdparams );
|
||||
|
||||
/** hash to store database and bot info */
|
||||
static hash_t *qshash;
|
||||
|
||||
/** Bot pointer */
|
||||
static Bot *qs_bot;
|
||||
|
||||
/** Copyright info */
|
||||
const char *qs_copyright[] = {
|
||||
"Copyright (c) 1999-2005, NeoStats",
|
||||
"http://www.neostats.net/",
|
||||
NULL
|
||||
};
|
||||
|
||||
/** Module info */
|
||||
ModuleInfo module_info = {
|
||||
"QuoteServ",
|
||||
"Quote service",
|
||||
qs_copyright,
|
||||
qs_about,
|
||||
NEOSTATS_VERSION,
|
||||
CORE_MODULE_VERSION,
|
||||
__DATE__,
|
||||
__TIME__,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
/** Bot comand table */
|
||||
static bot_cmd qs_commands[]=
|
||||
{
|
||||
{"ADD", qs_cmd_add, 1, NS_ULEVEL_ADMIN, qs_help_add, qs_help_add_oneline },
|
||||
{"DEL", qs_cmd_del, 1, NS_ULEVEL_ADMIN, qs_help_del, qs_help_del_oneline },
|
||||
{"LIST", qs_cmd_list, 0, NS_ULEVEL_ADMIN, qs_help_list, qs_help_list_oneline },
|
||||
{"QUOTE", qs_cmd_quote, 1, NS_ULEVEL_ADMIN, qs_help_quote, qs_help_quote_oneline },
|
||||
{NULL, NULL, 0, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
/** Bot setting table */
|
||||
static bot_setting qs_settings[]=
|
||||
{
|
||||
{NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL },
|
||||
};
|
||||
|
||||
/** TextServ BotInfo */
|
||||
static BotInfo qs_botinfo =
|
||||
{
|
||||
"QuoteServ",
|
||||
"QuoteServ1",
|
||||
"TS",
|
||||
BOT_COMMON_HOST,
|
||||
"Quote service",
|
||||
BOT_FLAG_SERVICEBOT|BOT_FLAG_DEAF,
|
||||
qs_commands,
|
||||
NULL,
|
||||
};
|
||||
|
||||
/** @brief qs_read_database
|
||||
*
|
||||
* Read a database file
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return NS_SUCCESS if succeeds, else NS_FAILURE
|
||||
*/
|
||||
|
||||
static int qs_read_database( database *db )
|
||||
{
|
||||
static char filename[MAXPATH];
|
||||
static char buf[BUFSIZE*4];
|
||||
FILE *fp;
|
||||
int commandreadcount = 0;
|
||||
char *ptr;
|
||||
|
||||
strlcpy( filename, "data/", MAXPATH );
|
||||
strlcat( filename, db->name, MAXPATH );
|
||||
fp = os_fopen( filename, "rt" );
|
||||
if( !fp )
|
||||
return NS_SUCCESS;
|
||||
while( os_fgets( buf, BUFSIZE*4, fp ) != NULL )
|
||||
{
|
||||
/* comment char */
|
||||
if( buf[0] == '#' )
|
||||
continue;
|
||||
dlog( DEBUG1, "read %s", buf );
|
||||
ptr = ns_malloc( strlen( buf ) );
|
||||
strcpy( ptr, buf );
|
||||
AddStringToList( &db->stringlist, ptr, &db->stringcount );
|
||||
}
|
||||
os_fclose( fp );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief load_database
|
||||
*
|
||||
* load database
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
|
||||
static int load_database( void *data, int size )
|
||||
{
|
||||
database *db;
|
||||
|
||||
db = ns_calloc( sizeof( database ) );
|
||||
os_memcpy( &db->name, data, MAXNICK );
|
||||
hnode_create_insert( qshash, db, db->name );
|
||||
qs_read_database( db );
|
||||
return NS_FALSE;
|
||||
}
|
||||
|
||||
/** @brief ModInit
|
||||
*
|
||||
* Init handler
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return NS_SUCCESS if suceeds else NS_FAILURE
|
||||
*/
|
||||
|
||||
int ModInit( void )
|
||||
{
|
||||
qshash = hash_create( -1, 0, 0 );
|
||||
if( !qshash ) {
|
||||
nlog( LOG_CRITICAL, "Unable to create database hash" );
|
||||
return -1;
|
||||
}
|
||||
DBAFetchRows( "databases", load_database );
|
||||
ModuleConfig( qs_settings );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief ModSynch
|
||||
*
|
||||
* Startup handler
|
||||
* Introduce bot onto network
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return NS_SUCCESS if suceeds else NS_FAILURE
|
||||
*/
|
||||
|
||||
int ModSynch( void )
|
||||
{
|
||||
qs_bot = AddBot( &qs_botinfo );
|
||||
if( !qs_bot )
|
||||
{
|
||||
return NS_FAILURE;
|
||||
}
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief ModFini
|
||||
*
|
||||
* Fini handler
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return NS_SUCCESS if suceeds else NS_FAILURE
|
||||
*/
|
||||
|
||||
int ModFini( void )
|
||||
{
|
||||
database *db;
|
||||
hnode_t *hn;
|
||||
hscan_t hs;
|
||||
|
||||
SET_SEGV_LOCATION();
|
||||
hash_scan_begin( &hs, qshash );
|
||||
while( ( hn = hash_scan_next( &hs ) ) != NULL ) {
|
||||
db =( ( database * )hnode_get( hn ) );
|
||||
hash_delete( qshash, hn );
|
||||
hnode_destroy( hn );
|
||||
ns_free( db );
|
||||
}
|
||||
hash_destroy( qshash );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief qs_cmd_add
|
||||
*
|
||||
* Command handler for ADD
|
||||
*
|
||||
* @param cmdparams
|
||||
* cmdparams->av[0] = database
|
||||
* cmdparams->av[1] = nick
|
||||
* cmdparams->av[2] = optional channel
|
||||
*
|
||||
* @return NS_SUCCESS if succeeds, else NS_FAILURE
|
||||
*/
|
||||
|
||||
static int qs_cmd_add( CmdParams *cmdparams )
|
||||
{
|
||||
static char filename[MAXPATH];
|
||||
FILE *fp;
|
||||
database *db;
|
||||
|
||||
SET_SEGV_LOCATION();
|
||||
if( hash_lookup( qshash, cmdparams->av[0] ) != NULL )
|
||||
{
|
||||
irc_prefmsg( qs_bot, cmdparams->source,
|
||||
"%s already exists in the database list", cmdparams->av[0] );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
strlcpy( filename, "data/", MAXPATH );
|
||||
strlcat( filename, cmdparams->av[0], MAXPATH );
|
||||
fp = os_fopen( filename, "rt" );
|
||||
if( !fp )
|
||||
{
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "%s not found", cmdparams->av[0] );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
os_fclose( fp );
|
||||
db = ns_calloc( sizeof( database ) );
|
||||
strlcpy( db->name, cmdparams->av[0], MAXNICK );
|
||||
hnode_create_insert( qshash, db, db->name );
|
||||
qs_read_database( db );
|
||||
DBAStore( "databases", db->name,( void * )db->name, MAXNICK );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief qs_cmd_list
|
||||
*
|
||||
* Command handler for LIST
|
||||
*
|
||||
* @param cmdparams
|
||||
*
|
||||
* @return NS_SUCCESS if succeeds, else NS_FAILURE
|
||||
*/
|
||||
|
||||
static int qs_cmd_list( CmdParams *cmdparams )
|
||||
{
|
||||
database *db;
|
||||
hnode_t *hn;
|
||||
hscan_t hs;
|
||||
int i = 1;
|
||||
|
||||
SET_SEGV_LOCATION();
|
||||
if( hash_count( qshash ) == 0 ) {
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "No databases are defined." );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
hash_scan_begin( &hs, qshash );
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "Databases" );
|
||||
while( ( hn = hash_scan_next( &hs ) ) != NULL ) {
|
||||
db =( ( database * )hnode_get( hn ) );
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "%d - %s", i, db->name );
|
||||
i++;
|
||||
}
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "End of list." );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief qs_cmd_del
|
||||
*
|
||||
* Command handler for DEL
|
||||
* cmdparams->av[0] = database to delete
|
||||
*
|
||||
* @param cmdparams
|
||||
*
|
||||
* @return NS_SUCCESS if succeeds, else NS_FAILURE
|
||||
*/
|
||||
|
||||
static int qs_cmd_del( CmdParams *cmdparams )
|
||||
{
|
||||
database *db;
|
||||
hnode_t *hn;
|
||||
hscan_t hs;
|
||||
|
||||
SET_SEGV_LOCATION();
|
||||
hash_scan_begin( &hs, qshash );
|
||||
while( ( hn = hash_scan_next( &hs ) ) != NULL ) {
|
||||
db =( database * )hnode_get( hn );
|
||||
if( ircstrcasecmp( db->name, cmdparams->av[0] ) == 0 ) {
|
||||
hash_scan_delete( qshash, hn );
|
||||
irc_prefmsg( qs_bot, cmdparams->source,
|
||||
"Deleted %s from the database list", cmdparams->av[0] );
|
||||
CommandReport( qs_bot, "%s deleted %s from the database list",
|
||||
cmdparams->source->name, cmdparams->av[0] );
|
||||
nlog( LOG_NOTICE, "%s deleted %s from the database list",
|
||||
cmdparams->source->name, cmdparams->av[0] );
|
||||
hnode_destroy( hn );
|
||||
DBADelete( "databases", db->name );
|
||||
ns_free( db );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
}
|
||||
irc_prefmsg( qs_bot, cmdparams->source, "No entry for %s", cmdparams->av[0] );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
|
||||
/** @brief qs_cmd_quote
|
||||
*
|
||||
* qs_cmd_quote
|
||||
* cmdparams->av[0] = target nick
|
||||
* cmdparams->av[1 - cmdparams->ac] = message
|
||||
*
|
||||
* @cmdparams pointer to commands param struct
|
||||
*
|
||||
* @return NS_SUCCESS if suceeds else NS_FAILURE
|
||||
*/
|
||||
|
||||
static int qs_cmd_quote( CmdParams* cmdparams )
|
||||
{
|
||||
database *db;
|
||||
int randno;
|
||||
|
||||
SET_SEGV_LOCATION();
|
||||
db = (database *)hnode_find (qshash, cmdparams->av[0]);
|
||||
if (!db) {
|
||||
irc_prefmsg( qs_bot, cmdparams->source,
|
||||
"%s not available", cmdparams->av[0] );
|
||||
return NS_SUCCESS;
|
||||
}
|
||||
randno = hrand( db->stringcount, 1 );
|
||||
irc_prefmsg( qs_bot, cmdparams->source, db->stringlist[randno] );
|
||||
return NS_SUCCESS;
|
||||
}
|
34
modules/quoteserv/quoteserv.h
Executable file
34
modules/quoteserv/quoteserv.h
Executable file
|
@ -0,0 +1,34 @@
|
|||
/* NeoStats - IRC Statistical Services
|
||||
** Copyright (c) 1999-2005 Adam Rutter, Justin Hammond, Mark Hetherington
|
||||
** http://www.neostats.net/
|
||||
**
|
||||
** 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
|
||||
**
|
||||
** NeoStats CVS Identification
|
||||
** $Id$
|
||||
*/
|
||||
|
||||
extern const char *qs_about[];
|
||||
|
||||
extern const char qs_help_add_oneline[];
|
||||
extern const char qs_help_del_oneline[];
|
||||
extern const char qs_help_list_oneline[];
|
||||
extern const char qs_help_quote_oneline[];
|
||||
|
||||
extern const char *qs_help_add[];
|
||||
extern const char *qs_help_del[];
|
||||
extern const char *qs_help_list[];
|
||||
extern const char *qs_help_quote[];
|
146
modules/quoteserv/quoteserv.vcproj
Executable file
146
modules/quoteserv/quoteserv.vcproj
Executable file
|
@ -0,0 +1,146 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="quoteserv"
|
||||
ProjectGUID="{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\include;..\..\lib\curl;..\..\lib\pcre"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;quoteserv_EXPORTS"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="neostats.lib"
|
||||
OutputFile="../quoteservd.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\src\Debug"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/quoteserv.pdb"
|
||||
SubSystem="2"
|
||||
ImportLibrary="$(OutDir)/quoteserv.lib"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\include;..\..\lib\curl;..\..\lib\pcre"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;quoteserv_EXPORTS"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="neostats.lib"
|
||||
OutputFile="../quoteserv.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\src\Release"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
ImportLibrary="$(OutDir)/quoteserv.lib"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\help.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\main.c">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\quoteserv.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
|
@ -111,6 +111,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dccpartyline", "modules\dcc
|
|||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "quoteserv", "modules\quoteserv\quoteserv.vcproj", "{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
|
@ -217,6 +221,10 @@ Global
|
|||
{FE700C44-B03E-4C62-B2BA-0F3392AD6A46}.Debug.Build.0 = Debug|Win32
|
||||
{FE700C44-B03E-4C62-B2BA-0F3392AD6A46}.Release.ActiveCfg = Release|Win32
|
||||
{FE700C44-B03E-4C62-B2BA-0F3392AD6A46}.Release.Build.0 = Release|Win32
|
||||
{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}.Debug.ActiveCfg = Debug|Win32
|
||||
{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}.Debug.Build.0 = Debug|Win32
|
||||
{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}.Release.ActiveCfg = Release|Win32
|
||||
{5E3A1DF8-46AF-485A-BAB2-3DC78C922F8F}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
|
|
Reference in a new issue