Browse Source

Import upstream version 0.12.1

Alexander Barton 13 years ago
parent
commit
85ea944066
100 changed files with 6865 additions and 2282 deletions
  1. 9 3
      AUTHORS
  2. 97 5
      ChangeLog
  3. 4 7
      INSTALL
  4. 7 5
      Makefile.am
  5. 7 5
      Makefile.in
  6. 43 2
      NEWS
  7. 7 8
      README
  8. 141 11
      configure
  9. 20 4
      configure.in
  10. 33 9
      contrib/Debian/changelog
  11. 1 1
      contrib/Debian/ngircd.init
  12. 12 5
      contrib/Debian/ngircd.postinst
  13. 33 2
      contrib/MacOSX/Makefile.am
  14. 220 34
      contrib/MacOSX/Makefile.in
  15. 92 0
      contrib/MacOSX/config.h
  16. 0 0
      contrib/MacOSX/cvs-version.h
  17. 19 0
      contrib/MacOSX/de.barton.ngircd.plist.tmpl
  18. 17 0
      contrib/MacOSX/ngIRCd.xcodeproj/Makefile.am
  19. 308 0
      contrib/MacOSX/ngIRCd.xcodeproj/Makefile.in
  20. 697 0
      contrib/MacOSX/ngIRCd.xcodeproj/project.pbxproj
  21. 1 1
      contrib/ngircd.spec
  22. 0 56
      doc/CVS.txt
  23. 1 10
      doc/FAQ.txt
  24. 45 0
      doc/GIT.txt
  25. 3 5
      doc/Makefile.am
  26. 3 5
      doc/Makefile.in
  27. 1 1
      doc/Platforms.txt
  28. 49 3
      doc/Protocol.txt
  29. 58 0
      doc/SSL.txt
  30. 1 1
      doc/Zeroconf.txt
  31. 37 8
      doc/sample-ngircd.conf
  32. 1 1
      doc/src/Makefile.am
  33. 1 1
      doc/src/Makefile.in
  34. 15 2
      man/Makefile.am
  35. 14 2
      man/Makefile.in
  36. 8 7
      man/ngircd.8
  37. 69 27
      man/ngircd.conf.5
  38. 2 2
      src/Makefile.am
  39. 2 2
      src/Makefile.in
  40. 9 0
      src/config.h.in
  41. 14 0
      src/ipaddr/Makefile.am
  42. 414 0
      src/ipaddr/Makefile.in
  43. 36 0
      src/ipaddr/ansi2knr.1
  44. 739 0
      src/ipaddr/ansi2knr.c
  45. 167 0
      src/ipaddr/ng_ipaddr.c
  46. 117 0
      src/ipaddr/ng_ipaddr.h
  47. 7 24
      src/ngircd/Makefile.am
  48. 14 28
      src/ngircd/Makefile.in
  49. 4 4
      src/ngircd/array.c
  50. 81 40
      src/ngircd/channel.c
  51. 5 4
      src/ngircd/channel.h
  52. 9 9
      src/ngircd/client.c
  53. 1 1
      src/ngircd/client.h
  54. 217 36
      src/ngircd/conf.c
  55. 22 4
      src/ngircd/conf.h
  56. 13 2
      src/ngircd/conn-func.c
  57. 2 1
      src/ngircd/conn-func.h
  58. 1 1
      src/ngircd/conn-zip.c
  59. 240 158
      src/ngircd/conn.c
  60. 6 3
      src/ngircd/conn.h
  61. 6 5
      src/ngircd/defines.h
  62. 1 1
      src/ngircd/hash.c
  63. 1 1
      src/ngircd/hash.h
  64. 486 513
      src/ngircd/io.c
  65. 1 1
      src/ngircd/io.h
  66. 206 179
      src/ngircd/irc-channel.c
  67. 389 165
      src/ngircd/irc-info.c
  68. 5 2
      src/ngircd/irc-info.h
  69. 39 48
      src/ngircd/irc-login.c
  70. 289 343
      src/ngircd/irc-mode.c
  71. 1 1
      src/ngircd/irc-op.c
  72. 63 5
      src/ngircd/irc-oper.c
  73. 2 1
      src/ngircd/irc-oper.h
  74. 25 185
      src/ngircd/irc-server.c
  75. 3 1
      src/ngircd/irc-server.h
  76. 1 1
      src/ngircd/irc-write.c
  77. 10 2
      src/ngircd/irc.c
  78. 2 4
      src/ngircd/lists.c
  79. 1 3
      src/ngircd/lists.h
  80. 1 1
      src/ngircd/log.c
  81. 1 1
      src/ngircd/log.h
  82. 1 1
      src/ngircd/match.c
  83. 1 1
      src/ngircd/match.h
  84. 7 2
      src/ngircd/messages.h
  85. 49 38
      src/ngircd/ngircd.c
  86. 334 0
      src/ngircd/numeric.c
  87. 24 0
      src/ngircd/numeric.h
  88. 136 87
      src/ngircd/parse.c
  89. 3 4
      src/ngircd/parse.h
  90. 302 122
      src/ngircd/resolve.c
  91. 4 2
      src/ngircd/resolve.h
  92. 16 3
      src/testsuite/Makefile.am
  93. 16 3
      src/testsuite/Makefile.in
  94. 31 1
      src/testsuite/channel-test.e
  95. 1 1
      src/testsuite/getpid.sh
  96. 44 0
      src/testsuite/misc-test.e
  97. 3 3
      src/testsuite/mode-test.e
  98. 2 1
      src/testsuite/ngircd-test.conf
  99. 162 0
      src/testsuite/who-test.e
  100. 0 0
      src/tool/tool.c

+ 9 - 3
AUTHORS

@@ -1,7 +1,7 @@
 
                      ngIRCd - Next Generation IRC Server
 
-                        (c)2001-2005 Alexander Barton,
+                        (c)2001-2007 Alexander Barton,
                     alex@barton.de, http://www.barton.de/
 
                ngIRCd is free software and published under the
@@ -10,9 +10,16 @@
                        -- AUTHORS and CONTRIBUTORS --
 
 
+Note: If you have critics, patches or something else, please feel free to
+post a mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
+<http://ngircd.barton.de/#ml> for details). Don't mail the contributors
+directly, if possible!
+
+
 Main Authors
 ~~~~~~~~~~~~
 Alexander Barton, <alex@barton.de> (alex)
+Florian Westphal, <westphal@foo.fh-furtwangen.de> (fw)
 
 
 Contributors
@@ -21,7 +28,6 @@ Goetz Hoffart, <goetz@hoffart.de> (goetz)
 Ilja Osthoff, <i.osthoff@gmx.net> (ilja)
 Benjamin Pineau, <ben@zouh.org>
 Sean Reifschneider, <jafo-rpms@tummy.com>
-Florian Westphal, <westphal@foo.fh-furtwangen.de> (fw)
 
 
 Code snippets
@@ -32,4 +38,4 @@ Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
 
 
 -- 
-$Id: AUTHORS,v 1.11 2005/03/19 14:24:52 alex Exp $
+$Id: AUTHORS,v 1.13 2007/10/04 15:18:48 alex Exp $

+ 97 - 5
ChangeLog

@@ -1,7 +1,7 @@
 
                      ngIRCd - Next Generation IRC Server
 
-                        (c)2001-2007 Alexander Barton,
+                        (c)2001-2008 Alexander Barton,
                     alex@barton.de, http://www.barton.de/
 
                ngIRCd is free software and published under the
@@ -10,7 +10,102 @@
                                -- ChangeLog --
 
 
-ngIRCd 0.10.3 (2007-07-31)
+ngIRCd 0.12.1 (2008-07-09)
+
+  - Allow mixed line terminations (CR+LF/CR/LF) in non-RFC-compliant mode
+  - Don't allow stray \r or \n in command parameters
+  - --configtest: return non-zero exit code if there are errors
+  - Update ngIRCd manual pages
+  - Add option aliases -V (for --version) and -h (for --help).
+  - Fix 'no-ipv6' compile error.
+  - Make Listen parameter a comma-seperated list of addresses. This also
+    obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
+    is treated as Listen="::,0.0.0.0".
+    Note: ListenIPv4 and ListenIPv6 options are still recognized,
+    but ngircd will print a warning if they are used in the config file.
+
+ngIRCd 0.12.0 (2008-05-13)
+
+  - Fix Bug: 85: "WHO #SecretChannel" that user is not a member of now returns
+    proper RPL_ENDOFWHO_MSG instead of nothing. (Ali Shemiran)
+  - Fix complie on FreeBSD 5.4 and AIX.
+  - If bind() fails, also print ip address and not just the port number.
+
+  ngIRCd 0.12.0-pre2 (2008-04-29)
+  - IPv6: Add config options to disabe ipv4/ipv6 support.
+  - Don't include doc/CVS.txt in distribution archive, use doc/GIT.txt now!
+  - Documentation: get rid of some more references to CVS, switch to GIT.
+  - Get rid of cvs-version.* and CVSDATE definition.
+  - Report ERR_NOTONCHANNEL when trying to part a channel one is not member of.
+  - Testsuite: remove erroneous ConfUID setting in config file.
+
+  ngIRCd 0.12.0-pre1 (2008-04-20)
+  - Include Mac OS X Xcode project in distribution archives.
+  - Do not exit on SIGHUP or /REHASH if the config file cannot opened.
+  - Add IPv6 support.
+  - Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
+  - Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
+    enhanced test suite to check these commands. (Dana Dahlstrom)
+  - RPL_WHOREPLY messages generated by IRC_WHO didn't include flags (*,@,+).
+    (Dana Dahlstrom)
+  - IRC_WHO now supports search patterns and will test this against user
+    nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1.
+    (reported by Dana Dahlstrom)
+  - Add test cases for "WHO" command. (Dana Dahlstrom)
+  - Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
+    as if the user had sent PART commands for all channels the user is a
+    member of. (Dana Dahlstrom)
+  - Allow NOTICEs to be sent to a channel. (Fabian Schlager)
+
+ngIRCd 0.11.1 (2008-02-26)
+
+  - Fix sending of JOIN commands between servers when remote server appended
+    mode flags. (Rolf Eike Beer) [from HEAD]
+  - Send "G" instead of "H" flag in WHO replies. (reported by Dana Dahlstrom)
+  - Under some circumstances ngIRCd issued channel MODE message with a
+    trailing space. (Dana Dahlstrom) [from HEAD]
+
+ngIRCd 0.11.0 (2008-01-15)
+
+  ngIRCd 0.11.0-pre2 (2008-01-07)
+  - SECURITY: IRC_PART could reference invalid memory, causing
+    ngircd to crash [from HEAD].
+  
+  ngIRCd 0.11.0-pre1 (2008-01-02)
+  - Use dotted-decimal IP address if hostname is >= 64.
+  - Add support for /STAT u (server uptime) command.
+  - New [Server] configuration Option "Bind" allows to specify
+    the source ip adress to use when connecting to remote server.
+  - New configuration option "MaxNickLength" to specify the allowed maximum
+    length of user nick names. Note: must be unique in an IRC network!
+  - Enhanced the IRC+ protocol to support an enhanced "server handshake" and
+    enable server to recognice numeric 005 (ISUPPORT) and 376 (ENDOFMOTD).
+    See doc/Protocol.txt for details.
+  - Re-added doc/SSL.txt to distribution -- got lost somewhere!?
+  - Fixes the wrong logging output when nested servers are introduced
+    to the network as well as the wrong output of the LINKS command.
+  - Update Mac OS X Xcode project file for Xcode 3.
+  - Adjust test suite to be usable on HP/UX 11.11 :-)
+  - Fix code to compile using K&R C compiler and ansi2kr again.
+  - New config option NoDNS: Disables DNS lookups when clients connect.
+  - Fixed propagation of channel mode 'P' on server links.
+  - Numeric 317: implemented "signon time" (displayed in WHOIS result).
+  - Fixed code that prevented GCC 2.95 to compile ngIRCd.
+  - Adjust path names in manual pages according to "./configure" settings.
+  - Added new server configuration option "Passive" for "Server" blocks to
+    disable automatic outgoing connections (similar to -p option to ngircd,
+    but only for the specified server). (Tassilo Schweyer)
+  - Don't connect to a server if a connection to another server within the
+    same group is already in progress.
+  - Added support for the WALLOPS command. Usage is restricted to IRC
+    operators.
+
+ngIRCd 0.10.4 (2008-01-07)
+
+  - SECURITY: IRC_PART could reference invalid memory, causing
+    ngircd to crash [from HEAD].
+  
+ngIRCd 0.10.3 (2007-08-01)
 
   - SECURITY: Fixed a severe bug in handling JOIN commands, which could
     cause the server to crash. Thanks to Sebastian Vesper, <net@veoson.net>.
@@ -691,7 +786,3 @@ ngIRCd 0.0.2, 06.01.2002
 ngIRCd 0.0.1, 31.12.2001
 
   - erste oeffentliche Version von ngIRCd als "public preview" :-)
-
-
-$Id: ChangeLog,v 1.302.2.19 2007/07/31 19:33:51 alex Exp $

+ 4 - 7
INSTALL

@@ -1,7 +1,7 @@
 
                      ngIRCd - Next Generation IRC Server
 
-                      (c)2001-2006 by Alexander Barton,
+                        (c)2001-2007 Alexander Barton,
                     alex@barton.de, http://www.barton.de/
 
                ngIRCd is free software and published under the
@@ -51,9 +51,9 @@ on modern UNIX-like systems that are supported by GNU autoconf and GNU
 automake ("configure") should be no problem.
 
 The normal installation procedure after getting (and expanding) the source
-files (using a distribution archive or CVS) is as following:
+files (using a distribution archive or GIT) is as following:
 
-  1) ./autogen.sh	[only necessary when using CVS]
+  1) ./autogen.sh	[only necessary when using GIT]
   2) ./configure
   3) make
   4) make install
@@ -77,7 +77,7 @@ doc/ directory: sample-ngircd.conf.
 
 The first step, autogen.sh, is only necessary if the configure-script isn't
 already generated. This never happens in official ("stable") releases in
-tar.gz-archives, but when using CVS.
+tar.gz-archives, but when using GIT.
 
 This step is therefore only interesting for developers.
 
@@ -244,7 +244,3 @@ These parameters could be passed to the ngIRCd:
 Use "--help" to see a short help text describing all available parameters
 the server understands, with "--version" the ngIRCd shows its version
 number. In both cases the server exits after the output.
-
-
-$Id: INSTALL,v 1.23.2.2 2007/04/03 22:08:50 fw Exp $

+ 7 - 5
Makefile.am

@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
+# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
 #
 # 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
@@ -8,8 +8,6 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: Makefile.am,v 1.17 2005/07/22 21:01:52 alex Exp $
-#
 
 AUTOMAKE_OPTIONS = gnu
 
@@ -24,6 +22,9 @@ maintainer-clean-local:
 	rm -f mkinstalldirs missing depcomp install-sh
 	rm -f config.log debian
 
+testsuite:
+	make -C src/testsuite check
+
 lint:
 	make -C src/ngircd lint
 
@@ -31,9 +32,10 @@ srcdoc:
 	make -C doc srcdoc
 
 xcode:
-	@xcodebuild -project contrib/MacOSX/ngIRCd.xcode -list >/dev/null 2>&1 \
+	@xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \
+	 >/dev/null 2>&1 \
 	 || ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 )
-	xcodebuild -project contrib/MacOSX/ngIRCd.xcode -alltargets \
+	xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
 	 -buildstyle Development
 
 rpm: distcheck

+ 7 - 5
Makefile.in

@@ -16,7 +16,7 @@
 
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
+# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
 #
 # 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
@@ -24,8 +24,6 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: Makefile.am,v 1.17 2005/07/22 21:01:52 alex Exp $
-#
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -590,6 +588,9 @@ maintainer-clean-local:
 	rm -f mkinstalldirs missing depcomp install-sh
 	rm -f config.log debian
 
+testsuite:
+	make -C src/testsuite check
+
 lint:
 	make -C src/ngircd lint
 
@@ -597,9 +598,10 @@ srcdoc:
 	make -C doc srcdoc
 
 xcode:
-	@xcodebuild -project contrib/MacOSX/ngIRCd.xcode -list >/dev/null 2>&1 \
+	@xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \
+	 >/dev/null 2>&1 \
 	 || ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 )
-	xcodebuild -project contrib/MacOSX/ngIRCd.xcode -alltargets \
+	xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
 	 -buildstyle Development
 
 rpm: distcheck

+ 43 - 2
NEWS

@@ -1,7 +1,7 @@
 
                      ngIRCd - Next Generation IRC Server
 
-                        (c)2001-2007 Alexander Barton,
+                        (c)2001-2008 Alexander Barton,
                     alex@barton.de, http://www.barton.de/
 
                ngIRCd is free software and published under the
@@ -10,6 +10,47 @@
                                   -- NEWS --
 
 
+ngIRCd 0.12.1 (2008-07-09)
+
+  - Add option aliases -V (for --version) and -h (for --help).
+  - Make Listen parameter a comma-seperated list of addresses. This also
+    obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
+    is treated as Listen="::,0.0.0.0".
+    Note: ListenIPv4 and ListenIPv6 options are still recognized,
+    but ngircd will print a warning if they are used in the config file.
+
+ngIRCd 0.12.0 (2008-05-13)
+
+  ngIRCd 0.12.0-pre2 (2008-04-29)
+  - IPv6: Add config options to disabe ipv4/ipv6 support.
+
+  ngIRCd 0.12.0-pre1 (2008-04-20)
+  - Add IPv6 support.
+  - Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
+  - Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
+    enhanced test suite to check these commands. (Dana Dahlstrom)
+  - IRC_WHO now supports search patterns and will test this against user
+    nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1.
+    (reported by Dana Dahlstrom)
+  - Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
+    as if the user had sent PART commands for all channels the user is a
+    member of. (Dana Dahlstrom)
+  - Allow NOTICEs to be sent to a channel. (Fabian Schlager)
+
+ngIRCd 0.11.0 (2008-01-15)
+
+  - Add support for /STAT u (server uptime) command.
+  - New [Server] configuration Option "Bind" allows to specify
+    the source ip adress to use when connecting to remote server.
+  - New configuration option "MaxNickLength" to specify the allowed maximum
+    length of user nick names. Note: must be unique in an IRC network!
+  - Numeric 317: implemented "signon time" (displayed in WHOIS result).
+  - Added new server configuration option "Passive" for "Server" blocks to
+    disable automatic outgoing connections (similar to -p option to ngircd,
+    but only for the specified server). (Tassilo Schweyer)
+  - Added support for the WALLOPS command. Usage is restricted to IRC
+    operators.
+
 ngIRCd 0.10.2 (2007-06-08)
 
   - Predefined channel configuration now allows specification of channel key
@@ -237,4 +278,4 @@ ngIRCd 0.0.1, 31.12.2001
 
 
 -- 
-$Id: NEWS,v 1.75.2.7 2007/06/08 09:05:23 alex Exp $
+$Id: NEWS,v 1.88 2008/02/26 22:05:42 fw Exp $

+ 7 - 8
README

@@ -37,7 +37,8 @@ Implemented IRC-commands are:
 ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, HELP, INVITE, ISON,
 JOIN, KICK, KILL, LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE,
 OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, REHASH, RESTART, SERVER, SQUIT,
-STATS, TIME, TOPIC, TRACE, USER, USERHOST, VERSION, WHO, WHOIS, WHOWAS.
+STATS, TIME, TOPIC, TRACE, USER, USERHOST, VERSION, WALLOPS, WHO, WHOIS,
+WHOWAS.
 
 
 III. Features (or: why use ngIRCd?)
@@ -66,9 +67,9 @@ the newest information about the ngIRCd and the most recent ("stable")
 releases there.
 
 If you are interested in the latest development versions (which are not
-always stable), then please read the section "CVS" on the homepage and
-the file "doc/CVS.txt" which describes the use of CVS, the "Concurrent
-Versioning System".
+always stable), then please read the section about "GIT" on the homepage and
+the file "doc/GIT.txt" which describes the use of GIT, the version control
+system used by ngIRCd (homepage: http://git.or.cz/).
 
 
 VI. Bugs
@@ -82,8 +83,5 @@ them at the following URL:
 There you can read about known bugs and limitations, too.
 
 If you have critics, patches or something else, please feel free to post a
-mail to <alex@barton.de>.
-
-
-$Id: README,v 1.21.2.2 2007/05/05 20:25:20 alex Exp $
+mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
+<http://ngircd.barton.de/#ml> for details).

+ 141 - 11
configure

@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for ngircd 0.10.3.
+# Generated by GNU Autoconf 2.59 for ngircd 0.12.1.
 #
 # Copyright (C) 2003 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
@@ -267,8 +267,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='ngircd'
 PACKAGE_TARNAME='ngircd'
-PACKAGE_VERSION='0.10.3'
-PACKAGE_STRING='ngircd 0.10.3'
+PACKAGE_VERSION='0.12.1'
+PACKAGE_STRING='ngircd 0.12.1'
 PACKAGE_BUGREPORT=''
 
 ac_unique_file="src/ngircd/ngircd.c"
@@ -778,7 +778,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ngircd 0.10.3 to adapt to many kinds of systems.
+\`configure' configures ngircd 0.12.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -845,7 +845,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ngircd 0.10.3:";;
+     short | recursive ) echo "Configuration of ngircd 0.12.1:";;
    esac
   cat <<\_ACEOF
 
@@ -855,6 +855,7 @@ Optional Features:
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
   --disable-ircplus       disable IRC+ protocol
+  --enable-ipv6           enable IPv6 protocol support
   --enable-sniffer        enable IRC traffic sniffer (enables debug mode)
   --enable-debug          show additional debug output
   --enable-strict-rfc     strict RFC conformance -- may break clients!
@@ -980,7 +981,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-ngircd configure 0.10.3
+ngircd configure 0.12.1
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -994,7 +995,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ngircd $as_me 0.10.3, which was
+It was created by ngircd $as_me 0.12.1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1720,7 +1721,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='ngircd'
- VERSION='0.10.3'
+ VERSION='0.12.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1883,6 +1884,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 
 
+
+
 # -- C Compiler --
 
 ac_ext=c
@@ -9650,6 +9653,129 @@ _ACEOF
 
 fi
 
+# enable support for IPv6?
+x_ipv6_on=no
+# Check whether --enable-ipv6 or --disable-ipv6 was given.
+if test "${enable_ipv6+set}" = set; then
+  enableval="$enable_ipv6"
+  if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
+
+fi;
+if test "$x_ipv6_on" = "yes"; then
+
+
+for ac_func in  \
+		getaddrinfo getnameinfo \
+
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  { { echo "$as_me:$LINENO: error: required function missing for IPv6 support!" >&5
+echo "$as_me: error: required function missing for IPv6 support!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+done
+
+	cat >>confdefs.h <<\_ACEOF
+#define WANT_IPV6 1
+_ACEOF
+
+fi
+
 # compile in IRC "sniffer"?
 
 x_sniffer_on=no; x_debug_on=no
@@ -9719,7 +9845,7 @@ test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
 
 # -- Generate files --
 
-                                                                                                                        ac_config_files="$ac_config_files Makefile doc/Makefile doc/src/Makefile src/Makefile src/portab/Makefile src/tool/Makefile src/ngircd/Makefile src/testsuite/Makefile man/Makefile contrib/Makefile contrib/Debian/Makefile contrib/MacOSX/Makefile"
+                                                                                                                                            ac_config_files="$ac_config_files Makefile doc/Makefile doc/src/Makefile src/Makefile src/portab/Makefile src/ipaddr/Makefile src/tool/Makefile src/ngircd/Makefile src/testsuite/Makefile man/Makefile contrib/Makefile contrib/Debian/Makefile contrib/MacOSX/Makefile contrib/MacOSX/ngIRCd.xcodeproj/Makefile"
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -10096,7 +10222,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by ngircd $as_me 0.10.3, which was
+This file was extended by ngircd $as_me 0.12.1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10159,7 +10285,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-ngircd config.status 0.10.3
+ngircd config.status 0.12.1
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -10274,6 +10400,7 @@ do
   "doc/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/src/Makefile" ;;
   "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
   "src/portab/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/portab/Makefile" ;;
+  "src/ipaddr/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ipaddr/Makefile" ;;
   "src/tool/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tool/Makefile" ;;
   "src/ngircd/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ngircd/Makefile" ;;
   "src/testsuite/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/testsuite/Makefile" ;;
@@ -10281,6 +10408,7 @@ do
   "contrib/Makefile" ) CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
   "contrib/Debian/Makefile" ) CONFIG_FILES="$CONFIG_FILES contrib/Debian/Makefile" ;;
   "contrib/MacOSX/Makefile" ) CONFIG_FILES="$CONFIG_FILES contrib/MacOSX/Makefile" ;;
+  "contrib/MacOSX/ngIRCd.xcodeproj/Makefile" ) CONFIG_FILES="$CONFIG_FILES contrib/MacOSX/ngIRCd.xcodeproj/Makefile" ;;
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
@@ -11230,6 +11358,8 @@ test "$x_identauth_on" = "yes" \
 echo $ECHO_N "        I/O backend: $ECHO_C"
 	echo "\"$x_io_backend\""
 
+echo $ECHO_N "      IPv6 protocol: $ECHO_C"
+echo "$x_ipv6_on"
 echo
 
 # -eof-

+ 20 - 4
configure.in

@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2007 Alexander Barton <alex@barton.de>
+# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
 #
 # 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
@@ -8,13 +8,11 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: configure.in,v 1.118.2.13 2007/07/31 19:07:59 alex Exp $
-#
 
 # -- Initialisation --
 
 AC_PREREQ(2.50)
-AC_INIT(ngircd, 0.10.3)
+AC_INIT(ngircd, 0.12.1)
 AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
 AC_CANONICAL_TARGET
 AM_INIT_AUTOMAKE(1.6)
@@ -30,6 +28,7 @@ AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
 AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
 AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
 AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
+AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
 AH_TEMPLATE([ZEROCONF], [Define if support for Zeroconf should be included])
 AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
 
@@ -426,6 +425,19 @@ if test "$x_ircplus_on" = "yes"; then
 	AC_DEFINE(IRCPLUS, 1)
 fi
 
+# enable support for IPv6?
+x_ipv6_on=no
+AC_ARG_ENABLE(ipv6,
+	[  --enable-ipv6           enable IPv6 protocol support],
+	if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
+)
+if test "$x_ipv6_on" = "yes"; then
+	AC_CHECK_FUNCS([ \
+		getaddrinfo getnameinfo \
+		],,AC_MSG_ERROR([required function missing for IPv6 support!]))
+	AC_DEFINE(WANT_IPV6, 1)
+fi
+
 # compile in IRC "sniffer"?
 
 x_sniffer_on=no; x_debug_on=no
@@ -477,6 +489,7 @@ AC_OUTPUT([ \
 	doc/src/Makefile \
 	src/Makefile \
 	src/portab/Makefile \
+	src/ipaddr/Makefile \
 	src/tool/Makefile \
 	src/ngircd/Makefile \
 	src/testsuite/Makefile \
@@ -484,6 +497,7 @@ AC_OUTPUT([ \
 	contrib/Makefile \
 	contrib/Debian/Makefile \
 	contrib/MacOSX/Makefile \
+	contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
 ])
 
 type dpkg >/dev/null 2>&1
@@ -572,6 +586,8 @@ test "$x_identauth_on" = "yes" \
 echo $ECHO_N "        I/O backend: $ECHO_C"
 	echo "\"$x_io_backend\""
 
+echo $ECHO_N "      IPv6 protocol: $ECHO_C"
+echo "$x_ipv6_on"
 echo
 
 # -eof-

+ 33 - 9
contrib/Debian/changelog

@@ -1,20 +1,44 @@
-ngircd (0.10.3-0ab1) unstable; urgency=high
+ngircd (0.12.1-0ab1) unstable; urgency=low
 
-  * New "upstream" release: 0.10.3 - fixing a security bug.
+  * New "upstream" release ngIRCd 0.12.1.
 
- -- Alexander Barton <alex@barton.de>  Tue, 31 Jul 2007 21:02:52 +0200
+ -- Alexander Barton <alex@barton.de>  Wed,  9 Jul 2008 11:27:00 +0200
 
-ngircd (0.10.2-0ab1) unstable; urgency=low
+ngircd (0.12.0-0ab1) unstable; urgency=low
 
-  * New "upstream" release: 0.10.2
+  * New "upstream" release ngIRCd 0.12.0.
 
- -- Alexander Barton <alex@barton.de>  Fri,  8 Jun 2007 10:49:36 +0200
+ -- Alexander Barton <alex@barton.de>  Tue, 13 May 2008 12:30:31 +0200
 
-ngircd (0.10.1-0ab1) unstable; urgency=low
+ngircd (0.12.0-0ab0-pre2) unstable; urgency=low
 
-  * New "upstream" release: 0.10.1
+  * Second prerelease of upcoming new "upstrem" release 0.12.0-pre1.
 
- -- Alexander Barton <alex@barton.de>  Sun, 17 Dec 2006 14:52:06 +0100
+ -- Alexander Barton <alex@barton.de>  Tue, 29 Apr 2008 23:06:14 +0200
+
+ngircd (0.12.0-0ab0-pre1) unstable; urgency=low
+
+  * Prereloease of upcoming new "upstrem" release 0.12.0-pre1.
+
+ -- Alexander Barton <alex@barton.de>  Sun, 20 Apr 2008 15:43:34 +0200
+
+ngircd (0.11.0-0ab0-pre2) unstable; urgency=low
+
+  * Second prerelease of upcoming new "upstream release".
+
+ -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 15:32:42 +0100
+
+ngircd (0.11.0-0ab0-pre1) unstable; urgency=low
+
+  * Prerelease of upcoming new "upstream release".
+
+ -- Alexander Barton <alex@barton.de>  Wed,  2 Jan 2008 21:33:15 +0100
+
+ngircd (0.10.4-0ab1) unstable; urgency=high
+
+  * New "upstream" release: 0.10.4 - fixing a security bug.
+
+ -- Alexander Barton <alex@barton.de>  Mon,  7 Jan 2008 22:04:44 +0100
 
 ngircd (0.10.0-0ab1) unstable; urgency=low
 

+ 1 - 1
contrib/Debian/ngircd.init

@@ -2,7 +2,7 @@
 #
 # ngIRCd start and stop script for Debian-based systems
 #
-# $Id: ngircd.init,v 1.6.2.1 2007/04/03 22:08:50 fw Exp $
+# $Id: ngircd.init,v 1.7 2006/12/26 14:43:46 alex Exp $
 #
 
 ### BEGIN INIT INFO

+ 12 - 5
contrib/Debian/ngircd.postinst

@@ -1,13 +1,20 @@
 #!/bin/sh
 #
 # Debian post-installation script
-# $Id: ngircd.postinst,v 1.1 2003/12/31 17:20:11 alex Exp $
+# $Id: ngircd.postinst,v 1.2 2006/12/26 14:44:40 alex Exp $
 #
 
-if [ -f /etc/ngircd/ngircd.conf ]; then
-	# make sure that configuration file is not world readable
-	chmod o= /etc/ngircd/ngircd.conf
-fi
+set -e
+
+case "$1" in
+	configure)
+		if [ -f /etc/ngircd/ngircd.conf ]; then
+			# make sure that the configuration file is not
+			# world-readable, it contains passwords!
+			chmod o= /etc/ngircd/ngircd.conf
+		fi
+		;;
+esac
 
 #DEBHELPER#
 

+ 33 - 2
contrib/MacOSX/Makefile.am

@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
+# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
 #
 # 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
@@ -8,9 +8,40 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: Makefile.am,v 1.2 2004/05/11 00:34:26 alex Exp $
+# $Id: Makefile.am,v 1.3 2008/02/17 15:31:15 alex Exp $
 #
 
+SUBDIRS = ngIRCd.xcodeproj
+
+EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h cvs-version.h
+
+SUFFIXES = .tmpl .
+
+.tmpl:
+	sed \
+	    -e s@:SBINDIR:@${sbindir}@ \
+	    <$< >$@
+
+install-data-local:
+	[ `uname -s` != "Darwin" ] || make install-sys-darwin
+
+install-sys-darwin:
+	@if [ `id -u` -eq 0 ]; then \
+	  make install-sys-darwin-root; \
+	else \
+	  echo; \
+	  echo " ** NOTE: Not installing with root privileges, so the LaunchDaemon script"; \
+	  echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" can't be installed/updated!"; \
+	  echo; \
+	fi
+
+install-sys-darwin-root: de.barton.ngircd.plist
+	install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist /Library/LaunchDaemons/de.barton.ngircd.plist
+	@echo
+	@echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed,"
+	@echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X."
+	@echo
+
 clean-local:
 	rm -rf build
 

+ 220 - 34
contrib/MacOSX/Makefile.in

@@ -16,7 +16,7 @@
 
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
+# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
 #
 # 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
@@ -24,7 +24,7 @@
 # (at your option) any later version.
 # Please read the file COPYING, README and AUTHORS for more information.
 #
-# $Id: Makefile.am,v 1.2 2004/05/11 00:34:26 alex Exp $
+# $Id: Makefile.am,v 1.3 2008/02/17 15:31:15 alex Exp $
 #
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -60,6 +60,15 @@ CONFIG_HEADER = $(top_builddir)/src/config.h
 CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMDEP_FALSE = @AMDEP_FALSE@
@@ -148,9 +157,13 @@ target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-all: all-am
+SUBDIRS = ngIRCd.xcodeproj
+EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h cvs-version.h
+SUFFIXES = .tmpl .
+all: all-recursive
 
 .SUFFIXES:
+.SUFFIXES: .tmpl .
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -181,12 +194,138 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+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:
 
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	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:
-
+CTAGS: ctags-recursive $(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)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -215,19 +354,35 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
 check-am: all-am
-check: check-am
+check: check-recursive
 all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
 
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-installcheck: installcheck-am
+installcheck: installcheck-recursive
 install-strip:
 	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
 	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
@@ -243,62 +398,93 @@ distclean-generic:
 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: clean-recursive
 
 clean-am: clean-generic clean-local mostlyclean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-generic distclean-tags
 
-dvi: dvi-am
+dvi: dvi-recursive
 
 dvi-am:
 
-html: html-am
+html: html-recursive
 
-info: info-am
+info: info-recursive
 
 info-am:
 
-install-data-am:
+install-data-am: install-data-local
 
 install-exec-am:
 
-install-info: install-info-am
+install-info: install-info-recursive
 
 install-man:
 
 installcheck-am:
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic \
 	maintainer-clean-local
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
 mostlyclean-am: mostlyclean-generic
 
-pdf: pdf-am
+pdf: pdf-recursive
 
 pdf-am:
 
-ps: ps-am
+ps: ps-recursive
 
 ps-am:
 
 uninstall-am: uninstall-info-am
 
-.PHONY: all all-am check check-am clean clean-generic clean-local \
-	distclean distclean-generic 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-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	maintainer-clean-local mostlyclean mostlyclean-generic pdf \
-	pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
-
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-local clean-recursive ctags \
+	ctags-recursive distclean distclean-generic \
+	distclean-recursive distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-data-local install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	maintainer-clean-local maintainer-clean-recursive mostlyclean \
+	mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
+	tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+
+.tmpl:
+	sed \
+	    -e s@:SBINDIR:@${sbindir}@ \
+	    <$< >$@
+
+install-data-local:
+	[ `uname -s` != "Darwin" ] || make install-sys-darwin
+
+install-sys-darwin:
+	@if [ `id -u` -eq 0 ]; then \
+	  make install-sys-darwin-root; \
+	else \
+	  echo; \
+	  echo " ** NOTE: Not installing with root privileges, so the LaunchDaemon script"; \
+	  echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" can't be installed/updated!"; \
+	  echo; \
+	fi
+
+install-sys-darwin-root: de.barton.ngircd.plist
+	install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist /Library/LaunchDaemons/de.barton.ngircd.plist
+	@echo
+	@echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed,"
+	@echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X."
+	@echo
 
 clean-local:
 	rm -rf build

+ 92 - 0
contrib/MacOSX/config.h

@@ -0,0 +1,92 @@
+/*
+ * ngIRCd -- The Next Generation IRC Daemon
+ * Copyright (c)2001-2007 Alexander Barton (alex@barton.de).
+ *
+ * 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.
+ * Please read the file COPYING, README and AUTHORS for more information.
+ *
+ * $Id: config.h,v 1.1 2007/11/19 22:11:36 alex Exp $
+ *
+ * Static configuration file for Mac OS X Xcode project
+ */
+
+#define PACKAGE_NAME "ngircd"
+#define VERSION "??"
+#define SYSCONFDIR "/etc/ngircd"
+
+/* -- Build options -- */
+
+/* Define if debug-mode should be enabled */
+#define DEBUG 1
+
+/* Define if the server should do IDENT requests */
+/*#define IDENTAUTH 1*/
+
+/* Define if IRC+ protocol should be used */
+#define IRCPLUS 1
+
+/* Define if IRC sniffer should be enabled */
+/*#define SNIFFER 1*/
+
+/* Define if syslog should be used for logging */
+#define SYSLOG 1
+
+/* Define if TCP wrappers should be used */
+/*#define TCPWRAP 1*/
+
+/* Define if support for Zeroconf should be included */
+/*#define ZEROCONF 1*/
+
+/* Define if zlib compression should be enabled */
+#define ZLIB 1
+
+/* -- Supported features -- */
+
+/* Define if SSP C support is enabled. */
+#define ENABLE_SSP_CC 1
+
+/* Define to 1 if the C compiler supports function prototypes. */
+#define PROTOTYPES 1
+/* Define like PROTOTYPES; this can be used by system headers. */
+#define __PROTOTYPES 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the `kqueue' function. */
+#define HAVE_KQUEUE 1
+/* Define to 1 if you have the `inet_ntoa' function. */
+#define HAVE_INET_NTOA 1
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+/* Define to 1 if you have the `strlcat' function. */
+#define HAVE_STRLCAT 1
+/* Define to 1 if you have the `strlcpy' function. */
+#define HAVE_STRLCPY 1
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define if socklen_t exists */
+#define HAVE_socklen_t 1
+
+#ifdef ZEROCONF
+/* Define to 1 if you have the <DNSServiceDiscovery/DNSServiceDiscovery.h> header file. */
+#define HAVE_DNSSERVICEDISCOVERY_DNSSERVICEDISCOVERY_H 1
+/* Define to 1 if you have the `DNSServiceRegistrationCreate' function. */
+#define HAVE_DNSSERVICEREGISTRATIONCREATE 1
+#endif
+
+/* -eof- */

+ 0 - 0
contrib/MacOSX/cvs-version.h


+ 19 - 0
contrib/MacOSX/de.barton.ngircd.plist.tmpl

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>Disabled</key>
+	<true/>
+	<key>KeepAlive</key>
+	<true/>
+	<key>Label</key>
+	<string>de.barton.ngIRCd</string>
+	<key>ProgramArguments</key>
+	<array>
+		<string>:SBINDIR:/ngircd</string>
+		<string>--nodaemon</string>
+	</array>
+	<key>RunAtLoad</key>
+	<true/>
+</dict>
+</plist>

+ 17 - 0
contrib/MacOSX/ngIRCd.xcodeproj/Makefile.am

@@ -0,0 +1,17 @@
+#
+# ngIRCd -- The Next Generation IRC Daemon
+# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
+#
+# 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.
+# Please read the file COPYING, README and AUTHORS for more information.
+#
+
+EXTRA_DIST = project.pbxproj
+
+maintainer-clean-local:
+	rm -f Makefile Makefile.in
+
+# -eof-

+ 308 - 0
contrib/MacOSX/ngIRCd.xcodeproj/Makefile.in

@@ -0,0 +1,308 @@
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  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@
+
+#
+# ngIRCd -- The Next Generation IRC Daemon
+# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
+#
+# 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.
+# Please read the file COPYING, README and AUTHORS for more information.
+#
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@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@
+target_triplet = @target@
+subdir = contrib/MacOSX/ngIRCd.xcodeproj
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+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@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+U = @U@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+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__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 = @datadir@
+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 = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+EXTRA_DIST = project.pbxproj
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(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  contrib/MacOSX/ngIRCd.xcodeproj/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  contrib/MacOSX/ngIRCd.xcodeproj/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:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@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
+installdirs:
+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 mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic 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-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-local mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am uninstall uninstall-am uninstall-info-am
+
+
+maintainer-clean-local:
+	rm -f Makefile Makefile.in
+
+# -eof-
+# 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:

+ 697 - 0
contrib/MacOSX/ngIRCd.xcodeproj/project.pbxproj

@@ -0,0 +1,697 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 44;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		FA322D350CEF74B1001761B3 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CD90CEF74B1001761B3 /* array.c */; };
+		FA322D360CEF74B1001761B3 /* channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDB0CEF74B1001761B3 /* channel.c */; };
+		FA322D370CEF74B1001761B3 /* client.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDD0CEF74B1001761B3 /* client.c */; };
+		FA322D380CEF74B1001761B3 /* conf.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDF0CEF74B1001761B3 /* conf.c */; };
+		FA322D390CEF74B1001761B3 /* conn-func.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE10CEF74B1001761B3 /* conn-func.c */; };
+		FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE30CEF74B1001761B3 /* conn-zip.c */; };
+		FA322D3B0CEF74B1001761B3 /* conn.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE50CEF74B1001761B3 /* conn.c */; };
+		FA322D3C0CEF74B1001761B3 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE80CEF74B1001761B3 /* hash.c */; };
+		FA322D3D0CEF74B1001761B3 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEA0CEF74B1001761B3 /* io.c */; };
+		FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEC0CEF74B1001761B3 /* irc-channel.c */; };
+		FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEE0CEF74B1001761B3 /* irc-info.c */; };
+		FA322D400CEF74B1001761B3 /* irc-login.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF00CEF74B1001761B3 /* irc-login.c */; };
+		FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF20CEF74B1001761B3 /* irc-mode.c */; };
+		FA322D420CEF74B1001761B3 /* irc-op.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF40CEF74B1001761B3 /* irc-op.c */; };
+		FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF60CEF74B1001761B3 /* irc-oper.c */; };
+		FA322D440CEF74B1001761B3 /* irc-server.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF80CEF74B1001761B3 /* irc-server.c */; };
+		FA322D450CEF74B1001761B3 /* irc-write.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFA0CEF74B1001761B3 /* irc-write.c */; };
+		FA322D460CEF74B1001761B3 /* irc.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFC0CEF74B1001761B3 /* irc.c */; };
+		FA322D470CEF74B1001761B3 /* lists.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFE0CEF74B1001761B3 /* lists.c */; };
+		FA322D480CEF74B1001761B3 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D000CEF74B1001761B3 /* log.c */; };
+		FA322D490CEF74B1001761B3 /* match.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D030CEF74B1001761B3 /* match.c */; };
+		FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D060CEF74B1001761B3 /* ngircd.c */; };
+		FA322D4B0CEF74B1001761B3 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D080CEF74B1001761B3 /* parse.c */; };
+		FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0A0CEF74B1001761B3 /* rendezvous.c */; };
+		FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0C0CEF74B1001761B3 /* resolve.c */; };
+		FA322DBE0CEF7766001761B3 /* tool.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D330CEF74B1001761B3 /* tool.c */; };
+		FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA322DC00CEF77CB001761B3 /* libz.dylib */; };
+		FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */; };
+		FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		8DD76FAF0486AB0100D96B5E /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 8;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "misc-test.e"; sourceTree = "<group>"; };
+		FA1A6BBD0D6857D900AA8F71 /* who-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "who-test.e"; sourceTree = "<group>"; };
+		FA322BBA0CEF72E4001761B3 /* ngIRCd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ngIRCd; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA322CD60CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322CD90CEF74B1001761B3 /* array.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = array.c; sourceTree = "<group>"; };
+		FA322CDA0CEF74B1001761B3 /* array.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = "<group>"; };
+		FA322CDB0CEF74B1001761B3 /* channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = channel.c; sourceTree = "<group>"; };
+		FA322CDC0CEF74B1001761B3 /* channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = channel.h; sourceTree = "<group>"; };
+		FA322CDD0CEF74B1001761B3 /* client.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = client.c; sourceTree = "<group>"; };
+		FA322CDE0CEF74B1001761B3 /* client.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = "<group>"; };
+		FA322CDF0CEF74B1001761B3 /* conf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conf.c; sourceTree = "<group>"; };
+		FA322CE00CEF74B1001761B3 /* conf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; };
+		FA322CE10CEF74B1001761B3 /* conn-func.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-func.c"; sourceTree = "<group>"; };
+		FA322CE20CEF74B1001761B3 /* conn-func.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-func.h"; sourceTree = "<group>"; };
+		FA322CE30CEF74B1001761B3 /* conn-zip.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-zip.c"; sourceTree = "<group>"; };
+		FA322CE40CEF74B1001761B3 /* conn-zip.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-zip.h"; sourceTree = "<group>"; };
+		FA322CE50CEF74B1001761B3 /* conn.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conn.c; sourceTree = "<group>"; };
+		FA322CE60CEF74B1001761B3 /* conn.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conn.h; sourceTree = "<group>"; };
+		FA322CE70CEF74B1001761B3 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; };
+		FA322CE80CEF74B1001761B3 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
+		FA322CE90CEF74B1001761B3 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
+		FA322CEA0CEF74B1001761B3 /* io.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = "<group>"; };
+		FA322CEB0CEF74B1001761B3 /* io.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = "<group>"; };
+		FA322CEC0CEF74B1001761B3 /* irc-channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-channel.c"; sourceTree = "<group>"; };
+		FA322CED0CEF74B1001761B3 /* irc-channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-channel.h"; sourceTree = "<group>"; };
+		FA322CEE0CEF74B1001761B3 /* irc-info.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-info.c"; sourceTree = "<group>"; };
+		FA322CEF0CEF74B1001761B3 /* irc-info.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-info.h"; sourceTree = "<group>"; };
+		FA322CF00CEF74B1001761B3 /* irc-login.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-login.c"; sourceTree = "<group>"; };
+		FA322CF10CEF74B1001761B3 /* irc-login.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-login.h"; sourceTree = "<group>"; };
+		FA322CF20CEF74B1001761B3 /* irc-mode.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-mode.c"; sourceTree = "<group>"; };
+		FA322CF30CEF74B1001761B3 /* irc-mode.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-mode.h"; sourceTree = "<group>"; };
+		FA322CF40CEF74B1001761B3 /* irc-op.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-op.c"; sourceTree = "<group>"; };
+		FA322CF50CEF74B1001761B3 /* irc-op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-op.h"; sourceTree = "<group>"; };
+		FA322CF60CEF74B1001761B3 /* irc-oper.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-oper.c"; sourceTree = "<group>"; };
+		FA322CF70CEF74B1001761B3 /* irc-oper.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-oper.h"; sourceTree = "<group>"; };
+		FA322CF80CEF74B1001761B3 /* irc-server.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-server.c"; sourceTree = "<group>"; };
+		FA322CF90CEF74B1001761B3 /* irc-server.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-server.h"; sourceTree = "<group>"; };
+		FA322CFA0CEF74B1001761B3 /* irc-write.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-write.c"; sourceTree = "<group>"; };
+		FA322CFB0CEF74B1001761B3 /* irc-write.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-write.h"; sourceTree = "<group>"; };
+		FA322CFC0CEF74B1001761B3 /* irc.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = irc.c; sourceTree = "<group>"; };
+		FA322CFD0CEF74B1001761B3 /* irc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = irc.h; sourceTree = "<group>"; };
+		FA322CFE0CEF74B1001761B3 /* lists.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = lists.c; sourceTree = "<group>"; };
+		FA322CFF0CEF74B1001761B3 /* lists.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = lists.h; sourceTree = "<group>"; };
+		FA322D000CEF74B1001761B3 /* log.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; };
+		FA322D010CEF74B1001761B3 /* log.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
+		FA322D020CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D030CEF74B1001761B3 /* match.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = match.c; sourceTree = "<group>"; };
+		FA322D040CEF74B1001761B3 /* match.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = match.h; sourceTree = "<group>"; };
+		FA322D050CEF74B1001761B3 /* messages.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; };
+		FA322D060CEF74B1001761B3 /* ngircd.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ngircd.c; sourceTree = "<group>"; };
+		FA322D070CEF74B1001761B3 /* ngircd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ngircd.h; sourceTree = "<group>"; };
+		FA322D080CEF74B1001761B3 /* parse.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; };
+		FA322D090CEF74B1001761B3 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parse.h; sourceTree = "<group>"; };
+		FA322D0A0CEF74B1001761B3 /* rendezvous.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = rendezvous.c; sourceTree = "<group>"; };
+		FA322D0B0CEF74B1001761B3 /* rendezvous.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = rendezvous.h; sourceTree = "<group>"; };
+		FA322D0C0CEF74B1001761B3 /* resolve.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = resolve.c; sourceTree = "<group>"; };
+		FA322D0D0CEF74B1001761B3 /* resolve.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = resolve.h; sourceTree = "<group>"; };
+		FA322D100CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
+		FA322D110CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
+		FA322D120CEF74B1001761B3 /* exp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = exp.h; sourceTree = "<group>"; };
+		FA322D130CEF74B1001761B3 /* imp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = imp.h; sourceTree = "<group>"; };
+		FA322D140CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D150CEF74B1001761B3 /* portab.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = portab.h; sourceTree = "<group>"; };
+		FA322D160CEF74B1001761B3 /* portabtest.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = portabtest.c; sourceTree = "<group>"; };
+		FA322D170CEF74B1001761B3 /* splint.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = splint.h; sourceTree = "<group>"; };
+		FA322D180CEF74B1001761B3 /* strdup.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strdup.c; sourceTree = "<group>"; };
+		FA322D190CEF74B1001761B3 /* strlcpy.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strlcpy.c; sourceTree = "<group>"; };
+		FA322D1A0CEF74B1001761B3 /* vsnprintf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = vsnprintf.c; sourceTree = "<group>"; };
+		FA322D1D0CEF74B1001761B3 /* channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "channel-test.e"; sourceTree = "<group>"; };
+		FA322D1E0CEF74B1001761B3 /* check-idle.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "check-idle.e"; sourceTree = "<group>"; };
+		FA322D1F0CEF74B1001761B3 /* connect-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "connect-test.e"; sourceTree = "<group>"; };
+		FA322D200CEF74B1001761B3 /* functions.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = functions.inc; sourceTree = "<group>"; };
+		FA322D210CEF74B1001761B3 /* getpid.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = getpid.sh; sourceTree = "<group>"; };
+		FA322D220CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D230CEF74B1001761B3 /* mode-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "mode-test.e"; sourceTree = "<group>"; };
+		FA322D240CEF74B1001761B3 /* ngircd-test.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test.conf"; sourceTree = "<group>"; };
+		FA322D250CEF74B1001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
+		FA322D260CEF74B1001761B3 /* start-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "start-server.sh"; sourceTree = "<group>"; };
+		FA322D270CEF74B1001761B3 /* stop-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stop-server.sh"; sourceTree = "<group>"; };
+		FA322D280CEF74B1001761B3 /* stress-A.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-A.e"; sourceTree = "<group>"; };
+		FA322D290CEF74B1001761B3 /* stress-B.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-B.e"; sourceTree = "<group>"; };
+		FA322D2A0CEF74B1001761B3 /* stress-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stress-server.sh"; sourceTree = "<group>"; };
+		FA322D2B0CEF74B1001761B3 /* test-loop.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "test-loop.sh"; sourceTree = "<group>"; };
+		FA322D2C0CEF74B1001761B3 /* tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = tests.sh; sourceTree = "<group>"; };
+		FA322D2D0CEF74B1001761B3 /* wait-tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "wait-tests.sh"; sourceTree = "<group>"; };
+		FA322D300CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
+		FA322D310CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
+		FA322D320CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D330CEF74B1001761B3 /* tool.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = "<group>"; };
+		FA322D340CEF74B1001761B3 /* tool.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tool.h; sourceTree = "<group>"; };
+		FA322D5A0CEF750F001761B3 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../AUTHORS; sourceTree = SOURCE_ROOT; };
+		FA322D5B0CEF750F001761B3 /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = autogen.sh; path = ../../autogen.sh; sourceTree = SOURCE_ROOT; };
+		FA322D5C0CEF750F001761B3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../ChangeLog; sourceTree = SOURCE_ROOT; };
+		FA322D5E0CEF750F001761B3 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../config.guess; sourceTree = SOURCE_ROOT; };
+		FA322D5F0CEF750F001761B3 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../config.sub; sourceTree = SOURCE_ROOT; };
+		FA322D600CEF750F001761B3 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = configure.in; path = ../../configure.in; sourceTree = SOURCE_ROOT; };
+		FA322D610CEF750F001761B3 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../COPYING; sourceTree = SOURCE_ROOT; };
+		FA322D620CEF750F001761B3 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../INSTALL; sourceTree = SOURCE_ROOT; };
+		FA322D630CEF750F001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ../../Makefile.am; sourceTree = SOURCE_ROOT; };
+		FA322D640CEF750F001761B3 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = NEWS; path = ../../NEWS; sourceTree = SOURCE_ROOT; };
+		FA322D650CEF750F001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../README; sourceTree = SOURCE_ROOT; };
+		FA322D6A0CEF7523001761B3 /* changelog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = changelog; sourceTree = "<group>"; };
+		FA322D6B0CEF7523001761B3 /* compat */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = compat; sourceTree = "<group>"; };
+		FA322D6C0CEF7523001761B3 /* control */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = control; sourceTree = "<group>"; };
+		FA322D6D0CEF7523001761B3 /* copyright */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = copyright; sourceTree = "<group>"; };
+		FA322D6E0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D6F0CEF7523001761B3 /* ngircd.default */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.default; sourceTree = "<group>"; };
+		FA322D700CEF7523001761B3 /* ngircd.init */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.init; sourceTree = "<group>"; };
+		FA322D710CEF7523001761B3 /* ngircd.postinst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.postinst; sourceTree = "<group>"; };
+		FA322D720CEF7523001761B3 /* rules */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = rules; sourceTree = "<group>"; };
+		FA322D8D0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ngIRCd.xcodeproj; sourceTree = "<group>"; };
+		FA322D910CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D920CEF7523001761B3 /* ngindent */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngindent; sourceTree = "<group>"; };
+		FA322D930CEF7523001761B3 /* ngircd.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.sh; sourceTree = "<group>"; };
+		FA322D940CEF7523001761B3 /* ngircd.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.spec; sourceTree = "<group>"; };
+		FA322D950CEF7523001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
+		FA322D960CEF7523001761B3 /* systrace.policy */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = systrace.policy; sourceTree = "<group>"; };
+		FA322D9A0CEF752C001761B3 /* FAQ.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = FAQ.txt; sourceTree = "<group>"; };
+		FA322D9B0CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322D9C0CEF752C001761B3 /* Platforms.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Platforms.txt; sourceTree = "<group>"; };
+		FA322D9D0CEF752C001761B3 /* Protocol.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Protocol.txt; sourceTree = "<group>"; };
+		FA322D9E0CEF752C001761B3 /* README-AUX.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-AUX.txt"; sourceTree = "<group>"; };
+		FA322D9F0CEF752C001761B3 /* README-BeOS.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-BeOS.txt"; sourceTree = "<group>"; };
+		FA322DA00CEF752C001761B3 /* RFC.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = RFC.txt; sourceTree = "<group>"; };
+		FA322DA10CEF752C001761B3 /* sample-ngircd.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "sample-ngircd.conf"; sourceTree = "<group>"; };
+		FA322DA40CEF752C001761B3 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; };
+		FA322DA50CEF752C001761B3 /* footer.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = footer.inc.html; sourceTree = "<group>"; };
+		FA322DA60CEF752C001761B3 /* header.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = header.inc.html; sourceTree = "<group>"; };
+		FA322DA70CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322DA80CEF752C001761B3 /* ngircd-doc.css */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.css; path = "ngircd-doc.css"; sourceTree = "<group>"; };
+		FA322DA90CEF752C001761B3 /* SSL.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = SSL.txt; sourceTree = "<group>"; };
+		FA322DAA0CEF752C001761B3 /* Zeroconf.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Zeroconf.txt; sourceTree = "<group>"; };
+		FA322DAD0CEF7538001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
+		FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.8.tmpl; sourceTree = "<group>"; };
+		FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.conf.5.tmpl; sourceTree = "<group>"; };
+		FA322DB10CEF7565001761B3 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
+		FA322DBB0CEF773C001761B3 /* cvs-version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "cvs-version.h"; sourceTree = "<group>"; };
+		FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
+		FA407F2B0DB159F400271AF1 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ipaddr/Makefile.am; sourceTree = "<group>"; };
+		FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ng_ipaddr.c; path = ipaddr/ng_ipaddr.c; sourceTree = "<group>"; };
+		FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ng_ipaddr.h; path = ipaddr/ng_ipaddr.h; sourceTree = "<group>"; };
+		FA407F380DB15AC700271AF1 /* GIT.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = GIT.txt; sourceTree = "<group>"; };
+		FAE5CC2C0CF2308A007D69B6 /* numeric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric.h; sourceTree = "<group>"; };
+		FAE5CC2D0CF2308A007D69B6 /* numeric.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = numeric.c; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DD76FAD0486AB0100D96B5E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* ngIRCd */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D970CEF752C001761B3 /* doc */,
+				FA322D660CEF7523001761B3 /* contrib */,
+				FA322DAB0CEF7538001761B3 /* man */,
+				FA322CD40CEF74B0001761B3 /* src */,
+				FA322D5A0CEF750F001761B3 /* AUTHORS */,
+				FA322D610CEF750F001761B3 /* COPYING */,
+				FA322D620CEF750F001761B3 /* INSTALL */,
+				FA322D640CEF750F001761B3 /* NEWS */,
+				FA322D650CEF750F001761B3 /* README */,
+				FA322D5B0CEF750F001761B3 /* autogen.sh */,
+				FA322D5C0CEF750F001761B3 /* ChangeLog */,
+				FA322D5E0CEF750F001761B3 /* config.guess */,
+				FA322D5F0CEF750F001761B3 /* config.sub */,
+				FA322D600CEF750F001761B3 /* configure.in */,
+				FA322D630CEF750F001761B3 /* Makefile.am */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+				FA322DC00CEF77CB001761B3 /* libz.dylib */,
+			);
+			name = ngIRCd;
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				FA322BBA0CEF72E4001761B3 /* ngIRCd */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		FA322CD40CEF74B0001761B3 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				FA322CD70CEF74B1001761B3 /* ngircd */,
+				FA407F270DB1598D00271AF1 /* ipaddr */,
+				FA322D0E0CEF74B1001761B3 /* portab */,
+				FA322D1B0CEF74B1001761B3 /* testsuite */,
+				FA322D2E0CEF74B1001761B3 /* tool */,
+				FA322CD60CEF74B1001761B3 /* Makefile.am */,
+			);
+			name = src;
+			path = ../../src;
+			sourceTree = SOURCE_ROOT;
+		};
+		FA322CD70CEF74B1001761B3 /* ngircd */ = {
+			isa = PBXGroup;
+			children = (
+				FA322CD90CEF74B1001761B3 /* array.c */,
+				FA322CDA0CEF74B1001761B3 /* array.h */,
+				FA322CDB0CEF74B1001761B3 /* channel.c */,
+				FA322CDC0CEF74B1001761B3 /* channel.h */,
+				FA322CDD0CEF74B1001761B3 /* client.c */,
+				FA322CDE0CEF74B1001761B3 /* client.h */,
+				FA322CDF0CEF74B1001761B3 /* conf.c */,
+				FA322CE00CEF74B1001761B3 /* conf.h */,
+				FA322CE10CEF74B1001761B3 /* conn-func.c */,
+				FA322CE20CEF74B1001761B3 /* conn-func.h */,
+				FA322CE30CEF74B1001761B3 /* conn-zip.c */,
+				FA322CE40CEF74B1001761B3 /* conn-zip.h */,
+				FA322CE50CEF74B1001761B3 /* conn.c */,
+				FA322CE60CEF74B1001761B3 /* conn.h */,
+				FA322CE70CEF74B1001761B3 /* defines.h */,
+				FA322CE80CEF74B1001761B3 /* hash.c */,
+				FA322CE90CEF74B1001761B3 /* hash.h */,
+				FA322CEA0CEF74B1001761B3 /* io.c */,
+				FA322CEB0CEF74B1001761B3 /* io.h */,
+				FA322CEC0CEF74B1001761B3 /* irc-channel.c */,
+				FA322CED0CEF74B1001761B3 /* irc-channel.h */,
+				FA322CEE0CEF74B1001761B3 /* irc-info.c */,
+				FA322CEF0CEF74B1001761B3 /* irc-info.h */,
+				FA322CF00CEF74B1001761B3 /* irc-login.c */,
+				FA322CF10CEF74B1001761B3 /* irc-login.h */,
+				FA322CF20CEF74B1001761B3 /* irc-mode.c */,
+				FA322CF30CEF74B1001761B3 /* irc-mode.h */,
+				FA322CF40CEF74B1001761B3 /* irc-op.c */,
+				FA322CF50CEF74B1001761B3 /* irc-op.h */,
+				FA322CF60CEF74B1001761B3 /* irc-oper.c */,
+				FA322CF70CEF74B1001761B3 /* irc-oper.h */,
+				FA322CF80CEF74B1001761B3 /* irc-server.c */,
+				FA322CF90CEF74B1001761B3 /* irc-server.h */,
+				FA322CFA0CEF74B1001761B3 /* irc-write.c */,
+				FA322CFB0CEF74B1001761B3 /* irc-write.h */,
+				FA322CFC0CEF74B1001761B3 /* irc.c */,
+				FA322CFD0CEF74B1001761B3 /* irc.h */,
+				FA322CFE0CEF74B1001761B3 /* lists.c */,
+				FA322CFF0CEF74B1001761B3 /* lists.h */,
+				FA322D000CEF74B1001761B3 /* log.c */,
+				FA322D010CEF74B1001761B3 /* log.h */,
+				FA322D020CEF74B1001761B3 /* Makefile.am */,
+				FA322D030CEF74B1001761B3 /* match.c */,
+				FA322D040CEF74B1001761B3 /* match.h */,
+				FA322D050CEF74B1001761B3 /* messages.h */,
+				FA322D060CEF74B1001761B3 /* ngircd.c */,
+				FA322D070CEF74B1001761B3 /* ngircd.h */,
+				FAE5CC2D0CF2308A007D69B6 /* numeric.c */,
+				FAE5CC2C0CF2308A007D69B6 /* numeric.h */,
+				FA322D080CEF74B1001761B3 /* parse.c */,
+				FA322D090CEF74B1001761B3 /* parse.h */,
+				FA322D0A0CEF74B1001761B3 /* rendezvous.c */,
+				FA322D0B0CEF74B1001761B3 /* rendezvous.h */,
+				FA322D0C0CEF74B1001761B3 /* resolve.c */,
+				FA322D0D0CEF74B1001761B3 /* resolve.h */,
+			);
+			path = ngircd;
+			sourceTree = "<group>";
+		};
+		FA322D0E0CEF74B1001761B3 /* portab */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D100CEF74B1001761B3 /* ansi2knr.1 */,
+				FA322D110CEF74B1001761B3 /* ansi2knr.c */,
+				FA322D120CEF74B1001761B3 /* exp.h */,
+				FA322D130CEF74B1001761B3 /* imp.h */,
+				FA322D140CEF74B1001761B3 /* Makefile.am */,
+				FA322D150CEF74B1001761B3 /* portab.h */,
+				FA322D160CEF74B1001761B3 /* portabtest.c */,
+				FA322D170CEF74B1001761B3 /* splint.h */,
+				FA322D180CEF74B1001761B3 /* strdup.c */,
+				FA322D190CEF74B1001761B3 /* strlcpy.c */,
+				FA322D1A0CEF74B1001761B3 /* vsnprintf.c */,
+			);
+			path = portab;
+			sourceTree = "<group>";
+		};
+		FA322D1B0CEF74B1001761B3 /* testsuite */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D1D0CEF74B1001761B3 /* channel-test.e */,
+				FA322D1E0CEF74B1001761B3 /* check-idle.e */,
+				FA322D1F0CEF74B1001761B3 /* connect-test.e */,
+				FA322D200CEF74B1001761B3 /* functions.inc */,
+				FA322D210CEF74B1001761B3 /* getpid.sh */,
+				FA322D220CEF74B1001761B3 /* Makefile.am */,
+				FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */,
+				FA322D230CEF74B1001761B3 /* mode-test.e */,
+				FA322D240CEF74B1001761B3 /* ngircd-test.conf */,
+				FA322D250CEF74B1001761B3 /* README */,
+				FA322D260CEF74B1001761B3 /* start-server.sh */,
+				FA322D270CEF74B1001761B3 /* stop-server.sh */,
+				FA322D280CEF74B1001761B3 /* stress-A.e */,
+				FA322D290CEF74B1001761B3 /* stress-B.e */,
+				FA322D2A0CEF74B1001761B3 /* stress-server.sh */,
+				FA322D2B0CEF74B1001761B3 /* test-loop.sh */,
+				FA322D2C0CEF74B1001761B3 /* tests.sh */,
+				FA322D2D0CEF74B1001761B3 /* wait-tests.sh */,
+				FA1A6BBD0D6857D900AA8F71 /* who-test.e */,
+			);
+			path = testsuite;
+			sourceTree = "<group>";
+		};
+		FA322D2E0CEF74B1001761B3 /* tool */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D300CEF74B1001761B3 /* ansi2knr.1 */,
+				FA322D310CEF74B1001761B3 /* ansi2knr.c */,
+				FA322D320CEF74B1001761B3 /* Makefile.am */,
+				FA322D330CEF74B1001761B3 /* tool.c */,
+				FA322D340CEF74B1001761B3 /* tool.h */,
+			);
+			path = tool;
+			sourceTree = "<group>";
+		};
+		FA322D660CEF7523001761B3 /* contrib */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D680CEF7523001761B3 /* Debian */,
+				FA322D730CEF7523001761B3 /* MacOSX */,
+				FA322D910CEF7523001761B3 /* Makefile.am */,
+				FA322D920CEF7523001761B3 /* ngindent */,
+				FA322D930CEF7523001761B3 /* ngircd.sh */,
+				FA322D940CEF7523001761B3 /* ngircd.spec */,
+				FA322D950CEF7523001761B3 /* README */,
+				FA322D960CEF7523001761B3 /* systrace.policy */,
+			);
+			name = contrib;
+			path = ..;
+			sourceTree = SOURCE_ROOT;
+		};
+		FA322D680CEF7523001761B3 /* Debian */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D6A0CEF7523001761B3 /* changelog */,
+				FA322D6B0CEF7523001761B3 /* compat */,
+				FA322D6C0CEF7523001761B3 /* control */,
+				FA322D6D0CEF7523001761B3 /* copyright */,
+				FA322D6E0CEF7523001761B3 /* Makefile.am */,
+				FA322D6F0CEF7523001761B3 /* ngircd.default */,
+				FA322D700CEF7523001761B3 /* ngircd.init */,
+				FA322D710CEF7523001761B3 /* ngircd.postinst */,
+				FA322D720CEF7523001761B3 /* rules */,
+			);
+			path = Debian;
+			sourceTree = "<group>";
+		};
+		FA322D730CEF7523001761B3 /* MacOSX */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D750CEF7523001761B3 /* build */,
+				FA322D8D0CEF7523001761B3 /* Makefile.am */,
+				FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */,
+				FA322DB10CEF7565001761B3 /* config.h */,
+				FA322DBB0CEF773C001761B3 /* cvs-version.h */,
+			);
+			path = MacOSX;
+			sourceTree = "<group>";
+		};
+		FA322D750CEF7523001761B3 /* build */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D760CEF7523001761B3 /* ngIRCd.build */,
+			);
+			path = build;
+			sourceTree = "<group>";
+		};
+		FA322D760CEF7523001761B3 /* ngIRCd.build */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D770CEF7523001761B3 /* Default */,
+				FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */,
+			);
+			path = ngIRCd.build;
+			sourceTree = "<group>";
+		};
+		FA322D770CEF7523001761B3 /* Default */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D780CEF7523001761B3 /* ngIRCd.build */,
+			);
+			path = Default;
+			sourceTree = "<group>";
+		};
+		FA322D780CEF7523001761B3 /* ngIRCd.build */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D7A0CEF7523001761B3 /* Objects-normal */,
+			);
+			path = ngIRCd.build;
+			sourceTree = "<group>";
+		};
+		FA322D7A0CEF7523001761B3 /* Objects-normal */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D7B0CEF7523001761B3 /* i386 */,
+				FA322D7D0CEF7523001761B3 /* ppc */,
+			);
+			path = "Objects-normal";
+			sourceTree = "<group>";
+		};
+		FA322D7B0CEF7523001761B3 /* i386 */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = i386;
+			sourceTree = "<group>";
+		};
+		FA322D7D0CEF7523001761B3 /* ppc */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = ppc;
+			sourceTree = "<group>";
+		};
+		FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */ = {
+			isa = PBXGroup;
+			children = (
+				FA322D880CEF7523001761B3 /* strings.pbxstrings */,
+			);
+			path = ngIRCd.pbxindex;
+			sourceTree = "<group>";
+		};
+		FA322D880CEF7523001761B3 /* strings.pbxstrings */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = strings.pbxstrings;
+			sourceTree = "<group>";
+		};
+		FA322D8F0CEF7523001761B3 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		FA322D970CEF752C001761B3 /* doc */ = {
+			isa = PBXGroup;
+			children = (
+				FA407F380DB15AC700271AF1 /* GIT.txt */,
+				FA322D9A0CEF752C001761B3 /* FAQ.txt */,
+				FA322D9B0CEF752C001761B3 /* Makefile.am */,
+				FA322D9C0CEF752C001761B3 /* Platforms.txt */,
+				FA322D9D0CEF752C001761B3 /* Protocol.txt */,
+				FA322D9E0CEF752C001761B3 /* README-AUX.txt */,
+				FA322D9F0CEF752C001761B3 /* README-BeOS.txt */,
+				FA322DA00CEF752C001761B3 /* RFC.txt */,
+				FA322DA10CEF752C001761B3 /* sample-ngircd.conf */,
+				FA322DA20CEF752C001761B3 /* src */,
+				FA322DA90CEF752C001761B3 /* SSL.txt */,
+				FA322DAA0CEF752C001761B3 /* Zeroconf.txt */,
+			);
+			name = doc;
+			path = ../../doc;
+			sourceTree = SOURCE_ROOT;
+		};
+		FA322DA20CEF752C001761B3 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				FA322DA40CEF752C001761B3 /* Doxyfile */,
+				FA322DA50CEF752C001761B3 /* footer.inc.html */,
+				FA322DA60CEF752C001761B3 /* header.inc.html */,
+				FA322DA70CEF752C001761B3 /* Makefile.am */,
+				FA322DA80CEF752C001761B3 /* ngircd-doc.css */,
+			);
+			path = src;
+			sourceTree = "<group>";
+		};
+		FA322DAB0CEF7538001761B3 /* man */ = {
+			isa = PBXGroup;
+			children = (
+				FA322DAD0CEF7538001761B3 /* Makefile.am */,
+				FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */,
+				FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */,
+			);
+			name = man;
+			path = ../../man;
+			sourceTree = SOURCE_ROOT;
+		};
+		FA407F270DB1598D00271AF1 /* ipaddr */ = {
+			isa = PBXGroup;
+			children = (
+				FA407F2B0DB159F400271AF1 /* Makefile.am */,
+				FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */,
+				FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */,
+			);
+			name = ipaddr;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8DD76FA90486AB0100D96B5E /* ngIRCd */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */;
+			buildPhases = (
+				8DD76FAB0486AB0100D96B5E /* Sources */,
+				8DD76FAD0486AB0100D96B5E /* Frameworks */,
+				8DD76FAF0486AB0100D96B5E /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = ngIRCd;
+			productInstallPath = "$(HOME)/bin";
+			productName = ngIRCd;
+			productReference = FA322BBA0CEF72E4001761B3 /* ngIRCd */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */;
+			compatibilityVersion = "Xcode 3.0";
+			hasScannedForEncodings = 1;
+			mainGroup = 08FB7794FE84155DC02AAC07 /* ngIRCd */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = FA322D8F0CEF7523001761B3 /* Products */;
+					ProjectRef = FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				8DD76FA90486AB0100D96B5E /* ngIRCd */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DD76FAB0486AB0100D96B5E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA322D350CEF74B1001761B3 /* array.c in Sources */,
+				FA322D360CEF74B1001761B3 /* channel.c in Sources */,
+				FA322D370CEF74B1001761B3 /* client.c in Sources */,
+				FA322D380CEF74B1001761B3 /* conf.c in Sources */,
+				FA322D390CEF74B1001761B3 /* conn-func.c in Sources */,
+				FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */,
+				FA322D3B0CEF74B1001761B3 /* conn.c in Sources */,
+				FA322D3C0CEF74B1001761B3 /* hash.c in Sources */,
+				FA322D3D0CEF74B1001761B3 /* io.c in Sources */,
+				FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */,
+				FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */,
+				FA322D400CEF74B1001761B3 /* irc-login.c in Sources */,
+				FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */,
+				FA322D420CEF74B1001761B3 /* irc-op.c in Sources */,
+				FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */,
+				FA322D440CEF74B1001761B3 /* irc-server.c in Sources */,
+				FA322D450CEF74B1001761B3 /* irc-write.c in Sources */,
+				FA322D460CEF74B1001761B3 /* irc.c in Sources */,
+				FA322D470CEF74B1001761B3 /* lists.c in Sources */,
+				FA322D480CEF74B1001761B3 /* log.c in Sources */,
+				FA322D490CEF74B1001761B3 /* match.c in Sources */,
+				FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */,
+				FA322D4B0CEF74B1001761B3 /* parse.c in Sources */,
+				FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */,
+				FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */,
+				FA322DBE0CEF7766001761B3 /* tool.c in Sources */,
+				FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */,
+				FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB928708733DD80010E9CD /* Default */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
+				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
+				GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
+				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
+				GCC_WARN_MISSING_PARENTHESES = YES;
+				GCC_WARN_PEDANTIC = YES;
+				GCC_WARN_SHADOW = YES;
+				GCC_WARN_SIGN_COMPARE = YES;
+				GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNKNOWN_PRAGMAS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_LABEL = YES;
+				GCC_WARN_UNUSED_PARAMETER = YES;
+				GCC_WARN_UNUSED_VALUE = YES;
+				INSTALL_PATH = /usr/local/bin;
+				PRODUCT_NAME = ngIRCd;
+			};
+			name = Default;
+		};
+		1DEB928B08733DD80010E9CD /* Default */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = (
+					ppc,
+					i386,
+				);
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				PREBINDING = NO;
+				SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+			};
+			name = Default;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928708733DD80010E9CD /* Default */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Default;
+		};
+		1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928B08733DD80010E9CD /* Default */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Default;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}

+ 1 - 1
contrib/ngircd.spec

@@ -1,5 +1,5 @@
 %define name    ngircd
-%define version 0.10.3
+%define version 0.12.1
 %define release 1
 %define prefix  %{_prefix}
 

+ 0 - 56
doc/CVS.txt

@@ -1,57 +0,0 @@
-
-                     ngIRCd - Next Generation IRC Server
-
-                        (c)2001-2006 Alexander Barton,
-                    alex@barton.de, http://www.barton.de/
-
-               ngIRCd is free software and published under the
-                   terms of the GNU General Public License.
-
-                                 -- CVS.txt --
-
-
-The source code of ngIRCd is maintained using the "Concurrent Versions
-System" (CVS). Thereby several developers can work with the source tree at
-the same time.
-
-
-I. Anonymous read-only Access
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-To access the source tree anonymously in read-only mode, follow these steps:
-
-Login to the CVS server:
-
- $ cvs -d:pserver:anonymous@ngircd.barton.de:/srv/cvs/ngircd login
-
-Use "anonymous" as user name and no password (just hit Return). Now you can
-check out the sources:
-
- $ cvs -d:pserver:anonymous@ngircd.barton.de:/srv/cvs/ngircd checkout ngircd
-
-Thereby a new folder "ngircd" will be created containing all the individual
-source files. (Substitute the last "ngircd" with "website" to check out all
-the files of the homepage of ngIRCd.)
-
-The newly created folder ("ngircd" or "website") is the "working folder", all
-CVS commands will be executed from within this folder in the future.
-
-Please note: When checking out a fresh copy of ngIRCd from CVS, the
-configure script doesn't exist; you have to run the autogen.sh shell script
-(which is included in the source tree) to generate it. This requires you to
-have GNU automake and GNU autoconf installed on your system.
-
-Updating the CVS tree:
-
- $ cvs update -d -P [<filename>]
-
-You can update a single file or the complete source tree.
-
-
-II. Write Access
-~~~~~~~~~~~~~~~~
-If you want to contribute a couple of patches and write access to the CVS
-repository would be handy, please contact Alex Barton, <alex@barton.de>.
-
-
-$Id: CVS.txt,v 1.8.2.1 2006/08/02 09:04:20 alex Exp $

+ 1 - 10
doc/FAQ.txt

@@ -62,15 +62,6 @@ A: On Linux/glibc with chroot enabled you need to put some libraries inside
    is to either disable chroot support or to link against dietlibc instead
    of glibc. (tnx to Sebastian Siewior)
 
-Q: I am running Linux and ngircd dies on startup with the follwing errors:
-   IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd -1).
-   Cannot initialize IO routines: Function not implemented
-   Server isn't listening on a single port!
-   ngircd exiting due to fatal errors!
-A: epoll is only supported on 2.6 Linux kernels. Either use a 2.6 kernel, or
-   re-run configure with the --without-epoll parameter. After configure
-   completed, you should see select() being listed as IO backend:
-   '(I/O backend: "select()"').
 
 IV. Bugs!?
 ~~~~~~~~~~
@@ -85,4 +76,4 @@ A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>!
 
 
 -- 
-$Id: FAQ.txt,v 1.11 2005/12/09 21:14:56 fw Exp $
+$Id: FAQ.txt,v 1.12 2008/01/02 22:47:58 alex Exp $

+ 45 - 0
doc/GIT.txt

@@ -0,0 +1,45 @@
+                     ngIRCd - Next Generation IRC Server
+
+                                 -- GIT.txt --
+
+The source code of ngIRCd is maintained using git, the stupid content
+tracker.
+
+I. Getting the source code
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+To access the source tree anonymously, run:
+
+ $ git clone git://ngircd.barton.de/ngircd.git
+
+Thereby a new folder "ngircd" will be created containing all the individual
+source files.
+
+The newly created directory ("ngircd") is the "working directory", all
+git commands will be executed from within this directory in the future.
+
+Please note: When checking out a fresh copy of ngIRCd using git, the
+configure script doesn't exist; you have to run the autogen.sh shell script
+(which is included in the source tree) to generate it. This requires you to
+have GNU automake and GNU autoconf installed on your system.
+
+To update the git tree:
+
+ $ git pull
+
+This retrieves all changes and merges them into the current branch.
+
+II. Contributing
+~~~~~~~~~~~~~~~~
+
+Patches should be sent to the ngircd mailing list. List homepage:
+http://arthur.barton.de/mailman/listinfo/ngircd-ml
+
+If you do not want to send them to the list, you can also mail them
+to Alex Barton, <alex@barton.de>.
+
+
+III. Write Access
+~~~~~~~~~~~~~~~~~
+If you want to contribute a couple of patches and write access to the git
+repository would be handy, please contact Alex Barton, <alex@barton.de>.
+

+ 3 - 5
doc/Makefile.am

@@ -1,6 +1,6 @@
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
+# Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
 #
 # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 # der GNU General Public License (GPL), wie von der Free Software Foundation
@@ -9,13 +9,11 @@
 # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 #
-# $Id: Makefile.am,v 1.21 2005/11/29 20:59:57 alex Exp $
-#
 
 SUBDIRS = src
 
-EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt Platforms.txt README-AUX.txt \
-	README-BeOS.txt RFC.txt Zeroconf.txt  sample-ngircd.conf
+EXTRA_DIST = FAQ.txt GIT.txt Protocol.txt Platforms.txt README-AUX.txt \
+	README-BeOS.txt RFC.txt SSL.txt Zeroconf.txt sample-ngircd.conf
 
 maintainer-clean-local:
 	rm -f Makefile Makefile.in

+ 3 - 5
doc/Makefile.in

@@ -16,7 +16,7 @@
 
 #
 # ngIRCd -- The Next Generation IRC Daemon
-# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
+# Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
 #
 # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
 # der GNU General Public License (GPL), wie von der Free Software Foundation
@@ -25,8 +25,6 @@
 # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
 # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
 #
-# $Id: Makefile.am,v 1.21 2005/11/29 20:59:57 alex Exp $
-#
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -159,8 +157,8 @@ target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
 SUBDIRS = src
-EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt Platforms.txt README-AUX.txt \
-	README-BeOS.txt RFC.txt Zeroconf.txt  sample-ngircd.conf
+EXTRA_DIST = FAQ.txt GIT.txt Protocol.txt Platforms.txt README-AUX.txt \
+	README-BeOS.txt RFC.txt SSL.txt Zeroconf.txt sample-ngircd.conf
 
 docdir = $(datadir)/doc/$(PACKAGE)
 documents = $(EXTRA_DIST) ../AUTHORS ../COPYING ../ChangeLog ../INSTALL \

+ 1 - 1
doc/Platforms.txt

@@ -74,4 +74,4 @@ Notes
 (3) Using the kqueue() IO interface.
 
 -- 
-$Id: Platforms.txt,v 1.14.2.2 2007/04/03 22:08:51 fw Exp $
+$Id: Platforms.txt,v 1.18 2006/10/08 14:09:16 alex Exp $

+ 49 - 3
doc/Protocol.txt

@@ -1,7 +1,7 @@
 
                      ngIRCd - Next Generation IRC Server
 
-                      (c)2001-2003 by Alexander Barton,
+                        (c)2001-2007 Alexander Barton,
                     alex@barton.de, http://www.barton.de/
 
                ngIRCd is free software and published under the
@@ -79,6 +79,9 @@ The following <serverflags> are defined at the moment:
      peer understands this flag, it will send "MODE +I" and "MODE +b"
      commands after the server link has been established.
 
+- H: The server supports the "enhanced server handshake", see section II.2
+     for a detailed description.
+
 - o: IRC operators are allowed to change channel- and channel-user-modes
      even if they aren't channel-operator of the affected channel.
 
@@ -90,7 +93,50 @@ The optional parameter <options> is used to propagate server options as
 defined in RFC 2813, section 4.1.1.
 
 
-II.2 Exchange channel-modes, topics, and persistent channels
+II.2 Enhanced Server Handshake
+
+The "enhanced server handshake" is used when both servers support this IRC+
+extension, which is indicated by the 'H' flag in the <serverflags> sent with
+the PASS command, see section II.1.
+
+It basically means, that after exchanging the PASS and SERVER commands the
+server is not registered in the network (as usual), but that IRC numerics
+are exchanged until the numeric 376 (ENDOFMOTD) is received. Afterwards the
+peer is registered in the network as with the regular IRC protocol.
+
+A server implementing the enhanced server handshake (and indicating this
+using 'H' in the <serverflags>) MUST ignore all unknown numerics to it
+silently.
+
+In addition, such a server should at least send the numeric 005 (ISUPPORT)
+to its peer, containing the following information. Syntax: <key>=<value>,
+one token per IRC parameter. If the server has to send more than 12 token
+it must send separate ISUPPORT numerics (this is a limitation of the IRC
+protocol which allows at max 15 arguments per command).
+
+ - NICKLEN: Maximum nickname length. Default: 9.
+ - CASEMAPPING: Case mapping used for nick- and channel name comparing.
+   Default: "ascii", the chars [a-z] are lowercase of [A-Z].
+ - PREFIX: List of channel modes a person can get and the respective prefix
+   a channel or nickname will get in case the person has it. The order of the
+   modes goes from most powerful to least powerful. Default: "(ov)@+"
+ - CHANTYPES: Supported channel prefixes. Default: "#".
+ - CHANMODES: List of channel modes for 4 types, separated by comma (","):
+   Mode that adds or removes a nick or address to a list, mode that changes
+   a setting (both have always has a parameter), mode that changes a setting
+   and only has a parameter when set, and mode that changes a setting and
+   never has a parameter. For example "bI,k,l,imnPst".
+ - CHANLIMIT: Maximum number of channels allowed to join by channel prefix,
+   for example "#:10".
+
+Please see <http://www.irc.org/tech_docs/005.html> for details.
+
+The information exchanged using ISUPPORT can be used to detect configuration
+incompatibilities (different maximum nick name length, for example) and
+therefore to disconnect the peer prior to registering it in the network.
+
+
+II.3 Exchange channel-modes, topics, and persistent channels
 
      Command: CHANINFO
   Parameters: <channel> +<modes> <key> <limit> [<topic>]
@@ -115,4 +161,4 @@ channel mode). In this case <limit> should be "0".
 
 
 -- 
-$Id: Protocol.txt,v 1.13 2005/08/27 19:00:06 alex Exp $
+$Id: Protocol.txt,v 1.14 2007/11/21 12:16:35 alex Exp $

+ 58