Hi Jason,

Sorry to bug you here again. If you know where I can find the JLine issue tracker, could you let me know? Thanks.

Until then ;) I believe I've found a bug in JLine's handling of unsupported terminals. Currently, when reading the input stream, when EOF is encountered, JLine will return empty string "". I believe it should return null in order to maintain consistency with supported terminal handling:

The current implementation:

    /**
     * Read a line for unsupported terminals.
     */
    private String readLine(final InputStream in) throws IOException {
        StringBuilder buff = new StringBuilder();

        while (true) {
            int i = in.read();

            if (i == -1 || i == '\n' || i == '\r') {
                return buff.toString();
            }

            buff.append((char) i);
        }

        // return new BufferedReader (new InputStreamReader (in)).readLine ();
    }

Should probably be updated to:



   /**
    * Read a line for unsupported terminals.
    */
   private String readLine(final InputStream in) throws IOException
   {
      StringBuilder buff = new StringBuilder();

      while (true)
      {
         int i = in.read();

         if (i == -1)
         {
            return null;
         }
         else if (i == '\n' || i == '\r')
         {
            return buff.toString();
         }

         buff.append((char) i);
      }

      // return new BufferedReader (new InputStreamReader (in)).readLine ();
   }

Also, if performance is a reason for using the StringBuilder here, why not use a static final EMPTY_STRING = ""; and return that?

The downstream issue, for reference:

https://issues.jboss.org/browse/SEAMFORGE-77

Thanks for your time.

--
Lincoln Baxter, III
http://ocpsoft.com
http://scrumshark.com
"Keep it Simple"