Borland/Win32 tuning
[p5sagit/p5-mst-13.2.git] / pp_ctl.c
index 7d777f5..9dbd525 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1,6 +1,6 @@
 /*    pp_ctl.c
  *
- *    Copyright (c) 1991-2001, Larry Wall
+ *    Copyright (c) 1991-2002, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -1414,7 +1414,7 @@ PP(pp_caller)
        PUSHs(&PL_sv_undef);
     else
        PUSHs(sv_2mortal(newSVpv(stashname, 0)));
-    PUSHs(sv_2mortal(newSVpv(CopFILE(cx->blk_oldcop), 0)));
+    PUSHs(sv_2mortal(newSVpv(OutCopFILE(cx->blk_oldcop), 0)));
     PUSHs(sv_2mortal(newSViv((I32)CopLINE(cx->blk_oldcop))));
     if (!MAXARG)
        RETURN;
@@ -2927,30 +2927,11 @@ PP(pp_require)
 
     /* prepare to compile file */
 
-#ifdef MACOS_TRADITIONAL
-    if (PERL_FILE_IS_ABSOLUTE(name)
-       || (*name == ':' && name[1] != ':' && strchr(name+2, ':')))
-    {
+    if (path_is_absolute(name)) {
        tryname = name;
        tryrsfp = doopen_pmc(name,PERL_SCRIPT_MODE);
-       /* We consider paths of the form :a:b ambiguous and interpret them first
-          as global then as local
-       */
-       if (!tryrsfp && *name == ':' && name[1] != ':' && strchr(name+2, ':'))
-           goto trylocal;
     }
-    else
-trylocal: {
-#else
-    if (PERL_FILE_IS_ABSOLUTE(name)
-       || (*name == '.' && (name[1] == '/' ||
-                            (name[1] == '.' && name[2] == '/'))))
-    {
-       tryname = name;
-       tryrsfp = doopen_pmc(name,PERL_SCRIPT_MODE);
-    }
-    else {
-#endif
+    if (!tryrsfp) {
        AV *ar = GvAVn(PL_incgv);
        I32 i;
 #ifdef VMS
@@ -3073,6 +3054,14 @@ trylocal: {
                    }
                }
                else {
+                 if (!path_is_absolute(name)
+#ifdef MACOS_TRADITIONAL
+                       /* We consider paths of the form :a:b ambiguous and interpret them first
+                          as global then as local
+                       */
+                       || (*name == ':' && name[1] != ':' && strchr(name+2, ':'))
+#endif
+                 ) {
                    char *dir = SvPVx(dirsv, n_a);
 #ifdef MACOS_TRADITIONAL
                    char buf[256];
@@ -3104,6 +3093,7 @@ trylocal: {
                            tryname += 2;
                        break;
                    }
+                 }
                }
            }
        }
@@ -3700,3 +3690,21 @@ run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
     return len;
 }
 
+/* perhaps someone can come up with a better name for
+   this?  it is not really "absolute", per se ... */
+static bool
+S_path_is_absolute(pTHX_ char *name)
+{
+    if (PERL_FILE_IS_ABSOLUTE(name)
+#ifdef MACOS_TRADITIONAL
+       || (*name == ':' && name[1] != ':' && strchr(name+2, ':')))
+#else
+       || (*name == '.' && (name[1] == '/' ||
+                            (name[1] == '.' && name[2] == '/'))))
+#endif
+    {
+       return TRUE;
+    }
+    else
+       return FALSE;
+}