       lgets fileId ?varName?
              Reads  the  next  Tcl  list  from the file given by
              fileId  and  discards   the   terminating   newline
              character.   This  command  differs  from  the gets
              command, in that it reads  Tcl  lists  rather  than
              lines.   If  the  list  contains newlines or binary
              data, then that newline or bytes of  zero  will  be
              returned as part of the result.  Only a newline not
              quoted as part of the list indicates the end of the
              list.    There  is  no  corresponding  command  for
              outputting lists, as puts will do this correctly.

              If varName is specified, then the line is placed in
              the variable by that name and the return value is a
              count  of  the  number  of  characters  read   (not
              including  the newline).  If the end of the file is
              reached before reading any characters  then  -1  is
              returned and varName is set to an empty string.  If
              varName is specified and an error occurs, what ever
              data  was  read  will  be returned in the variable,
              however the resulting string may  not  be  a  valid
              list.

              If  varName  is not specified then the return value
              will be the line (minus the newline  character)  or
              an  empty  string if the end of the file is reached
              before reading any  characters.   An  empty  string
              will  also  be  returned  if  a  line  contains  no
              characters except the newline, so eof may  have  to
              be used to determine what really happened.

              The  lgets  command  maybe  used  to read and write
              lists containing binary data,  however  translation
              must be set to lf or the data maybe corrupted.

              If  lgets  is  currently  supported on non-blocking
              files.
