Commit Graph

3237 Commits

Author SHA1 Message Date
Daniel Folkinshteyn
fb8d0d320a fix alias bug https://sourceforge.net/tracker/?func=detail&aid=2987147&group_id=58965&atid=489447
add tests for appropriate behavior

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 8d64d08645)
2010-08-24 19:45:48 -04:00
James Vega
7869b962d1 Fix the previous Factoids fix.
channel needs to be part of the args list.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit fe07ea1146)
2010-08-24 19:44:56 -04:00
James Vega
b2c45caa66 Factoids: Pass channel to whatis when being called from search
Thanks to Daniel Folkinshteyn for the fix.

Closes: Sf#2965589

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 209facd242)
2010-08-24 19:44:45 -04:00
James Vega
be9128b3ec Internet: Use whois-servers.net for all whois lookups.
rs.internic.net seems to be broken and using $tld.whois-servers.net looks to
be working for everything.

Also need to update the line termination string to use '\r\n' instead of '\n'
since some servers are strict about receiving the former.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 397cbbe0d3)
2010-08-24 19:44:18 -04:00
James Vega
8d94ff743c Include hostmasks in JOIN, PART, QUIT logs.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 4a9596608a)
2010-08-24 19:44:10 -04:00
James Vega
0933621dab Factoids: Prevent empty key or value when adding a factoid.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 10f5a12b7e)
2010-08-24 19:43:56 -04:00
James Vega
455b5631bc Update plugins to ignore all non-ACTION CTCP messages.
Also update commands.urlSnarfer to do the same, which allows us to revert
"Don't bother snarfing URLs from non-Action CTCP messages."

This reverts commit 3282e3407e.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 288d7c6e02)
2010-08-24 19:42:11 -04:00
Jeremy Fincher
e2cafb2e3d Don't bother snarfing URLs from non-Action CTCP messages.
(cherry picked from commit 3282e3407e)
2010-08-24 19:41:49 -04:00
James Vega
f35e68cd65 Network: Properly parse WHOIS response
The 319 message that indicates which channel(s) a user is in prefix the
channel name with the modes (@, +, !, etc.) applied to that user.  These need
to be stripped from the channel name before we feed it to
irc.state.channels.get(), otherwise when irc.state.channels.get() returns None
we assume the channel can't be private and leak information.
(cherry picked from commit 408ab6f88a)
2010-08-24 19:41:30 -04:00
James Vega
afb4e1e07f Use 0 when no results are returned for Google.fight
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 3689460d0f)
2010-08-24 19:40:54 -04:00
James Vega
a7c924b466 Switch from using the various popen flavors to subprocess.Popen
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit fbdc44ca52)
2010-08-24 19:40:23 -04:00
James Vega
c53f8cd510 Rename Owner.log to Owner.logmark
Since every plugin has a log method (to do actual logging), the log command
was conflicting with that.  The attempted workaround was overly complicated
and broken.  Simply renaming the command to logmark simplifies everything.

Closes Sf #2889709

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit acaa9b1fd6)
2010-08-24 19:21:58 -04:00
James Vega
0bd9a8b6f4 Use the correct URLs for the PySqlite website.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 927c8c963a)
2010-08-24 19:15:27 -04:00
James Vega
dcdbd5bea4 Update references to PySqlite URL
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit f475525237)
2010-08-24 19:15:17 -04:00
James Vega
f0852a9e45 utils.web: Provide access to the raw httpUrlRe/urlRe strings
Using the compiled regexps for a PluginRegexp method's __doc__ doesn't work.

Closes Sourceforge #2879862

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 25fc2de643)
2010-08-24 19:14:58 -04:00
James Vega
bb4e09886a Use utils.web.httpUrlRe for the Web/ShrinkUrl snarfer regexes.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit ca917d3528)
2010-08-24 19:14:36 -04:00
Benjamin P. Burhans
750fb2ccdc Check for empty word list in BadWords plugin before filtering.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 6418b3d8c3)
2010-08-24 19:13:09 -04:00
Štěpán Němec
bc1c159d27 QuoteGrabs plugin: Add an `ungrab' command.
Also add a missing error check in the `list' db method.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit e922918564)
2010-08-24 19:09:43 -04:00
Štěpán Němec
4cc8fdecdc Note plugin: Fix erroneous use of __contributors__.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit a693162059)
2010-08-24 19:03:27 -04:00
James Vega
6bebc383b4 ChannelStats.rank now starts from 1 instead of 0
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 169aee3bc0)
2010-08-24 19:02:58 -04:00
James Vega
885d60a132 QuoteGrabs: QuoteGrabsRecord at arg needs to be an int.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit cbf68e53e3)
2010-08-24 19:02:05 -04:00
James Vega
d43d083f44 User: getHostmasks should always return a string
Since it was calling irc.reply() in one case, we had both that irc.reply being
sent and the irc.reply() of what getHostmasks returned (None in that case).
Bad!

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit dcb247494e)
2010-08-24 19:01:55 -04:00
James Vega
965f4e79b8 User: Fix hostmask.list to show the user's name not the repr user object
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 9dccada152)
2010-08-24 19:01:44 -04:00
James Vega
7aeedea6f6 Updated ChannelIdDatabasePlugin's getCommandHelp signature
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit c9329303d3)
2010-08-24 19:01:26 -04:00
James Vega
26cefc78f4 Channel: alert should not require the caller to have op capability
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit ba29f0787c)
2010-08-24 19:01:12 -04:00
James Vega
2b0b74dfe0 Google: Keep the list of supported languages in one place.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 461f943d97)
2010-08-24 19:01:00 -04:00
James Vega
65a180798f QuoteGrabs: Fix incorrect argument order to _grab
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 874508867f)
2010-08-24 19:00:34 -04:00
Ricky Zhou
4eb30069bf Try using simplejson instead if json-py is installed.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
(cherry picked from commit 416a6e8dd2)
2010-08-24 19:00:14 -04:00
James Vega
3090cffe2c Include String plugin for Utilities' tests.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-07-11 11:04:33 -04:00
James Vega
0bfa0d153c ShrinkUrl: Add serviceRotation config.
When configured, the outFilter and shrinkSnarfer use cycle through
serviceRotation's list of services.  Otherwise, the default service is used.

Closes: deb#539858

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-07-11 10:47:37 -04:00
James Vega
acffde68ab Services: Don't filter outgoing JOIN messages on disabled networks
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-27 19:48:36 -04:00
James Vega
0c62204809 Use conf.registerGlobalValue to ensure generated values are properly setup.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-24 00:37:40 -04:00
James Vega
c10d964604 Elide ignored replies from nested command output.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-24 00:33:04 -04:00
James Vega
d78f7b6ac5 Services: Properly register the NickServ.password group and child values.
Closes: Sf#3019174

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-21 19:35:35 -04:00
James Vega
f926804f40 Services: Fix conflict with callbacks.Commands.isDisabled
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-19 22:38:27 -04:00
Daniel Folkinshteyn
432228c736 fix google calc to work when doing a currency conversion.
made the calcre more generic, so it finds stuff on both math and currency.
nothing a little exploration of google html page source couldn't solve.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-19 18:01:38 -04:00
Daniel Folkinshteyn
8daebd1240 make Misc.apropos return plugin name even if command is in only one plugin.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-19 17:20:20 -04:00
James Vega
9e73f4482c Services: Disable most of the plugin on networks in the disabled list.
Notify the user when trying to use the commands on a disabled network, ignore
noJoinsUntilIdentified, and don't try communicating with services.

Closes: Sf#3018464

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-06-19 16:59:13 -04:00
James Vega
57e894de58 Anonymous: Implement support for allowPrivateTarget config.
Closes: Sf#2991515

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-24 15:21:58 -04:00
Daniel Folkinshteyn
40941e044a fix bug in RSS.announce.list:
Because the 'channel' argument was declared optional, calling announce.list
off-channel without a channel argument caused an error.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-24 14:46:04 -04:00
James Vega
5ccb242657 Re-add re import since capability-checking code relies on it.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-15 21:55:05 -04:00
Štěpán Němec
18ef6dadfc Topic plugin: Restore topic automatically after join if not set.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-11 18:23:33 -04:00
Štěpán Němec
6520d1f282 Topic plugin: Add persistence support.
Topics now persist between restarts.

Rationale: Useful when reloading/restarting; previously the topics would
be just forgotten. Don't use database, as that would be an unnecessary
overkill and in any case not needed.

(Also, remove the unused `re' module import.)

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-11 18:22:37 -04:00
James Vega
41fd218b8d ChannelStats: Fix rank to work with selfStats
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-05-11 17:50:43 -04:00
Daniel Folkinshteyn
814d89e200 topic now checks for +t mode before denying topic changes, and also allows halfops in addition to ops.
default required capabilities for topic changes (if topic is +t and user is not an op or halfop), are chan,op and chan,halfop
thanks jemfinch for the suggestions.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-14 22:57:01 -04:00
Daniel Folkinshteyn
063dd24677 change Topic to have a default required capability set, for all write operations.
by default, now only allows chanops, and users with admin or channel,op capability to change topics

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-14 22:56:52 -04:00
Daniel Folkinshteyn
f880037e41 for Alias, make doc string say "at least x args" if there are optional args in addition to required args.
yay for cosmetic improvements. :)

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-14 22:29:58 -04:00
Daniel Folkinshteyn
8d64d08645 fix alias bug https://sourceforge.net/tracker/?func=detail&aid=2987147&group_id=58965&atid=489447
add tests for appropriate behavior

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-14 22:25:40 -04:00
James Vega
fe07ea1146 Fix the previous Factoids fix.
channel needs to be part of the args list.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-11 11:04:45 -04:00
James Vega
209facd242 Factoids: Pass channel to whatis when being called from search
Thanks to Daniel Folkinshteyn for the fix.

Closes: Sf#2965589

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-04-11 10:36:55 -04:00
James Vega
397cbbe0d3 Internet: Use whois-servers.net for all whois lookups.
rs.internic.net seems to be broken and using $tld.whois-servers.net looks to
be working for everything.

Also need to update the line termination string to use '\r\n' instead of '\n'
since some servers are strict about receiving the former.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-03-03 08:33:44 -05:00
James Vega
4a9596608a Include hostmasks in JOIN, PART, QUIT logs.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-02-28 21:17:35 -05:00
James Vega
10f5a12b7e Factoids: Prevent empty key or value when adding a factoid.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-02-05 18:50:48 -05:00
James Vega
288d7c6e02 Update plugins to ignore all non-ACTION CTCP messages.
Also update commands.urlSnarfer to do the same, which allows us to revert
"Don't bother snarfing URLs from non-Action CTCP messages."

This reverts commit 3282e3407e.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-01-28 08:14:44 -05:00
Jeremy Fincher
3282e3407e Don't bother snarfing URLs from non-Action CTCP messages. 2010-01-28 06:35:53 -06:00
Štěpán Němec
9e15d03375 Filter plugin: improve the `uniud' replacements.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-01-27 19:01:54 -05:00
Štěpán Němec
3a992ba78e Format plugin: Delete stray `configure' definition from plugin.py.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2010-01-15 21:57:07 -05:00
James Vega
408ab6f88a Network: Properly parse WHOIS response
The 319 message that indicates which channel(s) a user is in prefix the
channel name with the modes (@, +, !, etc.) applied to that user.  These need
to be stripped from the channel name before we feed it to
irc.state.channels.get(), otherwise when irc.state.channels.get() returns None
we assume the channel can't be private and leak information.
2010-01-10 20:17:10 -05:00
James Vega
3689460d0f Use 0 when no results are returned for Google.fight
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-11-28 21:21:00 -05:00
James Vega
fbdc44ca52 Switch from using the various popen flavors to subprocess.Popen
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-11-22 14:31:58 -05:00
hairball
a594d0e95c Small typos and doc fixes.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-11-04 22:54:46 -05:00
James Vega
a453f56284 ShrinkUrl: Use tinyurl's api-create page to avoid screen-scraping.
Set snarfThrottle to 0 while testing since we know there's nothing other than
the test input that could be causing us to snarf.  Fixes some intermittent
test failures due to fast snarf responses.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-11-04 22:37:53 -05:00
James Vega
082ee59d32 Change a couple tests so they fail for real reasons instead of fake.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-11-01 19:08:34 -05:00
James Vega
acaa9b1fd6 Rename Owner.log to Owner.logmark
Since every plugin has a log method (to do actual logging), the log command
was conflicting with that.  The attempted workaround was overly complicated
and broken.  Simply renaming the command to logmark simplifies everything.

Closes Sf #2889709

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-31 18:22:14 -04:00
James Vega
213d304e54 ChannelStats: Add tracking of max users for a channel.
Closes Sf #1032038

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-27 19:28:34 -04:00
James Vega
927c8c963a Use the correct URLs for the PySqlite website.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-21 22:48:04 -04:00
James Vega
f475525237 Update references to PySqlite URL
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-21 22:43:26 -04:00
James Vega
4c9efc044b Replace Factoids.factoidPrefix with Factoids.format
Factoids.format makes use of registry.TemplatedString so the user can specify
excactly how they want the factoid reply to be formed.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-15 22:37:59 -04:00
James Vega
5af38453a8 Update Topic to use registry.TemplatedString
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-15 22:35:17 -04:00
James Vega
25fc2de643 utils.web: Provide access to the raw httpUrlRe/urlRe strings
Using the compiled regexps for a PluginRegexp method's __doc__ doesn't work.

Closes Sourceforge #2879862

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-15 22:16:38 -04:00
James Vega
c4de386d8f ShrinkUrl: Remove our 'lazy biotch' message and length check.
If someone wants to specifically request that a URL, which can't possibly be
made shorter using a specific service, be shrunk, we should abide their
request.
2009-10-08 23:14:42 -04:00
James Vega
de4218b26e ShrinkUrl: Add support for x0.no 2009-10-08 22:58:57 -04:00
James Vega
d8c13c1f21 Rewrite ShrinkUrl's tests to ease testing of new services.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-08 22:28:02 -04:00
James Vega
924b57eca3 ShrinkUrl: Lower snarfThrottle to .5 second while testing.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-04 23:30:08 -04:00
James Vega
9d66399420 ShrinkUrl: Add support for xrl.us
Closes one part of Debian #539858

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-04 23:30:02 -04:00
James Vega
200f716011 ShrinkUrl: Uniformly handle errors while shrinking via ShrinkError.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-04 22:08:55 -04:00
James Vega
c055b16ea8 ShrinkUrl: Use getattr() to simplify use of the growing number of services.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-04 21:54:20 -04:00
James Vega
ca917d3528 Use utils.web.httpUrlRe for the Web/ShrinkUrl snarfer regexes.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-10-04 21:41:05 -04:00
James Vega
22b3ccfbde ShrinkUrl: Generalize CdbShrunkenUrlDB's support for the different dbs.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-09-29 20:11:47 -04:00
Benjamin P. Burhans
6418b3d8c3 Check for empty word list in BadWords plugin before filtering.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-09-16 01:20:52 -04:00
James Vega
28b4b4742e Correct Unix.fortune.offensive's description to use -a.
Closes deb#545780

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-09-09 07:49:17 -04:00
James Vega
eff20402ac Change canonize => normalize
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-08-27 16:41:34 -04:00
Štěpán Němec
e922918564 QuoteGrabs plugin: Add an `ungrab' command.
Also add a missing error check in the `list' db method.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-08-27 14:47:09 -04:00
Štěpán Němec
a66034f852 Fix some typos/wordings.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-08-26 16:34:12 -04:00
Štěpán Němec
a693162059 Note plugin: Fix erroneous use of __contributors__.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-08-26 15:43:10 -04:00
James Vega
169aee3bc0 ChannelStats.rank now starts from 1 instead of 0
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-08-20 10:48:41 -04:00
James Vega
c376b8e796 Channel: Allow kick to accept multiple nicks.
Closes: Sf patch #1813467

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-07-20 18:08:21 -04:00
James Vega
cbf68e53e3 QuoteGrabs: QuoteGrabsRecord at arg needs to be an int.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-07-18 20:27:45 -04:00
James Vega
dcb247494e User: getHostmasks should always return a string
Since it was calling irc.reply() in one case, we had both that irc.reply being
sent and the irc.reply() of what getHostmasks returned (None in that case).
Bad!

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-07-16 11:39:20 -04:00
James Vega
9dccada152 User: Fix hostmask.list to show the user's name not the repr user object
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-07-16 11:28:43 -04:00
James Vega
c9329303d3 Updated ChannelIdDatabasePlugin's getCommandHelp signature
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-07-14 20:32:57 -04:00
Jeremy Fincher
43129239d6 Added Seen.since, which lets a user see messages which were sent since the last time he parted a channel. 2009-07-01 15:40:58 -05:00
James Vega
ba29f0787c Channel: alert should not require the caller to have op capability
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-06-30 11:06:17 -04:00
James Vega
461f943d97 Google: Keep the list of supported languages in one place.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-06-26 18:21:16 -04:00
James Vega
874508867f QuoteGrabs: Fix incorrect argument order to _grab
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-06-26 16:58:46 -04:00
Jeremy Fincher
b9d6277e30 Added supybot.abuse.flood.command.invalid.notify, a configuration variable determining whether the bot will notify infractors of their ignoring. 2009-06-09 10:40:05 -05:00
Ricky Zhou
416a6e8dd2 Try using simplejson instead if json-py is installed.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-06-03 04:28:45 -04:00
James Vega
afa49be456 Channel: Chunk mass mode changes according to supported['MODES']
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-05-25 10:38:49 -04:00
James Vega
b644e30bb6 Channel: Fix test failures from making ignores and bans use banmask
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-05-25 10:00:51 -04:00
James Vega
8bd37dbff7 Channel: Don't let nicks leak private info.
Signed-off-by: James Vega <jamessan@users.sourceforge.net>
2009-05-25 00:30:13 -04:00