summaryrefslogtreecommitdiff
path: root/vms
diff options
context:
space:
mode:
authorCharles Bailey <bailey@newman.upenn.edu>2000-08-04 01:18:46 +0000
committerbailey <bailey@newman.upenn.edu>2000-08-04 01:18:46 +0000
commit4b19af017623bfa3bb72bb164598a517f586e0d3 (patch)
treeba3232ffa110ce6bfc48de096d48b00ae6788077 /vms
parent674d6c381cbfa67bc93fd195278b889049c14bba (diff)
downloadperl-4b19af017623bfa3bb72bb164598a517f586e0d3.tar.gz
YA resync with mainstem, including VMS patches from others
p4raw-id: //depot/vmsperl@6514
Diffstat (limited to 'vms')
-rw-r--r--vms/descrip_mms.template15
-rw-r--r--vms/munchconfig.c3
-rw-r--r--vms/perlvms.pod26
-rw-r--r--vms/perly_c.vms6
-rw-r--r--vms/subconfigure.com15
-rw-r--r--vms/test.com14
-rw-r--r--vms/vms.c173
-rw-r--r--vms/vmsish.h118
8 files changed, 260 insertions, 110 deletions
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index 77772c95ef..2bf0114532 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -266,13 +266,13 @@ FULLLIBS2 = $(LIBS2)|$(THRLIBS1)|$(THRLIBS2)
#### End of system configuration section. ####
c0 = $(MALLOC_C) $(SOCKC) av.c deb.c doio.c doop.c dump.c globals.c gv.c
-c1 = hv.c mg.c miniperlmain.c op.c perl.c perlio.c perly.c pp.c pp_ctl.c
+c1 = hv.c mg.c miniperlmain.c op.c perl.c perlapi.c perlio.c perly.c pp.c pp_ctl.c
c2 = pp_hot.c pp_sys.c regcomp.c regexec.c run.c scope.c sv.c taint.c
c3 = toke.c universal.c utf8.c util.c vms.c xsutils.c
c = $(c0) $(c1) $(c2) $(c3)
obj0 = $(MALLOC_O) $(SOCKO) av$(O) deb$(O) doio$(O) doop$(O) dump$(O)
-obj1 = globals$(O) gv$(O) hv$(O) mg$(O) miniperlmain$(O) op$(O) perl$(O)
+obj1 = globals$(O) gv$(O) hv$(O) mg$(O) miniperlmain$(O) op$(O) perl$(O) perlapi$(O)
obj2 = perlio$(O) perly$(O) pp$(O) pp_ctl$(O) pp_hot$(O) pp_sys$(O) regcomp$(O)
obj3 = regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) toke$(O) universal$(O)
obj4 = utf8$(O) util$(O) vms$(O) xsutils$(O)
@@ -327,7 +327,7 @@ CRTLOPTS =,$(CRTL)/Options
.endif
# Modules which must be installed before we can build extensions
-LIBPREREQ = $(ARCHDIR)Config.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]vmsish.pm [.lib.VMS]Filespec.pm [.lib.ExtUtils]XSSymSet.pm
+LIBPREREQ = $(ARCHDIR)Config.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm [.lib]vmsish.pm [.lib.VMS]Filespec.pm [.lib.ExtUtils]XSSymSet.pm
utils1 = [.lib.pod]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com [.utils]h2xs.com [.lib]perlbug.com [.lib]perlcc.com [.utils]dprofpp.com
utils2 = [.lib]splain.com [.utils]pl2pm.com
@@ -479,6 +479,9 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E)
[.lib]vmsish.pm : [.vms.ext]vmsish.pm
Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
+[.lib]lib.pm : [.lib]lib_pm.PL
+ $(MINIPERL) $(MMS$SOURCE)
+
[.lib.VMS]Filespec.pm : [.vms.ext]Filespec.pm
@ If F$Search("[.lib]VMS.Dir").eqs."" Then Create/Directory [.lib.VMS]
Copy/Log/NoConfirm $(MMS$SOURCE) $(MMS$TARGET)
@@ -792,7 +795,7 @@ preplibrary : $(MINIPERL_EXE) $(LIBPREREQ) $(SOCKPM)
[.lib.pod]perlxstut.pod : [.pod]perlxstut.pod
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
-[.lib.pod]win32.pod : [.pod]win32.pod
+[.lib.pod]win32.pod : [.lib]win32.pod
@ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
Copy/Log $(MMS$SOURCE) $(MMS$TARGET)
[.lib.pod]perlvms.pod : [.vms]perlvms.pod
@@ -1083,6 +1086,8 @@ gv$(O) : gv.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsy
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
hv$(O) : hv.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
+malloc$(O) : malloc.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
+ $(CC) $(CORECFLAGS) $(MMS$SOURCE)
mg$(O) : mg.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
miniperlmain$(O) : miniperlmain.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
@@ -1091,6 +1096,8 @@ op$(O) : op.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsy
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
perl$(O) : perl.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h patchlevel.h intrpvar.h thrdvar.h
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
+perlapi$(O) : perlapi.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h patchlevel.h intrpvar.h thrdvar.h
+ $(CC) $(CORECFLAGS) $(MMS$SOURCE)
perlio$(O) : perlio.c config.h extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
$(CC) $(CORECFLAGS) $(MMS$SOURCE)
perlmain$(O) : perlmain.c extern.h perl.h config.h embed.h handy.h vmsish.h $(SOCKH) iperlsys.h perlsdio.h perl.h regexp.h sv.h util.h form.h gv.h cv.h opnames.h op.h cop.h av.h hv.h mg.h scope.h warnings.h utf8.h perly.h thread.h pp.h proto.h pp_proto.h opcode.h embedvar.h intrpvar.h thrdvar.h perlvars.h patchlevel.h
diff --git a/vms/munchconfig.c b/vms/munchconfig.c
index 158de3caf5..82768db12c 100644
--- a/vms/munchconfig.c
+++ b/vms/munchconfig.c
@@ -345,8 +345,7 @@ tilde_sub(char LineBuffer[], Translate TildeSub[], int TildeSubCount)
} else {
/* 'Kay, not a tilde. Is it a word character? */
- if (isalnum(LineBuffer[TildeLoop]) || (LineBuffer[TildeLoop] =
- '-') ||
+ if (isalnum(LineBuffer[TildeLoop]) ||
(LineBuffer[TildeLoop] == '-')) {
TempTilde[TildeBufferLength++] = LineBuffer[TildeLoop];
} else {
diff --git a/vms/perlvms.pod b/vms/perlvms.pod
index e6d13f3081..17e83e5c1b 100644
--- a/vms/perlvms.pod
+++ b/vms/perlvms.pod
@@ -122,7 +122,7 @@ I<N.B.> The procedure by which extensions are built and
tested creates several levels (at least 4) under the
directory in which the extension's source files live.
For this reason, you shouldn't nest the source directory
-too deeply in your directory structure, lest you eccedd RMS'
+too deeply in your directory structure, lest you exceed RMS'
maximum of 8 levels of subdirectory in a filespec. (You
can use rooted logical names to get another 8 levels of
nesting, if you can't place the files near the top of
@@ -167,7 +167,7 @@ translates to the full file specification of the shareable image.
We have tried to make Perl aware of both VMS-style and Unix-
style file specifications wherever possible. You may use
either style, or both, on the command line and in scripts,
-but you may not combine the two styles within a single fle
+but you may not combine the two styles within a single file
specification. VMS Perl interprets Unix pathnames in much
the same way as the CRTL (I<e.g.> the first component of
an absolute path is read as the device name for the
@@ -233,7 +233,7 @@ Perl will wait for the subprocess to complete before continuing.
=head1 PERL5LIB and PERLLIB
-The PERL5LIB and PERLLIB logical names work as documented L<perl>,
+The PERL5LIB and PERLLIB logical names work as documented in L<perl>,
except that the element separator is '|' instead of ':'. The
directory specifications may use either VMS or Unix syntax.
@@ -516,7 +516,7 @@ true, a warning message is printed, and C<undef> is returned.
=item kill
-In most cases, C<kill> kill is implemented via the CRTL's C<kill()>
+In most cases, C<kill> is implemented via the CRTL's C<kill()>
function, so it will behave according to that function's
documentation. If you send a SIGKILL, however, the $DELPRC system
service is called directly. This insures that the target
@@ -592,7 +592,7 @@ The array returned by the C<times> operator is divided up
according to the same rules the CRTL C<times()> routine.
Therefore, the "system time" elements will always be 0, since
there is no difference between "user time" and "system" time
-under VMS, and the time accumulated by subprocess may or may
+under VMS, and the time accumulated by a subprocess may or may
not appear separately in the "child time" field, depending on
whether L<times> keeps track of subprocesses separately. Note
especially that the VAXCRTL (at least) keeps track only of
@@ -604,7 +604,9 @@ or backticks.
C<unlink> will delete the highest version of a file only; in
order to delete all versions, you need to say
+
1 while (unlink LIST);
+
You may need to make this change to scripts written for a
Unix system which expect that after a call to C<unlink>,
no files with the names passed to C<unlink> will exist.
@@ -644,8 +646,8 @@ time of the file (VMS revision date).
=item waitpid PID,FLAGS
-If PID is a subprocess started by a piped L<open>, C<waitpid>
-will wait for that subprocess, and return its final
+If PID is a subprocess started by a piped C<open()> (see L<open>),
+C<waitpid> will wait for that subprocess, and return its final
status value. If PID is a subprocess created in some other way
(e.g. SPAWNed before Perl was invoked), or is not a subprocess of
the current process, C<waitpid> will check once per second whether
@@ -694,7 +696,7 @@ an element of C<%ENV>, the local symbol table is scanned first, followed
by the global symbol table.. The characters following C<CLISYM_> are
significant when an element of C<%ENV> is set or deleted: if the
complete string is C<CLISYM_LOCAL>, the change is made in the local
-symbol table, otherwise the global symbol table is changed.
+symbol table; otherwise the global symbol table is changed.
=item Any other string
@@ -751,7 +753,7 @@ copy of Perl knows about the CRTL's C<setenv()> function. (This is
present only in some versions of the DECCRTL; check C<$Config{d_setenv}>
to see whether your copy of Perl was built with a CRTL that has this
function.)
-
+
When an element of C<%ENV> is set to C<undef>,
the element is looked up as if it were being read, and if it is
found, it is deleted. (An item "deleted" from the CRTL C<environ>
@@ -796,7 +798,7 @@ to logical name tables caused by other programs.
You do need to be careful with the logicals representing process-permanent
files, such as C<SYS$INPUT> and C<SYS$OUTPUT>. The translations for these
logicals are prepended with a two-byte binary value (0x1B 0x00) that needs to be
-stripped off if you want to use it. (In previous versions of perl it wasn't
+stripped off if you want to use it. (In previous versions of Perl it wasn't
possible to get the values of these logicals, as the null byte acted as an
end-of-string marker)
@@ -830,7 +832,7 @@ portably test for successful completion of subprocesses. The
low order 8 bits of C<$?> are always 0 under VMS, since the
termination status of a process may or may not have been
generated by an exception. The next 8 bits are derived from
-severity portion of the subprocess' exit status: if the
+the severity portion of the subprocess' exit status: if the
severity was success or informational, these bits are all 0;
otherwise, they contain the severity value shifted left one bit.
As a result, C<$?> will always be zero if the subprocess' exit
@@ -841,7 +843,7 @@ be found in C<$^S> (q.v.).
=item $^S
Under VMS, this is the 32-bit VMS status value returned by the
-last subprocess to complete. Unlink C<$?>, no manipulation
+last subprocess to complete. Unlike C<$?>, no manipulation
is done to make this look like a POSIX wait(5) value, so it
may be treated as a normal VMS status value.
diff --git a/vms/perly_c.vms b/vms/perly_c.vms
index b17faeade1..0676ebd249 100644
--- a/vms/perly_c.vms
+++ b/vms/perly_c.vms
@@ -1387,6 +1387,9 @@ yyparse()
#endif
struct ysv *ysave;
+#ifdef USE_ITHREADS
+ ENTER; /* force yydestruct() before we return */
+#endif
New(73, ysave, 1, struct ysv);
SAVEDESTRUCTOR_X(yydestruct, ysave);
ysave->oldyydebug = yydebug;
@@ -2479,6 +2482,9 @@ yyoverflow:
yyabort:
retval = 1;
yyaccept:
+#ifdef USE_ITHREADS
+ LEAVE; /* force yydestruct() before we return */
+#endif
return retval;
}
diff --git a/vms/subconfigure.com b/vms/subconfigure.com
index 4aea63bb62..ebb59e5af0 100644
--- a/vms/subconfigure.com
+++ b/vms/subconfigure.com
@@ -69,7 +69,10 @@ $ myname = myhostname
$ IF myname .EQS. "" THEN myname = F$TRNLNM("SYS$NODE")
$!
$! ##ADD NEW CONSTANTS HERE##
-$ perl_d_isnan= = "define"
+$ perl_i_prot="undef"
+$ perl_d_getespwnam="undef"
+$ perl_d_getprpwnam="undef"
+$ perl_d_isnan= "define"
$ perl_sizesize = "4"
$ perl_shmattype = ""
$ perl_mmaptype = ""
@@ -110,10 +113,7 @@ $ perl_i_sysmman="undef"
$ perl_d_telldirproto="define"
$ perl_i_sysmount="undef"
$ perl_d_bincompat="undef"
-$ perl_d_endspent="undef
-$ perl_d_getspent="undef
$ perl_d_getspnam="undef
-$ perl_d_setspent="undef
$ perl_d_fstatfs="undef"
$ perl_d_getfsstat="undef"
$ perl_i_machcthreads="undef"
@@ -4027,6 +4027,7 @@ $ WC "subversion='" + subversion + "'"
$ WC "PERL_VERSION='" + patchlevel + "'"
$ WC "PERL_SUBVERSION='" + subversion + "'"
$ WC "pager='" + perl_pager + "'"
+$ WC "make='" + make + "'"
$ WC "uidtype='" + perl_uidtype + "'"
$ WC "uidformat='" + perl_uidformat + "'"
$ WC "uidsize='" + perl_uidsize + "'"
@@ -4192,10 +4193,7 @@ $ WC "vendorlib_stem='" + perl_vendorlib_stem + "'"
$ WC "d_atolf='" + perl_d_atolf + "'"
$ WC "d_atoll='" + perl_d_atoll + "'"
$ WC "d_bincompat5005='" + perl_d_bincompat + "'"
-$ WC "d_endspent='" + perl_d_endspent + "'"
-$ WC "d_getspent='" + perl_d_getspent + "'"
$ WC "d_getspnam='" + perl_d_getspnam + "'"
-$ WC "d_setspent='" + perl_d_setspent + "'"
$ WC "i_shadow='" + perl_i_shadow + "'"
$ WC "i_socks='" + perl_i_socks + "'"
$ WC "d_PRIfldbl='" + perl_d_PRIfldbl + "'"
@@ -4265,6 +4263,9 @@ $ WC "d_frexpl='" + perl_d_frexpl + "'"
$ WC "d_isnan='" + perl_d_isnan + "'"
$ WC "d_isnanl='" + perl_d_isnanl + "'"
$ WC "d_modfl='" + perl_d_modfl + "'"
+$ WC "d_getprpwnam='" + perl_d_getprpwnam + "'"
+$ WC "d_getespwnam='" + perl_d_getespwnam + "'"
+$ WC "i_prot='" + perl_i_prot + "'"
$!
$! ##WRITE NEW CONSTANTS HERE##
$!
diff --git a/vms/test.com b/vms/test.com
index 1039525e9e..b8ede8911e 100644
--- a/vms/test.com
+++ b/vms/test.com
@@ -93,8 +93,9 @@ $
$! And do it
$ Show Process/Accounting
$ testdir = "Directory/NoHead/NoTrail/Column=1"
-$ Define/User 'dbg'Perlshr Sys$Disk:[-]'dbg'PerlShr'exe'
-$ set message/nofacil/nosever/noiden/notext
+$ oldshr = F$TrnLNm("''dbg'PerlShr","LNM$PROCESS")
+$ If F$Length(oldshr).ne.0 Then Write Sys$Error "Superseding ''dbg'PerlShr . . ."
+$ Define 'dbg'Perlshr Sys$Disk:[-]'dbg'PerlShr'exe'
$ MCR Sys$Disk:[]Perl. "-I[-.lib]" - "''p3'" "''p4'" "''p5'" "''p6'"
$ Deck/Dollar=$$END-OF-TEST$$
# $RCSfile: TEST,v $$Revision: 4.1 $$Date: 92/08/07 18:27:00 $
@@ -241,8 +242,17 @@ print sprintf("u=%g s=%g cu=%g cs=%g files=%d tests=%d\n",
$user,$sys,$cuser,$csys,$files,$totmax);
$$END-OF-TEST$$
$ wrapup:
+$ If F$Length(oldshr).ne.0
+$ Then
+$ Write Sys$Error "restoring ''dbg'PerlShr . . ."
+$ Def/Translation=Concealed 'dbg'PerlShr 'oldshr'
+$ Else
+$ Deassign 'dbg'PerlShr
+$ EndIf
$ Show Process/Accounting
$ If F$Search("Echo.Exe").nes."" Then Delete/Log/NoConfirm Echo.Exe;*
$ Set Default &olddef
$ Set Message 'oldmsg'
$ Exit
+
+
diff --git a/vms/vms.c b/vms/vms.c
index de4a374637..40348e0056 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -79,6 +79,16 @@ struct itmlst_3 {
unsigned short int *retlen;
};
+#define do_fileify_dirspec(a,b,c) mp_do_fileify_dirspec(aTHX_ a,b,c)
+#define do_pathify_dirspec(a,b,c) mp_do_pathify_dirspec(aTHX_ a,b,c)
+#define do_tovmsspec(a,b,c) mp_do_tovmsspec(aTHX_ a,b,c)
+#define do_tovmspath(a,b,c) mp_do_tovmspath(aTHX_ a,b,c)
+#define do_rmsexpand(a,b,c,d,e) mp_do_rmsexpand(aTHX_ a,b,c,d,e)
+#define do_tounixspec(a,b,c) mp_do_tounixspec(aTHX_ a,b,c)
+#define do_tounixpath(a,b,c) mp_do_tounixpath(aTHX_ a,b,c)
+#define expand_wild_cards(a,b,c,d) mp_expand_wild_cards(aTHX_ a,b,c,d)
+#define getredirection(a,b) mp_getredirection(aTHX_ a,b)
+
static char *__mystrtolower(char *str)
{
if (str) for (; *str; ++str) *str= tolower(*str);
@@ -103,7 +113,7 @@ static struct dsc$descriptor_s VMScmd = {0,DSC$K_DTYPE_T,DSC$K_CLASS_S,Nullch};
/*{{{int vmstrnenv(const char *lnm, char *eqv, unsigned long int idx, struct dsc$descriptor_s **tabvec, unsigned long int flags) */
int
-vmstrnenv(const char *lnm, char *eqv, unsigned long int idx,
+Perl_vmstrnenv(pTHX_ const char *lnm, char *eqv, unsigned long int idx,
struct dsc$descriptor_s **tabvec, unsigned long int flags)
{
char uplnm[LNM$C_NAMLENGTH+1], *cp1, *cp2;
@@ -240,7 +250,7 @@ vmstrnenv(const char *lnm, char *eqv, unsigned long int idx,
/*{{{ int my_trnlnm(const char *lnm, char *eqv, unsigned long int idx)*/
/* Define as a function so we can access statics. */
-int my_trnlnm(const char *lnm, char *eqv, unsigned long int idx)
+int Perl_my_trnlnm(pTHX_ const char *lnm, char *eqv, unsigned long int idx)
{
return vmstrnenv(lnm,eqv,idx,fildev,
#ifdef SECURE_INTERNAL_GETENV
@@ -384,7 +394,7 @@ prime_env_iter(void)
$DESCRIPTOR(clidsc,"DCL"); $DESCRIPTOR(clitabdsc,"DCLTABLES");
$DESCRIPTOR(crtlenv,"CRTL_ENV"); $DESCRIPTOR(clisym,"CLISYM");
$DESCRIPTOR(local,"_LOCAL"); $DESCRIPTOR(mbxdsc,mbxnam);
-#ifdef USE_THREADS
+#if defined(USE_THREADS) || defined(USE_ITHREADS)
static perl_mutex primenv_mutex;
MUTEX_INIT(&primenv_mutex);
#endif
@@ -757,13 +767,13 @@ my_crypt(const char *textpasswd, const char *usrname)
/*}}}*/
-static char *do_rmsexpand(char *, char *, int, char *, unsigned);
-static char *do_fileify_dirspec(char *, char *, int);
-static char *do_tovmsspec(char *, char *, int);
+static char *mp_do_rmsexpand(pTHX_ char *, char *, int, char *, unsigned);
+static char *mp_do_fileify_dirspec(pTHX_ char *, char *, int);
+static char *mp_do_tovmsspec(pTHX_ char *, char *, int);
/*{{{int do_rmdir(char *name)*/
int
-do_rmdir(char *name)
+Perl_do_rmdir(pTHX_ char *name)
{
char dirfile[NAM$C_MAXRSS+1];
int retval;
@@ -1110,7 +1120,7 @@ popen_completion_ast(struct pipe_details *thispipe)
}
static unsigned long int setup_cmddsc(char *cmd, int check_img);
-static void vms_execfree();
+static void vms_execfree(pTHX);
static PerlIO *
safe_popen(char *cmd, char *mode)
@@ -1157,7 +1167,7 @@ safe_popen(char *cmd, char *mode)
0, popen_completion_ast,info,0,0,0));
}
- vms_execfree();
+ vms_execfree(aTHX);
if (!handler_set_up) {
_ckvmssts(sys$dclexh(&pipe_exitblock));
handler_set_up = TRUE;
@@ -1315,10 +1325,10 @@ my_gconvert(double val, int ndig, int trail, char *buf)
* rmesexpand() returns the address of the resultant string if
* successful, and NULL on error.
*/
-static char *do_tounixspec(char *, char *, int);
+static char *mp_do_tounixspec(pTHX_ char *, char *, int);
static char *
-do_rmsexpand(char *filespec, char *outbuf, int ts, char *defspec, unsigned opts)
+mp_do_rmsexpand(pTHX_ char *filespec, char *outbuf, int ts, char *defspec, unsigned opts)
{
static char __rmsexpand_retbuf[NAM$C_MAXRSS+1];
char vmsfspec[NAM$C_MAXRSS+1], tmpfspec[NAM$C_MAXRSS+1];
@@ -1453,9 +1463,9 @@ do_rmsexpand(char *filespec, char *outbuf, int ts, char *defspec, unsigned opts)
}
/*}}}*/
/* External entry points */
-char *rmsexpand(char *spec, char *buf, char *def, unsigned opt)
+char *Perl_rmsexpand(pTHX_ char *spec, char *buf, char *def, unsigned opt)
{ return do_rmsexpand(spec,buf,0,def,opt); }
-char *rmsexpand_ts(char *spec, char *buf, char *def, unsigned opt)
+char *Perl_rmsexpand_ts(pTHX_ char *spec, char *buf, char *def, unsigned opt)
{ return do_rmsexpand(spec,buf,1,def,opt); }
@@ -1494,7 +1504,7 @@ char *rmsexpand_ts(char *spec, char *buf, char *def, unsigned opt)
*/
/*{{{ char *fileify_dirspec[_ts](char *path, char *buf)*/
-static char *do_fileify_dirspec(char *dir,char *buf,int ts)
+static char *mp_do_fileify_dirspec(pTHX_ char *dir,char *buf,int ts)
{
static char __fileify_retbuf[NAM$C_MAXRSS+1];
unsigned long int dirlen, retlen, addmfd = 0, hasfilename = 0;
@@ -1806,13 +1816,13 @@ static char *do_fileify_dirspec(char *dir,char *buf,int ts)
} /* end of do_fileify_dirspec() */
/*}}}*/
/* External entry points */
-char *fileify_dirspec(char *dir, char *buf)
+char *Perl_fileify_dirspec(pTHX_ char *dir, char *buf)
{ return do_fileify_dirspec(dir,buf,0); }
-char *fileify_dirspec_ts(char *dir, char *buf)
+char *Perl_fileify_dirspec_ts(pTHX_ char *dir, char *buf)
{ return do_fileify_dirspec(dir,buf,1); }
/*{{{ char *pathify_dirspec[_ts](char *path, char *buf)*/
-static char *do_pathify_dirspec(char *dir,char *buf, int ts)
+static char *mp_do_pathify_dirspec(pTHX_ char *dir,char *buf, int ts)
{
static char __pathify_retbuf[NAM$C_MAXRSS+1];
unsigned long int retlen;
@@ -1992,13 +2002,13 @@ static char *do_pathify_dirspec(char *dir,char *buf, int ts)
} /* end of do_pathify_dirspec() */
/*}}}*/
/* External entry points */
-char *pathify_dirspec(char *dir, char *buf)
+char *Perl_pathify_dirspec(pTHX_ char *dir, char *buf)
{ return do_pathify_dirspec(dir,buf,0); }
-char *pathify_dirspec_ts(char *dir, char *buf)
+char *Perl_pathify_dirspec_ts(pTHX_ char *dir, char *buf)
{ return do_pathify_dirspec(dir,buf,1); }
/*{{{ char *tounixspec[_ts](char *path, char *buf)*/
-static char *do_tounixspec(char *spec, char *buf, int ts)
+static char *mp_do_tounixspec(pTHX_ char *spec, char *buf, int ts)
{
static char __tounixspec_retbuf[NAM$C_MAXRSS+1];
char *dirend, *rslt, *cp1, *cp2, *cp3, tmp[NAM$C_MAXRSS+1];
@@ -2122,11 +2132,11 @@ static char *do_tounixspec(char *spec, char *buf, int ts)
} /* end of do_tounixspec() */
/*}}}*/
/* External entry points */
-char *tounixspec(char *spec, char *buf) { return do_tounixspec(spec,buf,0); }
-char *tounixspec_ts(char *spec, char *buf) { return do_tounixspec(spec,buf,1); }
+char *Perl_tounixspec(pTHX_ char *spec, char *buf) { return do_tounixspec(spec,buf,0); }
+char *Perl_tounixspec_ts(pTHX_ char *spec, char *buf) { return do_tounixspec(spec,buf,1); }
/*{{{ char *tovmsspec[_ts](char *path, char *buf)*/
-static char *do_tovmsspec(char *path, char *buf, int ts) {
+static char *mp_do_tovmsspec(pTHX_ char *path, char *buf, int ts) {
static char __tovmsspec_retbuf[NAM$C_MAXRSS+1];
char *rslt, *dirend;
register char *cp1, *cp2;
@@ -2266,11 +2276,11 @@ static char *do_tovmsspec(char *path, char *buf, int ts) {
} /* end of do_tovmsspec() */
/*}}}*/
/* External entry points */
-char *tovmsspec(char *path, char *buf) { return do_tovmsspec(path,buf,0); }
-char *tovmsspec_ts(char *path, char *buf) { return do_tovmsspec(path,buf,1); }
+char *Perl_tovmsspec(pTHX_ char *path, char *buf) { return do_tovmsspec(path,buf,0); }
+char *Perl_tovmsspec_ts(pTHX_ char *path, char *buf) { return do_tovmsspec(path,buf,1); }
/*{{{ char *tovmspath[_ts](char *path, char *buf)*/
-static char *do_tovmspath(char *path, char *buf, int ts) {
+static char *mp_do_tovmspath(pTHX_ char *path, char *buf, int ts) {
static char __tovmspath_retbuf[NAM$C_MAXRSS+1];
int vmslen;
char pathified[NAM$C_MAXRSS+1], vmsified[NAM$C_MAXRSS+1], *cp;
@@ -2294,12 +2304,12 @@ static char *do_tovmspath(char *path, char *buf, int ts) {
} /* end of do_tovmspath() */
/*}}}*/
/* External entry points */
-char *tovmspath(char *path, char *buf) { return do_tovmspath(path,buf,0); }
-char *tovmspath_ts(char *path, char *buf) { return do_tovmspath(path,buf,1); }
+char *Perl_tovmspath(pTHX_ char *path, char *buf) { return do_tovmspath(path,buf,0); }
+char *Perl_tovmspath_ts(pTHX_ char *path, char *buf) { return do_tovmspath(path,buf,1); }
/*{{{ char *tounixpath[_ts](char *path, char *buf)*/
-static char *do_tounixpath(char *path, char *buf, int ts) {
+static char *mp_do_tounixpath(pTHX_ char *path, char *buf, int ts) {
static char __tounixpath_retbuf[NAM$C_MAXRSS+1];
int unixlen;
char pathified[NAM$C_MAXRSS+1], unixified[NAM$C_MAXRSS+1], *cp;
@@ -2323,8 +2333,8 @@ static char *do_tounixpath(char *path, char *buf, int ts) {
} /* end of do_tounixpath() */
/*}}}*/
/* External entry points */
-char *tounixpath(char *path, char *buf) { return do_tounixpath(path,buf,0); }
-char *tounixpath_ts(char *path, char *buf) { return do_tounixpath(path,buf,1); }
+char *Perl_tounixpath(pTHX_ char *path, char *buf) { return do_tounixpath(path,buf,0); }
+char *Perl_tounixpath_ts(pTHX_ char *path, char *buf) { return do_tounixpath(path,buf,1); }
/*
* @(#)argproc.c 2.2 94/08/16 Mark Pizzolato (mark@infocomm.com)
@@ -2369,10 +2379,10 @@ static void add_item(struct list_item **head,
char *value,
int *count);
-static void expand_wild_cards(char *item,
- struct list_item **head,
- struct list_item **tail,
- int *count);
+static void mp_expand_wild_cards(pTHX_ char *item,
+ struct list_item **head,
+ struct list_item **tail,
+ int *count);
static int background_process(int argc, char **argv);
@@ -2380,7 +2390,7 @@ static void pipe_and_fork(char **cmargv);
/*{{{ void getredirection(int *ac, char ***av)*/
static void
-getredirection(int *ac, char ***av)
+mp_getredirection(pTHX_ int *ac, char ***av)
/*
* Process vms redirection arg's. Exit if any error is seen.
* If getredirection() processes an argument, it is erased
@@ -2630,7 +2640,7 @@ static void add_item(struct list_item **head,
++(*count);
}
-static void expand_wild_cards(char *item,
+static void mp_expand_wild_cards(pTHX_ char *item,
struct list_item **head,
struct list_item **tail,
int *count)
@@ -2984,7 +2994,7 @@ vms_image_init(int *argcp, char ***argvp)
*/
/*{{{int trim_unixpath(char *fspec, char *wildspec, int opts)*/
int
-trim_unixpath(char *fspec, char *wildspec, int opts)
+Perl_trim_unixpath(pTHX_ char *fspec, char *wildspec, int opts)
{
char unixified[NAM$C_MAXRSS+1], unixwild[NAM$C_MAXRSS+1],
*template, *base, *end, *cp1, *cp2;
@@ -3143,7 +3153,7 @@ trim_unixpath(char *fspec, char *wildspec, int opts)
*/
/*{{{ DIR *opendir(char*name) */
DIR *
-opendir(char *name)
+Perl_opendir(pTHX_ char *name)
{
DIR *dd;
char dir[NAM$C_MAXRSS+1];
@@ -3397,7 +3407,7 @@ my_vfork()
static void
-vms_execfree() {
+vms_execfree(pTHX) {
if (PL_Cmd) {
if (PL_Cmd != VMScmd.dsc$a_pointer) Safefree(PL_Cmd);
PL_Cmd = Nullch;
@@ -3647,7 +3657,7 @@ vms_do_exec(char *cmd)
Perl_warner(aTHX_ WARN_EXEC,"Can't exec \"%*s\": %s",
VMScmd.dsc$w_length, VMScmd.dsc$a_pointer, Strerror(errno));
}
- vms_execfree();
+ vms_execfree(aTHX);
}
return FALSE;
@@ -3712,7 +3722,7 @@ do_spawn(char *cmd)
Strerror(errno));
}
}
- vms_execfree();
+ vms_execfree(aTHX);
return substs;
} /* end of do_spawn() */
@@ -4858,7 +4868,7 @@ my_getlogin()
*/
/*{{{int rmscopy(char *src, char *dst, int preserve_dates)*/
int
-rmscopy(char *spec_in, char *spec_out, int preserve_dates)
+Perl_rmscopy(pTHX_ char *spec_in, char *spec_out, int preserve_dates)
{
char vmsin[NAM$C_MAXRSS+1], vmsout[NAM$C_MAXRSS+1], esa[NAM$C_MAXRSS],
rsa[NAM$C_MAXRSS], ubf[32256];
@@ -5220,6 +5230,82 @@ rmscopy_fromperl(pTHX_ CV *cv)
XSRETURN(1);
}
+
+void
+mod2fname(CV *cv)
+{
+ dXSARGS;
+ char ultimate_name[NAM$C_MAXRSS+1], work_name[NAM$C_MAXRSS*8 + 1],
+ workbuff[NAM$C_MAXRSS*1 + 1];
+ int total_namelen = 3, counter, num_entries;
+ /* ODS-5 ups this, but we want to be consistent, so... */
+ int max_name_len = 39;
+ AV *in_array = (AV *)SvRV(ST(0));
+
+ num_entries = av_len(in_array);
+
+ /* All the names start with PL_. */
+ strcpy(ultimate_name, "PL_");
+
+ /* Clean up our working buffer */
+ Zero(work_name, sizeof(work_name), char);
+
+ /* Run through the entries and build up a working name */
+ for(counter = 0; counter <= num_entries; counter++) {
+ /* If it's not the first name then tack on a __ */
+ if (counter) {
+ strcat(work_name, "__");
+ }
+ strcat(work_name, SvPV(*av_fetch(in_array, counter, FALSE),
+ PL_na));
+ }
+
+ /* Check to see if we actually have to bother...*/
+ if (strlen(work_name) + 3 <= max_name_len) {
+ strcat(ultimate_name, work_name);
+ } else {
+ /* It's too darned big, so we need to go strip. We use the same */
+ /* algorithm as xsubpp does. First, strip out doubled __ */
+ char *source, *dest, last;
+ dest = workbuff;
+ last = 0;
+ for (source = work_name; *source; source++) {
+ if (last == *source && last == '_') {
+ continue;
+ }
+ *dest++ = *source;
+ last = *source;
+ }
+ /* Go put it back */
+ strcpy(work_name, workbuff);
+ /* Is it still too big? */
+ if (strlen(work_name) + 3 > max_name_len) {
+ /* Strip duplicate letters */
+ last = 0;
+ dest = workbuff;
+ for (source = work_name; *source; source++) {
+ if (last == toupper(*source)) {
+ continue;
+ }
+ *dest++ = *source;
+ last = toupper(*source);
+ }
+ strcpy(work_name, workbuff);
+ }
+
+ /* Is it *still* too big? */
+ if (strlen(work_name) + 3 > max_name_len) {
+ /* Too bad, we truncate */
+ work_name[max_name_len - 2] = 0;
+ }
+ strcat(ultimate_name, work_name);
+ }
+
+ /* Okay, return it */
+ ST(0) = sv_2mortal(newSVpv(ultimate_name, 0));
+ XSRETURN(1);
+}
+
void
init_os_extras()
{
@@ -5240,6 +5326,7 @@ init_os_extras()
newXSproto("VMS::Filespec::vmspath",vmspath_fromperl,file,"$");
newXSproto("VMS::Filespec::unixpath",unixpath_fromperl,file,"$");
newXSproto("VMS::Filespec::candelete",candelete_fromperl,file,"$");
+ newXSproto("DynaLoader::mod2fname", mod2fname, file, "$");
newXS("File::Copy::rmscopy",rmscopy_fromperl,file);
return;
diff --git a/vms/vmsish.h b/vms/vmsish.h
index 382e314743..104eabce1e 100644
--- a/vms/vmsish.h
+++ b/vms/vmsish.h
@@ -91,43 +91,63 @@
#define DONT_DECLARE_STD 1
/* Our own contribution to PerlShr's global symbols . . . */
-#define vmstrnenv Perl_vmstrnenv
-#define my_trnlnm Perl_my_trnlnm
#define my_getenv_len Perl_my_getenv_len
#define prime_env_iter Perl_prime_env_iter
#define vmssetenv Perl_vmssetenv
#if !defined(PERL_IMPLICIT_CONTEXT)
+#define my_trnlnm Perl_my_trnlnm
+#define vmstrnenv Perl_vmstrnenv
#define my_setenv Perl_my_setenv
#define my_getenv Perl_my_getenv
+#define tounixspec Perl_tounixspec
+#define tounixspec_ts Perl_tounixspec_ts
+#define tovmsspec Perl_tovmsspec
+#define tovmsspec_ts Perl_tovmsspec_ts
+#define tounixpath Perl_tounixpath
+#define tounixpath_ts Perl_tounixpath_ts
+#define tovmspath Perl_tovmspath
+#define tovmspath_ts Perl_tovmspath_ts
+#define do_rmdir Perl_do_rmdir
+#define fileify_dirspec Perl_fileify_dirspec
+#define fileify_dirspec_ts Perl_fileify_dirspec_ts
+#define pathify_dirspec Perl_pathify_dirspec
+#define pathify_dirspec_ts Perl_pathify_dirspec_ts
+#define trim_unixpath Perl_trim_unixpath
+#define opendir Perl_opendir
+#define rmscopy Perl_rmscopy
#else
+#define my_trnlnm(a,b,c) Perl_my_trnlnm(aTHX_ a,b,c)
+#define vmstrnenv(a,b,c,d,e) Perl_vmstrnenv(aTHX_ a,b,c,d,e)
#define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b)
#define my_getenv(a,b) Perl_my_getenv(aTHX_ a,b)
+#define tounixspec(a,b) Perl_tounixspec(aTHX_ a,b)
+#define tounixspec_ts(a,b) Perl_tounixspec_ts(aTHX_ a,b)
+#define tovmsspec(a,b) Perl_tovmsspec(aTHX_ a,b)
+#define tovmsspec_t(a,b) Perl_tovmsspec_ts(aTHX_ a,b)
+#define tounixpath(a,b) Perl_tounixpath(aTHX_ a,b)
+#define tounixpath_ts(a,b) Perl_tounixpath_ts(aTHX_ a,b)
+#define tovmspath(a,b) Perl_tovmspath(aTHX_ a,b)
+#define tovmspath_ts(a,b) Perl_tovmspath_ts(aTHX_ a,b)
+#define do_rmdir(a) Perl_do_rmdir(aTHX_ a)
+#define fileify_dirspec(a,b) Perl_fileify_dirspec(aTHX_ a,b)
+#define fileify_dirspec_ts(a,b) Perl_fileify_dirspec_ts(aTHX_ a,b)
+#define pathify_dirspec Perl_pathify_dirspec
+#define pathify_dirspec_ts Perl_pathify_dirspec_ts
+#define rmsexpand(a,b,c,d) Perl_rmsexpand(aTHX_ a,b,c,d)
+#define rmsexpand_ts(a,b,c,d) Perl_rmsexpand_ts(aTHX_ a,b,c,d)
+#define trim_unixpath(a,b,c) Perl_trim_unixpath(aTHX_ a,b,c)
+#define opendir(a) Perl_opendir(aTHX_ a)
+#define rmscopy(a,b,c) Perl_rmscopy(aTHX_ a,b,c)
#endif
#define my_crypt Perl_my_crypt
#define my_waitpid Perl_my_waitpid
#define my_gconvert Perl_my_gconvert
-#define do_rmdir Perl_do_rmdir
#define kill_file Perl_kill_file
#define my_mkdir Perl_my_mkdir
#define my_chdir Perl_my_chdir
#define my_tmpfile Perl_my_tmpfile
#define my_utime Perl_my_utime
-#define rmsexpand Perl_rmsexpand
-#define rmsexpand_ts Perl_rmsexpand_ts
-#define fileify_dirspec Perl_fileify_dirspec
-#define fileify_dirspec_ts Perl_fileify_dirspec_ts
-#define pathify_dirspec Perl_pathify_dirspec
-#define pathify_dirspec_ts Perl_pathify_dirspec_ts
-#define tounixspec Perl_tounixspec
-#define tounixspec_ts Perl_tounixspec_ts
-#define tovmsspec Perl_tovmsspec
-#define tovmsspec_ts Perl_tovmsspec_ts
-#define tounixpath Perl_tounixpath
-#define tounixpath_ts Perl_tounixpath_ts
-#define tovmspath Perl_tovmspath
-#define tovmspath_ts Perl_tovmspath_ts
#define vms_image_init Perl_vms_image_init
-#define opendir Perl_opendir
#define readdir Perl_readdir
#define telldir Perl_telldir
#define seekdir Perl_seekdir
@@ -145,7 +165,6 @@
#define cando_by_name Perl_cando_by_name
#define flex_fstat Perl_flex_fstat
#define flex_stat Perl_flex_stat
-#define trim_unixpath Perl_trim_unixpath
#define my_vfork Perl_my_vfork
#define vms_do_aexec Perl_vms_do_aexec
#define vms_do_exec Perl_vms_do_exec
@@ -158,7 +177,6 @@
#define my_getpwent Perl_my_getpwent
#define my_endpwent Perl_my_endpwent
#define my_getlogin Perl_my_getlogin
-#define rmscopy Perl_rmscopy
#define init_os_extras Perl_init_os_extras
/* Delete if at all possible, changing protections if necessary. */
@@ -638,40 +656,62 @@ void prime_env_iter (void);
void init_os_extras ();
/* prototype section start marker; `typedef' passes through cpp */
typedef char __VMS_PROTOTYPES__;
-int vmstrnenv (const char *, char *, unsigned long int, struct dsc$descriptor_s **, unsigned long int);
-int my_trnlnm (const char *, char *, unsigned long int);
#if !defined(PERL_IMPLICIT_CONTEXT)
char * Perl_my_getenv (const char *, bool);
+int Perl_vmstrnenv (const char *, char *, unsigned long int, struct dsc$descriptor_s **, unsigned long int);
+int Perl_my_trnlnm (const char *, char *, unsigned long int);
+char * Perl_tounixspec (char *, char *);
+char * Perl_tounixspec_ts (char *, char *);
+char * Perl_tovmsspec (char *, char *);
+char * Perl_tovmsspec_ts (char *, char *);
+char * Perl_tounixpath (char *, char *);
+char * Perl_tounixpath_ts (char *, char *);
+char * Perl_tovmspath (char *, char *);
+char * Perl_tovmspath_ts (char *, char *);
+int Perl_do_rmdir (char *);
+char * Perl_fileify_dirspec (char *, char *);
+char * Perl_fileify_dirspec_ts (char *, char *);
+char * Perl_pathify_dirspec (char *, char *);
+char * Perl_pathify_dirspec_ts (char *, char *);
+char * Perl_rmsexpand (char *, char *, char *, unsigned);
+char * Perl_rmsexpand_ts (char *, char *, char *, unsigned);
+int Perl_trim_unixpath (char *, char*, int);
+DIR * Perl_opendir (char *);
+int Perl_rmscopy (char *, char *, int);
#else
+int Perl_vmstrnenv (pTHX_ const char *, char *, unsigned long int, struct dsc$descriptor_s **, unsigned long int);
char * Perl_my_getenv (pTHX_ const char *, bool);
+int Perl_my_trnlnm (pTHX_ const char *, char *, unsigned long int);
+char * Perl_tounixspec (pTHX_ char *, char *);
+char * Perl_tounixspec_ts (pTHX_ char *, char *);
+char * Perl_tovmsspec (pTHX_ char *, char *);
+char * Perl_tovmsspec_ts (pTHX_ char *, char *);
+char * Perl_tounixpath (pTHX_ char *, char *);
+char * Perl_tounixpath_ts (pTHX_ char *, char *);
+char * Perl_tovmspath (pTHX_ char *, char *);
+char * Perl_tovmspath_ts (pTHX_ char *, char *);
+int Perl_do_rmdir (pTHX_ char *);
+char * Perl_fileify_dirspec (pTHX_ char *, char *);
+char * Perl_fileify_dirspec_ts (pTHX_ char *, char *);
+char * Perl_pathify_dirspec (pTHX_ char *, char *);
+char * Perl_pathify_dirspec_ts (pTHX_ char *, char *);
+char * Perl_rmsexpand (pTHX_ char *, char *, char *, unsigned);
+char * Perl_rmsexpand_ts (pTHX_ char *, char *, char *, unsigned);
+int Perl_trim_unixpath (pTHX_ char *, char*, int);
+DIR * Perl_opendir (pTHX_ char *);
+int Perl_rmscopy (pTHX_ char *, char *, int);
#endif
char * my_getenv_len (const char *, unsigned long *, bool);
int vmssetenv (char *, char *, struct dsc$descriptor_s **);
char * my_crypt (const char *, const char *);
Pid_t my_waitpid (Pid_t, int *, int);
char * my_gconvert (double, int, int, char *);
-int do_rmdir (char *);
int kill_file (char *);
int my_mkdir (char *, Mode_t);
int my_chdir (char *);
FILE * my_tmpfile (void);
int my_utime (char *, struct utimbuf *);
-char * rmsexpand (char *, char *, char *, unsigned);
-char * rmsexpand_ts (char *, char *, char *, unsigned);
-char * fileify_dirspec (char *, char *);
-char * fileify_dirspec_ts (char *, char *);
-char * pathify_dirspec (char *, char *);
-char * pathify_dirspec_ts (char *, char *);
-char * tounixspec (char *, char *);
-char * tounixspec_ts (char *, char *);
-char * tovmsspec (char *, char *);
-char * tovmsspec_ts (char *, char *);
-char * tounixpath (char *, char *);
-char * tounixpath_ts (char *, char *);
-char * tovmspath (char *, char *);
-char * tovmspath_ts (char *, char *);
void vms_image_init (int *, char ***);
-DIR * opendir (char *);
struct dirent * readdir (DIR *);
long telldir (DIR *);
void seekdir (DIR *, long);
@@ -691,7 +731,6 @@ int my_sigprocmask (int, sigset_t *, sigset_t *);
I32 cando_by_name (I32, Uid_t, char *);
int flex_fstat (int, Stat_t *);
int flex_stat (const char *, Stat_t *);
-int trim_unixpath (char *, char*, int);
int my_vfork ();
bool vms_do_aexec (SV *, SV **, SV **);
bool vms_do_exec (char *);
@@ -704,7 +743,6 @@ struct passwd * my_getpwuid (Uid_t uid);
struct passwd * my_getpwent ();
void my_endpwent ();
char * my_getlogin ();
-int rmscopy (char *, char *, int);
typedef char __VMS_SEPYTOTORP__;
/* prototype section end marker; `typedef' passes through cpp */