|
|
- From 15f67d146cf1f32504e8a11de3faa2abc0f467cd Mon Sep 17 00:00:00 2001
- From: Tony Cook <tony@develop-help.com>
- Date: Mon, 25 Mar 2019 16:48:40 +1100
- Subject: [PATCH] (perl #133951) add Internals::getcwd
-
- ---
- MANIFEST | 1 +
- t/io/getcwd.t | 22 ++++++++++++++++++++++
- universal.c | 22 ++++++++++++++++++++++
- 3 files changed, 45 insertions(+)
- create mode 100644 t/io/getcwd.t
-
- --- a/MANIFEST
- +++ b/MANIFEST
- @@ -5456,6 +5456,7 @@ t/io/errno.t See if $! is correctly se
- t/io/errnosig.t Test case for restoration $! when leaving signal handlers
- t/io/fflush.t See if auto-flush on fork/exec/system/qx works
- t/io/fs.t See if directory manipulations work
- +t/io/getcwd.t See if Internals::getcwd is sane
- t/io/inplace.t See if inplace editing works
- t/io/iofile.t See if we can load IO::File on demand
- t/io/iprefix.t See if inplace editing works with prefixes
- --- /dev/null
- +++ b/t/io/getcwd.t
- @@ -0,0 +1,22 @@
- +#!./perl -w
- +
- +BEGIN {
- + chdir 't' if -d 't';
- + require "./test.pl";
- + set_up_inc('../lib');
- +}
- +
- +use Config;
- +
- +$Config{d_getcwd}
- + or plan skip_all => "no getcwd";
- +
- +my $cwd = Internals::getcwd();
- +ok(!defined $cwd || $cwd ne "",
- + "Internals::getcwd() returned a reasonable result");
- +
- +if (defined $cwd) {
- + ok(-d $cwd, "check a success result is a directory");
- +}
- +
- +done_testing();
- --- a/universal.c
- +++ b/universal.c
- @@ -986,6 +986,25 @@ XS(XS_re_regexp_pattern)
- NOT_REACHED; /* NOTREACHED */
- }
-
- +#ifdef HAS_GETCWD
- +
- +XS(XS_Internals_getcwd)
- +{
- + dXSARGS;
- + SV *sv = sv_newmortal();
- +
- + if (items != 0)
- + croak_xs_usage(cv, "");
- +
- + (void)getcwd_sv(sv);
- +
- + SvTAINTED_on(sv);
- + PUSHs(sv);
- + XSRETURN(1);
- +}
- +
- +#endif
- +
- #include "vutil.h"
- #include "vxs.inc"
-
- @@ -1020,6 +1039,9 @@ static const struct xsub_details details
- {"re::regnames", XS_re_regnames, ";$"},
- {"re::regnames_count", XS_re_regnames_count, ""},
- {"re::regexp_pattern", XS_re_regexp_pattern, "$"},
- +#ifdef HAS_GETCWD
- + {"Internals::getcwd", XS_Internals_getcwd, ""},
- +#endif
- };
-
- STATIC OP*
|