cpitchford12.1:	Thu May 23 17:08:48 BST 2002	cpitchford
	*	Updated admin.c: Fixed userinput_parse. ADSEND line
		had one less member. a '" , "' was missing.

cpitchfor12:	Wed May 22 15:59:25 BST 2002	cpitchford 
	*	New Features: emote, custom  advert control "advert", nick
	*	Fixed: utilities.c, globals.h, headers.h, admin.c: Floating
		and byte types of printfdata lost strings and divisors.
	*	Added admin.c: Added adv_* functions to control manipulation
		of adverts. Added userinput_parse structures to give a
		whole new advert root command. Advert add, advert clear and
		so on are defined in this way
	*	Added admin.c: Added u_fillwith_u constructs a copy of a
		userinput_t structure setting the cmd as the arg1 of the
		original using the getparts function. This allows a command
		to call u_parseitgeneric to give a whole new command set
	*	Added utilities.c: Added getparts function. It works in the
		same way as getpart except it will return to the end of the
		line. Will be used to calculate arg2e and such like.
	*	Updated admin.c: moved the cmd executing functions out of
		u_parseit into u_parseitgeneric and made u_parseit a call to
		u_parseitgeneric. This will enable completely new cmd sets
		being created from a different userinput_parse object.
	*	Fixed admin.c: Added checking to u_add to prevent anything
		but a regular file (or symlink to a regular file) to the
		pack list (as pointed by FarFetch)
	*	Updated admin.c: Moved help code out of u_help and into
		u_sendhelp which will send all the help information from a
		certain help_section of a userinput_parse_t object
	*	Updated admin.c: userinput_parse is now terminated with a
		NULL entry where help_section=-1. u_parseit now checks for
		help_section=-1 to know when the end of the list is reached.
	*	Updated admin.c: u_parseit now strcasecmp's cmd rather than
		strcmp to enable admin commands to be mixed case
	*	Added admin.c: Added changenick function to change the
		bot's nick.
	*	Added defines.h, misc.h: Added MAXNICKLENGTH to limit the
		length of a usernick when changing the bots nick
	*	Updated admin.c: Added emote admin command which gives the
		same functionality as /me
	*	Added utilities.c: Added privemote function, same as
		privmsg but issues an action as per /me or /describe
	*	Updated admin.c: Updated help information for limitdata and
		instasend
	*	Updated admin.c: Updated make_advert code to use the new
		printfdata code. Structures are created once when first
		called
	*	Updated utilities.c: Replaced the simpleformat code with the
		printfdata code.  Now the code that parses the custom tags
		and the string rendering code has been split into two
		functions. initprintfdata constructs a structure containing
		% tag definitions and renderprintfdata constructs the result
		using this structure Also included is the ability to
		reference pointers so printfdata structures do not required
		reconstructing as data changes. This is indicated as a "*"
	*	Updated ALL: Changed float to flpt. It seems that va_arg
		does not work correctly with float under GLIBC2.2.5, though
		double works. In defines.h flpt is defined as double.

cpitchfor11.6:  Thu May 16 17:30:00 MDT 2002    Gorthog
 	*	Added instasend <size> config/admin option.
 		And pack <= size (in bytes) will be instantly sent
 		regardless of maxtransferperperson, maxslots, or bandwidth
 		limits, however limit data is still observed.
 	*	iroffer now clears the server message queue when it connects
 		to an irc server.
 	*	Fixed upload (to iroffer) performance and potential socket
 		blocking.
 	*	Changed lowbdwth check frequency from 180 seconds to 60 seconds.
 	*	Fixed upload file mangling to no longer convert [ and ] to _


cpitchfor11:	Wed Apr  3 20:37:38 BST 2002	cpitchford
	*	Updated misc.c admin.c: Changed Humiliate directive
		Now it must have the paramter nolist or badpack to specify
		which humiliate it refers to.
	*	Updated utilities.c: Added simpleformat function
		takes a list of paramters and works like snprintf replacing
		defined tags (ie %g) with numbers, strings, numbers followed
		by a word with auto plural (%m means 1 minute or 2 minutes)
		or a quantity that is reduced with engineering values
		1024 B goes to 1KB. This will replace the humiliate code
		and the custom advert code
	*	Updated utilities.c global.c defines.c: Added badpack
		structure to gdata. It contains the list of people who
		requested an invalid pack in a sliding window mechanism. If
		the total in the first slot plus total in second slot are
		greater than the limit, they are banned. Each half interval,
		the first slot is moved to the second and then blanked.  A
		function badpackadd will attempt to add a host to the list
		and return true if they have reached their limit (ie to be
		banned) and badpackrotate will "rotate" the list as
		necessary or by force
	*	Updated admin.c: Implemented BADPACK, BDPKLMT admin commands
		to control the badpack ban on invalid request function. 
		BADPACK controls how long the monitoring is enabled for and
		how long the users will be banned, BDPKLMT controls the limits (ie how many invalid
		requests are required in what time before a ban is made)
	*	Updated misc.c: Implemented badpack configfile param
		to default the badpack control, much like the nolist
		directive

cpitchfor10:	Thu Mar 21 23:33:22 GMT 2002	cpitchford	
	*	Updated misc.c, defines.h, globals.h: added prejoin config	
		file option to send a RAW command before joining any
		channels. This will allow nicksrv commands to be sent for
		IRC services such as those on DALNet. Thanks to
		coombes_mark@hotmail.com for suggestion and DALNet help
	*	bugfixed misc.c: config file parsing would allow
		gdata.server[MAXSRVS] to be defined in the event there were
		MAXSRVS+1 servers defined in the config file. This has been
		limited and an error returned.
	*	bugfixed misc.c: same as above but for gdata.advert

cpitchfor9:	Wed Mar  6 01:47:46 GMT 2002	cpitchford
	*	Updated admin.c u_psend so it will set the nolisttime to
		zero before calling u_xdl otherwise it is not possible to
		force a list to be sent to all the channels
	*	Updated admin.c to include say admin command to talk to
		a user or a channel

cpitchfor8:	Wed Feb 27 03:00:30 GMT 2002	cpitchford
	*	Moved the "timed advert" code from iroffer.c into
		sendAdvert() in admin.c since it is required elsewhere now
	*	Added fullignore() function to admin.c which will ignore
		user/hostname if the fullignoretime is set
	*	Added fullignore support to misc.c and admin.c
		takes mins as an argument. Enfoced by fullignore
	*	added calls to fullignore to queue full notices in iroffer.c
	*	added adsend function to send adverts to channel or all
		channels using sendAdvert
	*	Added Adverts to admin.c to enable control over auto-advert
		sends
	*	Added noaverts configfile directive to misc.c
	*	Fixed bug in getEngineerval() in utilities.c whereby
		last char is ignored in quantifier array.

cpitchfor7:	Tue Feb 12 22:56:54 GMT 2002	cpitchford
	*	Fixed bug with advert rehash causing it to only use last
		advert line in config file.


cpitchfor6:	Tue Feb 12 02:01:35 GMT 2002	cpitchford
	*	%l has been added to the list of tags for the advert
		directive. It will be replaced with the minimum speed

	*	Added "on" option to NOLIST admin command.. "on" will enable
		NOLIST indefinitely until NOLIST is called again
		with either zero or a number of minutes

	*	Added "nolist" config file directives, which will disable
		listing indefinitely or until nolist admin command is
		issued to cancel nolist. It also takes an optional 
		parameter of "-q" to drop list requests silently
		or of m where it will auto-ban any user for m minutes
		should they make a list request to the bot, in the same
		way as the NOLIST admin command

	*	Fixed a BUG in admin.c: void getconfig_set. If line
		in the configuration file has no parameters (e.g. 
		"nolist" the "var" and "var2" variables faced a buffer
		overrun situation, as they are assigned after the
		terminating NULL character and hence a configfile
		with a single word on it could potentially lead to
		a buffer overrun and a SEGV death. This is a bug in
		iroffer, this patch fixes it.

	*	Added configuration directives "speedwarnings" and 
		"nospeedwarnings". These two directives turn off the
		warnings notices sent to users when they reach bandwidth
		limits

	*	Added SPDWRN admin command with parameter + or - This
		command turns off the notifications that are sent to a user
		when they reach bandwidth limits


cpitchfor5:		cpitchfor
	*	%i was added to the humiliate list of replace tags. This
		will be replaced in the string with the number of
		minutes the user has been ignored for.


cpitchfor4:		cpitchfor
	*	Humiliate config file directive and admin command was
		added. Like advert it takes a printf style string
		in which %u is replaced with the username of a user
		who has just been auto-banned.

	*	"public" and "nopublic" config file directives were
		added to allow the ability to control how the bot
		responds to public triggers

	*	the ignore admin command now accepts network ranges
		in the form of strings starting with "*"
		A hostname is checked to see if it ends with a network
		range (excluding the prefixing *) to determine
		a match
	*	!strcmp was replaced with isbanned to determine
		if a hostname matched an ignore entry to ensure
		network ranges are catered for


cpitchfor3:		cpitchfor
	*	When a user was banned public triggers failed. This was
		fixed

	*	advert lines were silently unlinked and therefore caused
		memory leaks. (Thanks to FarFetch'd for fix)

	*	Files were not closed after finished reading. This is
		an actual bug in iroffer. This patch fixes it.
		(Thanks to FarFetch'd for fix)


cpitchfor2:		cpitchfor
	*	PUBLIC admin command added to toggle whether the bot will
		respond to public messages, and public triggers (/CTCP)
		using the admin command PUBLIC <+|->


cpitchfor1:		cpitchfor
	*	Altered NOLIST function to admin commands.
		NOLIST now accepts two parameters. first still specifies
		how long list is disabled, second new parameter specifies
		that the list requests should be silently dropped "-q"
		or the number of minutes to ignore a user after making
		a list request. Quiet and banning NOLIST commands will
		also drop the list command without queuing it for
		processing.

	* 	Added config file directive for custom adverts
		Advert when used (multiple times also) will define
		a printf like template for the advert sent out to 
		channels with the -advert option enabled.
		The advert is created from the advert lines in the config
		file in the order they appear.
		% was chosen as the escape character. The flag letter
		was taken from the /ctcp status option as mentioned
		on the iroffer documentation
