]> git.mxchange.org Git - simgear.git/commitdiff
Add eof() support to SGIOChannel/SGFile.
authorcurt <curt>
Sat, 24 Sep 2005 12:28:14 +0000 (12:28 +0000)
committercurt <curt>
Sat, 24 Sep 2005 12:28:14 +0000 (12:28 +0000)
simgear/io/iochannel.cxx
simgear/io/iochannel.hxx
simgear/io/sg_file.cxx

index cc6292b310b73ccc328a4894dff34ed315398687..994aa89f4e6d3c2d56ac39851c9440bbd9ac8a49 100644 (file)
@@ -70,3 +70,9 @@ int SGIOChannel::writestring( const char *str ) {
 bool SGIOChannel::close() {
     return false;
 }
+
+
+// dummy eof routine
+bool SGIOChannel::eof() {
+    return false;
+}
index 2cfa547773862441e750aa6ee71b7d306a35a236..48c782a1e045b05d91b66c94f9b79db403c697be 100644 (file)
@@ -152,6 +152,14 @@ public:
      */
     virtual bool close();
 
+    /**
+     * The eof() method returns true if end of file has been reached
+     * in a context where that makes sense.  Otherwise it returns
+     * false.
+     * @return result of eof check
+     */
+    virtual bool eof();
+
     inline void set_type( SGChannelType t ) { type = t; }
     inline SGChannelType get_type() const { return type; }
 
index 079fefec7283dd90c54c12d991605ad7a915f050..0caf3f4a44357152ecdcc75ec275eef32f91c0c7 100644 (file)
@@ -80,7 +80,7 @@ bool SGFile::open( const SGProtocolDir d ) {
 int SGFile::read( char *buf, int length ) {
     // read a chunk
     ssize_t result = ::read( fp, buf, length );
-    if ( result == 0 ) {
+    if ( length > 0 && result == 0 ) {
         eof_flag = true;
     }
     return result;
@@ -94,7 +94,7 @@ int SGFile::readline( char *buf, int length ) {
 
     // read a chunk
     ssize_t result = ::read( fp, buf, length );
-    if ( result == 0 ) {
+    if ( length > 0 && result == 0 ) {
         eof_flag = true;
     }