GNU bug report logs -
#6800
23.1; EOT / ^D inserted into comint input string
Previous Next
Reported by: David Fox <ddssff <at> gmail.com>
Date: Thu, 5 Aug 2010 15:14:02 UTC
Severity: normal
Merged with 7078
Found in versions 23.1, 24.0.50, 24.0.90
Done: David Fox <ddssff <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
When an input longer than 255 characters is typed into comint (or
shell) an EOT character (ascii 4, ^D) is inserted into the string.
This can cause an error depending how the sub process handles these
extra characters. For example, GHC doesn't like it when an EOT
appears inside of a string:
ghci
> Prelude> putStrLn "<a 241 character string>"
works fine, but
> Prelude> putStrLn "<a 242 character string>"
<interactive>:1:255: lexical error at character '\EOT'
I inserted a function to break up the input into comint-send-string to work
around the problem:
(require 'comint)
(defun comint-send-string (process string)
"Like `process-send-string', but also does extra bookkeeping for Comint
mode."
(if process
(with-current-buffer (if (processp process)
(process-buffer process)
(get-buffer process))
(comint-snapshot-last-prompt))
(comint-snapshot-last-prompt))
(my-process-send-string process string))
;; Break up the string so that we don't get EOT characters in our input
stream.
(defun my-process-send-string (process string)
(if (> (length string) 200)
(progn (process-send-string process (substring string 0 200))
(my-process-send-string process (substring string 200)))
(process-send-string process string)))
[Message part 2 (text/html, inline)]
This bug report was last modified 8 years and 286 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.