news@caen.engin.umich.edu (CAEN Netnews) (02/04/90)
Hi, I am working on a project that uses a TI Explorer and a Mac to communicate with an external device (a robot) and for that I had to implement my own serial IO interface on the Mac (in MACL). When doing that I found out that the TI, when reading a line from the serial port with read-line, consumes the character #\Newline and also the character #\Linefeed that follows it. The Mac's read-line, on the other hand, doesn't. The definition of the function read-line is to read until a #\Newline is encountered. My question is, what is happening on the TI behind the scenes that causes the #\Linefeed to be consumed? Is the definition of the read-line function on the TI different than on the Mac? Thanks,
mvm@FRLRI61.BITNET (02/05/90)
#\newline is not a real character but something that behaves differently depending on your operating system. Some operating systems recognize end-of-line as two characters (for example carriage-return and linefeed) while some others recognize end-of-line as a single character (linefeed). #newline is the standard CL kludge because of this lack of standards for end-of-lines. In other word, as far as EOL is concerned, the same datafile can be read differently by the same CL code on two different operating systems.
snicoud@ATC.BOEING.COM (Stephen Nicoud) (02/06/90)
Date: 3 Feb 90 21:46:00 GMT From: mailrus!umich!caen.engin.umich.edu!news@tut.cis.ohio-state.edu (CAEN Netnews) Hi, I am working on a project that uses a TI Explorer and a Mac to communicate with an external device (a robot) and for that I had to implement my own serial IO interface on the Mac (in MACL). When doing that I found out that the TI, when reading a line from the serial port with read-line, consumes the character #\Newline and also the character #\Linefeed that follows it. The Mac's read-line, on the other hand, doesn't. The definition of the function read-line is to read until a #\Newline is encountered. My question is, what is happening on the TI behind the scenes that causes the #\Linefeed to be consumed? Is the definition of the read-line function on the TI different than on the Mac? Thanks, Hmmm. READ-LINE should behave as you want (i.e., not consuming the #\linefeed). Take a look at this variable in the SYSTEM package: ;; From SYS:BASIC-FILE;STREAM.LISP#> (defvar *new-line-delimiter* '(#\newline)) ;Define the delimiters that may seperate lines. Some FTP implements ; will use the linefeed. This will allow FTP to redefine this variable to ; suit its application. Verify that the :LINE-IN method on the serial stream consults this variable and that its value is indeed only '(#\newline) and not '(#\linefeed).