Change 14395 by pudge@pudge-mobile on 2002/01/23 20:01:43 coderefs in @INC and absolute paths
Affected files ... .... //depot/maint-5.6/macperl/embed.h#2 edit .... //depot/maint-5.6/macperl/pp_ctl.c#4 edit .... //depot/maint-5.6/macperl/proto.h#2 edit Differences ... ==== //depot/maint-5.6/macperl/embed.h#2 (text+w) ==== Index: perl/embed.h --- perl/embed.h.~1~ Wed Jan 23 13:15:05 2002 +++ perl/embed.h Wed Jan 23 13:15:05 2002 @@ -975,6 +975,7 @@ #define save_lines S_save_lines #define doeval S_doeval #define doopen_pmc S_doopen_pmc +#define path_is_absolute S_path_is_absolute #define qsortsv S_qsortsv #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) @@ -2433,6 +2434,7 @@ #define save_lines(a,b) S_save_lines(aTHX_ a,b) #define doeval(a,b) S_doeval(aTHX_ a,b) #define doopen_pmc(a,b) S_doopen_pmc(aTHX_ a,b) +#define path_is_absolute(a) S_path_is_absolute(aTHX_ a) #define qsortsv(a,b,c) S_qsortsv(aTHX_ a,b,c) #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) ==== //depot/maint-5.6/macperl/pp_ctl.c#4 (text) ==== Index: perl/pp_ctl.c --- perl/pp_ctl.c.~1~ Wed Jan 23 13:15:05 2002 +++ perl/pp_ctl.c Wed Jan 23 13:15:05 2002 @@ -3028,30 +3028,11 @@ /* 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 @@ -3171,6 +3152,14 @@ } } 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]; @@ -3202,6 +3191,7 @@ tryname += 2; break; } + } } } } @@ -4667,3 +4657,23 @@ } #endif /* PERL_OBJECT */ + +/* 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; +} + ==== //depot/maint-5.6/macperl/proto.h#2 (text+w) ==== Index: perl/proto.h --- perl/proto.h.~1~ Wed Jan 23 13:15:05 2002 +++ perl/proto.h Wed Jan 23 13:15:05 2002 @@ -1091,6 +1091,7 @@ STATIC void S_save_lines(pTHX_ AV *array, SV *sv); STATIC OP* S_doeval(pTHX_ int gimme, OP** startop); STATIC PerlIO * S_doopen_pmc(pTHX_ const char *name, const char *mode); +STATIC bool S_path_is_absolute(pTHX_ char *name); STATIC void S_qsortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t f); #endif End of Patch.