/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #include "LTextFile.h" LTextFile::LTextFile( const FSSpec& inFileSpec ): LFileStream( inFileSpec ) { } LTextFile::LTextFile(): LFileStream() { } ExceptionCode LTextFile::ReadLine( unsigned char* outBuffer, Int32& inOutByteCount, unsigned char inDelimiter ) { ParamBlockRec pb; ExceptionCode err; Int32 inCount; // ¥Êset up the pb inCount = inOutByteCount; pb.ioParam.ioRefNum = this->GetDataForkRefNum(); pb.ioParam.ioBuffer = (Ptr)outBuffer; pb.ioParam.ioReqCount = inCount; // ¥Êcr in high byte, bit 7 = newLine mode pb.ioParam.ioPosMode = ( inDelimiter << 8 ) | (0x80 | fsAtMark); pb.ioParam.ioPosOffset = 0; err = PBReadSync( &pb ); if ( err != eofErr && err != noErr ) return err; if ( err == eofErr && pb.ioParam.ioActCount == 0 ) return eofErr; inOutByteCount = pb.ioParam.ioActCount; if ( inOutByteCount == inCount ) return err_DelimiterNotRead; if ( outBuffer[ inOutByteCount - 1 ] != inDelimiter ) return err_NoEOL; return noErr; }