mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-07 19:49:23 +01:00
Fixed spell problems; stopped caching spell fds (it's not called often enough to care, or go through the trouble).
This commit is contained in:
parent
a8f31360e6
commit
28d371aeca
@ -97,10 +97,10 @@ def progstats():
|
|||||||
sys.version.translate(string.ascii, '\r\n'))
|
sys.version.translate(string.ascii, '\r\n'))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
class TimeoutError(Exception):
|
class TimeoutError(IOError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def pipeReadline(fd, timeout=0.5):
|
def pipeReadline(fd, timeout=0.75):
|
||||||
(r, _, _) = select.select([fd], [], [], timeout)
|
(r, _, _) = select.select([fd], [], [], timeout)
|
||||||
if r:
|
if r:
|
||||||
return r[0].readline()
|
return r[0].readline()
|
||||||
@ -113,19 +113,12 @@ class Unix(callbacks.Privmsg):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
callbacks.Privmsg.__init__(self)
|
callbacks.Privmsg.__init__(self)
|
||||||
# Initialize a file descriptor for the spell module.
|
# Initialize a file descriptor for the spell module.
|
||||||
spellCmd = utils.findBinaryInPath('aspell')
|
self.spellCmd = utils.findBinaryInPath('aspell')
|
||||||
if not spellCmd:
|
if not self.spellCmd:
|
||||||
spellCmd = utils.findBinaryInPath('ispell')
|
self.spellCmd = utils.findBinaryInPath('ispell')
|
||||||
(self._spellRead, self._spellWrite) = popen2.popen4([spellCmd, '-a'],0)
|
|
||||||
self._spellRead.readline() # Ignore the banner.
|
|
||||||
self.fortuneCmd = utils.findBinaryInPath('fortune')
|
self.fortuneCmd = utils.findBinaryInPath('fortune')
|
||||||
self.wtfCmd = utils.findBinaryInPath('wtf')
|
self.wtfCmd = utils.findBinaryInPath('wtf')
|
||||||
|
|
||||||
def die(self):
|
|
||||||
# close the filehandles
|
|
||||||
for h in (self._spellRead, self._spellWrite):
|
|
||||||
h.close()
|
|
||||||
|
|
||||||
def errno(self, irc, msg, args):
|
def errno(self, irc, msg, args):
|
||||||
"""<error number or code>
|
"""<error number or code>
|
||||||
|
|
||||||
@ -187,16 +180,23 @@ class Unix(callbacks.Privmsg):
|
|||||||
if ' ' in word:
|
if ' ' in word:
|
||||||
irc.error(msg, 'Spaces aren\'t allowed in the word.')
|
irc.error(msg, 'Spaces aren\'t allowed in the word.')
|
||||||
return
|
return
|
||||||
self._spellWrite.write(word)
|
|
||||||
self._spellWrite.write('\n')
|
|
||||||
try:
|
try:
|
||||||
line = pipeReadline(self._spellRead)
|
(r, w) = popen2.popen4([self.spellCmd, '-a'])
|
||||||
|
r.readline() # Banner.
|
||||||
|
w.write(word)
|
||||||
|
w.write('\n')
|
||||||
|
w.flush()
|
||||||
|
try:
|
||||||
|
line = pipeReadline(r)
|
||||||
# aspell puts extra whitespace, ignore it
|
# aspell puts extra whitespace, ignore it
|
||||||
while line == '\n':
|
while line == '\n':
|
||||||
line = pipeReadline(self._spellRead)
|
line = pipeReadline(r)
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
irc.error(msg, 'The spell command didn\'t return usefully.')
|
irc.error(msg, 'The spell command timed out.')
|
||||||
return
|
return
|
||||||
|
finally:
|
||||||
|
r.close()
|
||||||
|
w.close()
|
||||||
# parse the output
|
# parse the output
|
||||||
if line[0] in '*+':
|
if line[0] in '*+':
|
||||||
resp = '"%s" may be spelled correctly.' % word
|
resp = '"%s" may be spelled correctly.' % word
|
||||||
|
Loading…
Reference in New Issue
Block a user