Author: allison
Date: Sat Dec 27 23:01:50 2008
New Revision: 34469
Modified:
branches/pdd22io_part3/src/io/api.c
branches/pdd22io_part3/src/pmc/filehandle.pmc
Log:
[pdd22io] Invert the test for 'eof' so public interface calls a method on the
filehandle object.
Modified: branches/pdd22io_part3/src/io/api.c
==============================================================================
--- branches/pdd22io_part3/src/io/api.c (original)
+++ branches/pdd22io_part3/src/io/api.c Sat Dec 27 23:01:50 2008
@@ -339,13 +339,18 @@
INTVAL
Parrot_io_eof(PARROT_INTERP, ARGMOD(PMC *pmc))
{
+ INTVAL result;
+
/* io could be null here, but rather than return a negative error
* we just fake EOF since eof test is usually in a boolean context.
*/
- if (PMC_IS_NULL(pmc) || Parrot_io_is_closed(interp, pmc))
+ if (PMC_IS_NULL(pmc))
return 1;
- return (Parrot_io_get_flags(interp, pmc) & (PIO_F_EOF)) ? 1 : 0;
+ Parrot_PCCINVOKE(interp, pmc, CONST_STRING(interp, "eof"), "->I",
+ &result);
+
+ return result;
}
Modified: branches/pdd22io_part3/src/pmc/filehandle.pmc
==============================================================================
--- branches/pdd22io_part3/src/pmc/filehandle.pmc (original)
+++ branches/pdd22io_part3/src/pmc/filehandle.pmc Sat Dec 27 23:01:50 2008
@@ -654,7 +654,12 @@
*/
METHOD eof() {
- if (Parrot_io_eof(INTERP, SELF))
+ INTVAL flags;
+ if (Parrot_io_is_closed_filehandle(interp, SELF))
+ RETURN(INTVAL 1);
+
+ GET_ATTR_flags(INTERP, SELF, flags);
+ if (flags & PIO_F_EOF)
RETURN(INTVAL 1);
RETURN(INTVAL 0);