Re-introduce pure-Perl fall-back for abs_path,
[p5sagit/p5-mst-13.2.git] / perlio.c
index e20563a..549a187 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -426,7 +426,7 @@ PerlIO_list_push(PerlIO_list_t *list,PerlIO_funcs *funcs,SV *arg)
 
 
 void
-PerlIO_cleanup_layers(pTHXo_ void *data)
+PerlIO_cleanup_layers(pTHX_ void *data)
 {
 #if 0
  PerlIO_known_layers = Nullhv;
@@ -504,7 +504,7 @@ PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load)
  for (i=0; i < PerlIO_known_layers->cur; i++)
   {
    PerlIO_funcs *f = PerlIO_known_layers->array[i].funcs;
-   if (strEQ(f->name,name))
+   if (memEQ(f->name,name,len))
     {
      PerlIO_debug("%.*s => %p\n",(int)len,name,f);
      return f;
@@ -771,7 +771,7 @@ PerlIO_default_layers(pTHX)
    PerlIO_funcs *osLayer = &PerlIO_unix;
    PerlIO_def_layerlist  = PerlIO_list_alloc();
    PerlIO_define_layer(aTHX_ &PerlIO_unix);
-#ifdef WIN32
+#if defined(WIN32) && !defined(UNDER_CE)
    PerlIO_define_layer(aTHX_ &PerlIO_win32);
 #if 0
    osLayer = &PerlIO_win32;
@@ -1968,7 +1968,10 @@ PerlIOUnix_pushed(PerlIO *f, const char *mode, SV *arg)
   {
    PerlIOUnix *s = PerlIOSelf(f,PerlIOUnix);
    s->fd     = PerlIO_fileno(PerlIONext(f));
-   s->oflags = PerlIOUnix_oflags(mode);
+   /* XXX could (or should) we retrieve the oflags from the open file handle
+      rather than believing the "mode" we are passed in?
+      XXX Should the value on NULL mode be 0 or -1?  */
+   s->oflags = mode ? PerlIOUnix_oflags(mode) : -1;
   }
  PerlIOBase(f)->flags |= PERLIO_F_OPEN;
  return code;