don't use wxFile::Eof() (for the reasons explained in the docs now :-) in wxTextFile - this allows it to be used with FIFOs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -160,7 +160,10 @@ in the file.
|
|||||||
|
|
||||||
Note also that this function doesn't work on unseekable file descriptors
|
Note also that this function doesn't work on unseekable file descriptors
|
||||||
(examples include pipes, terminals and sockets under Unix) and an attempt to
|
(examples include pipes, terminals and sockets under Unix) and an attempt to
|
||||||
use it will result in an error message in such case.
|
use it will result in an error message in such case. So, to read the entire
|
||||||
|
file into memory, you should write a loop which uses
|
||||||
|
\helpref{Read}{wxfileread} repeatedly and tests its return condition instead
|
||||||
|
of using Eof() as this will not work for special files under Unix.
|
||||||
|
|
||||||
\membersection{wxFile::Exists}\label{wxfileexists}
|
\membersection{wxFile::Exists}\label{wxfileexists}
|
||||||
|
|
||||||
|
@@ -282,7 +282,7 @@ bool wxTextFile::Read()
|
|||||||
char ch, chLast = '\0';
|
char ch, chLast = '\0';
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
int n, nRead;
|
int n, nRead;
|
||||||
while ( !m_file.Eof() ) {
|
do {
|
||||||
nRead = m_file.Read(buf, WXSIZEOF(buf));
|
nRead = m_file.Read(buf, WXSIZEOF(buf));
|
||||||
if ( nRead == wxInvalidOffset ) {
|
if ( nRead == wxInvalidOffset ) {
|
||||||
// read error (error message already given in wxFile::Read)
|
// read error (error message already given in wxFile::Read)
|
||||||
@@ -325,7 +325,7 @@ bool wxTextFile::Read()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} while ( nRead == WXSIZEOF(buf) );
|
||||||
|
|
||||||
// anything in the last line?
|
// anything in the last line?
|
||||||
if ( !str.IsEmpty() ) {
|
if ( !str.IsEmpty() ) {
|
||||||
|
Reference in New Issue
Block a user