Changeset 10271


Ignore:
Timestamp:
10/29/05 17:57:55 (16 years ago)
Author:
piso
Message:

readLine()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/FileStream.java

    r9973 r10271  
    33 *
    44 * Copyright (C) 2004-2005 Peter Graves
    5  * $Id: FileStream.java,v 1.26 2005-09-14 19:55:12 piso Exp $
     5 * $Id: FileStream.java,v 1.27 2005-10-29 17:57:55 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    172172        // element type of the stream."
    173173        return number(length / bytesPerUnit);
     174    }
     175
     176    public LispObject readLine(boolean eofError, LispObject eofValue)
     177        throws ConditionThrowable
     178    {
     179        if (inputBuffer != null) {
     180            final LispThread thread = LispThread.currentThread();
     181            final FastStringBuffer sb = new FastStringBuffer();
     182            while (true) {
     183                if (inputBufferOffset >= inputBufferCount) {
     184                    fillInputBuffer();
     185                    if (inputBufferCount < 0) {
     186                        // End of file.
     187                        if (sb.length() == 0) {
     188                            if (eofError)
     189                                return signal(new EndOfFile(this));
     190                            return thread.setValues(eofValue, T);
     191                        }
     192                        return thread.setValues(new SimpleString(sb), T);
     193                    }
     194                }
     195                char c = (char) inputBuffer[inputBufferOffset++];
     196                if (c == '\n')
     197                    return thread.setValues(new SimpleString(sb), NIL);
     198                else
     199                    sb.append(c);
     200            }
     201        } else
     202            return super.readLine(eofError, eofValue);
    174203    }
    175204
Note: See TracChangeset for help on using the changeset viewer.