When I pulled down a new copy today, for some reason the vms/vmsish.h was missing some of the required const prototypes in order to compile vms.c, so I am confused as to how it seemed to be building yesterday.

I suppose I should change the subject as it is against a different days blead, but I have no idea where the number 25210 came from.

Here are the patches to vms.c and vmsish.h to July 25th's bleadperl when combined with the other patches that I have posted will allow bleadperl to compile on VMS.

The zlib module would not build. I had to change the makefile.pl to fix that.

What was needed is a space between the "@" and a macro which expanded to MCR imagename. With out that space, MMK interprets the @ to run MCR.COM. I do not know if the makemaker code should have fixed this, or if it is a bug in the makefile.pl.

My build just died because it can not figure out how to create pod/perlcygwin.pod. As near as I can tell, that file was supposed to be in the distribution, but rsync does not report it as available for download, and it is not in the MANIFEST. file.

So I am removing it from the descrip_mms.template, and trying again. This seems to have required a realclean operation, and do to the aborted build, I had to do that manually.

I still did not include the fix for the buffer high-water mark overrun as I want to get a full build first.

This bug is in the routine mp_to_vmsspec(). If it is passed a name like "/foo" where foo is a logical name, after the translation, the null terminator was always being skipped over, and what ever was previously in that memory would get concatenated to the string.

    /* If the first element of the path is a logical name, determine
     * whether it has to be translated so we can add more directories. */
    if (!islnm || rooted) {
      *(cp1++) = ':';
      *(cp1++) = '[';
      if (cp2 == dirend) while (infront++ < 6) *(cp1++) = '0';
      else cp2++;
    }
    else {
      if (cp2 != dirend) {
if (!buf && ts) Renew(rslt,strlen(path)-strlen(rslt)+trnend+4,char);
        strcpy(rslt,trndev);
        cp1 = rslt + trnend;

+       if (*cp2 != 0) {
          *(cp1++) = '.';
          cp2++;
+       }
      }

I now have a build of bleadperl, and have started building the tests.


-John
[EMAIL PROTECTED]
Personal Opinion Only

--- vms/vmsish.h_blead  Mon Jul 25 20:21:33 2005
+++ vms/vmsish.h        Mon Jul 25 20:51:34 2005
@@ -767,48 +767,48 @@
 #if !defined(PERL_IMPLICIT_CONTEXT)
 char * Perl_my_getenv (const char *, bool);
 int    Perl_my_trnlnm (const char *, char *, unsigned long int);
-char * Perl_tounixspec (char *, char *);
-char * Perl_tounixspec_ts (char *, char *);
+char * Perl_tounixspec (const char *, char *);
+char * Perl_tounixspec_ts (const 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_tounixpath (const char *, char *);
+char * Perl_tounixpath_ts (const char *, char *);
+char * Perl_tovmspath (const char *, char *);
+char * Perl_tovmspath_ts (const char *, char *);
+int    Perl_do_rmdir (const char *);
+char * Perl_fileify_dirspec (const char *, char *);
+char * Perl_fileify_dirspec_ts (const char *, char *);
+char * Perl_pathify_dirspec (const char *, char *);
+char * Perl_pathify_dirspec_ts (const 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 *);
+DIR *  Perl_opendir (const char *);
 int    Perl_rmscopy (char *, char *, int);
-int    Perl_my_mkdir (char *, Mode_t);
+int    Perl_my_mkdir (const char *, Mode_t);
 bool   Perl_vms_do_aexec (SV *, SV **, SV **);
 #else
 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_tounixspec (pTHX_ const char *, char *);
+char * Perl_tounixspec_ts (pTHX_ const 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_tounixpath (pTHX_ const char *, char *);
+char * Perl_tounixpath_ts (pTHX_ const char *, char *);
+char * Perl_tovmspath (pTHX_ const char *, char *);
+char * Perl_tovmspath_ts (pTHX_ const char *, char *);
+int    Perl_do_rmdir (pTHX_ const char *);
+char * Perl_fileify_dirspec (pTHX_ const char *, char *);
+char * Perl_fileify_dirspec_ts (pTHX_ const char *, char *);
+char * Perl_pathify_dirspec (pTHX_ const char *, char *);
+char * Perl_pathify_dirspec_ts (pTHX_ const 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 *);
+DIR *  Perl_opendir (pTHX_ const char *);
 int    Perl_rmscopy (pTHX_ char *, char *, int);
-int    Perl_my_mkdir (pTHX_ char *, Mode_t);
+int    Perl_my_mkdir (pTHX_ const char *, Mode_t);
 bool   Perl_vms_do_aexec (pTHX_ SV *, SV **, SV **);
 #endif
 char * Perl_my_getenv_len (pTHX_ const char *, unsigned long *, bool);
@@ -817,8 +817,8 @@
 char * Perl_my_crypt (pTHX_ const char *, const char *);
 Pid_t  Perl_my_waitpid (pTHX_ Pid_t, int *, int);
 char * my_gconvert (double, int, int, char *);
-int    Perl_kill_file (pTHX_ char *);
-int    Perl_my_chdir (pTHX_ char *);
+int    Perl_kill_file (pTHX_ const char *);
+int    Perl_my_chdir (pTHX_ const char *);
 FILE * Perl_my_tmpfile ();
 #ifndef HOMEGROWN_POSIX_SIGNALS
 int    Perl_my_sigaction (pTHX_ int, const struct sigaction*, struct 
sigaction*);
--- vms/vms.c_blead     Mon Jul 25 20:22:31 2005
+++ vms/vms.c   Mon Jul 25 20:22:40 2005
@@ -1005,12 +1005,12 @@
 
 
 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);
+static char *mp_do_fileify_dirspec(pTHX_ const char *, char *, int);
+static char *mp_do_tovmsspec(pTHX_ const char *, char *, int);
 
 /*{{{int do_rmdir(char *name)*/
 int
-Perl_do_rmdir(pTHX_ char *name)
+Perl_do_rmdir(pTHX_ const char *name)
 {
     char dirfile[NAM$C_MAXRSS+1];
     int retval;
@@ -1034,7 +1034,7 @@
  */
 /*{{{int kill_file(char *name)*/
 int
-Perl_kill_file(pTHX_ char *name)
+Perl_kill_file(pTHX_ const char *name)
 {
     char vmsname[NAM$C_MAXRSS+1], rspec[NAM$C_MAXRSS+1];
     unsigned long int jpicode = JPI$_UIC, type = ACL$C_FILE;
@@ -1135,7 +1135,7 @@
 
 /*{{{int my_mkdir(char *,Mode_t)*/
 int
-Perl_my_mkdir(pTHX_ char *dir, Mode_t mode)
+Perl_my_mkdir(pTHX_ const char *dir, Mode_t mode)
 {
   STRLEN dirlen = strlen(dir);
 
@@ -1158,7 +1158,7 @@
 
 /*{{{int my_chdir(char *)*/
 int
-Perl_my_chdir(pTHX_ char *dir)
+Perl_my_chdir(pTHX_ const char *dir)
 {
   STRLEN dirlen = strlen(dir);
 
@@ -2947,7 +2947,7 @@
  * rmesexpand() returns the address of the resultant string if
  * successful, and NULL on error.
  */
-static char *mp_do_tounixspec(pTHX_ char *, char *, int);
+static char *mp_do_tounixspec(pTHX_ const char *, char *, int);
 
 static char *
 mp_do_rmsexpand(pTHX_ char *filespec, char *outbuf, int ts, char *defspec, 
unsigned opts)
@@ -3126,7 +3126,7 @@
  */
 
 /*{{{ char *fileify_dirspec[_ts](char *path, char *buf)*/
-static char *mp_do_fileify_dirspec(pTHX_ char *dir,char *buf,int ts)
+static char *mp_do_fileify_dirspec(pTHX_ const char *dir,char *buf,int ts)
 {
     static char __fileify_retbuf[NAM$C_MAXRSS+1];
     unsigned long int dirlen, retlen, addmfd = 0, hasfilename = 0;
@@ -3140,9 +3140,8 @@
     dirlen = strlen(dir);
     while (dirlen && dir[dirlen-1] == '/') --dirlen;
     if (!dirlen) { /* We had Unixish '/' -- substitute top of current tree */
-      strcpy(trndir,"/sys$disk/000000");
-      dir = trndir;
-      dirlen = 16;
+      dir = "/sys$disk";
+      dirlen = 9;
     }
     if (dirlen > NAM$C_MAXRSS) {
       set_errno(ENAMETOOLONG); set_vaxc_errno(RMS$_SYN); return NULL;
@@ -3154,36 +3153,39 @@
         trnlnm_iter_count++; 
         if (trnlnm_iter_count >= PERL_LNM_MAX_ITER) break;
       }
-      dir = trndir;
-      dirlen = strlen(dir);
+      dirlen = strlen(trndir);
     }
     else {
       strncpy(trndir,dir,dirlen);
       trndir[dirlen] = '\0';
-      dir = trndir;
     }
+
+    /* At this point we are done with *dir and use *trndir which is a
+     * copy that can be modified.  *dir must not be modified.
+     */
+
     /* If we were handed a rooted logical name or spec, treat it like a
      * simple directory, so that
      *    $ Define myroot dev:[dir.]
      *    ... do_fileify_dirspec("myroot",buf,1) ...
      * does something useful.
      */
-    if (dirlen >= 2 && !strcmp(dir+dirlen-2,".]")) {
-      dir[--dirlen] = '\0';
-      dir[dirlen-1] = ']';
+    if (dirlen >= 2 && !strcmp(trndir+dirlen-2,".]")) {
+      trndir[--dirlen] = '\0';
+      trndir[dirlen-1] = ']';
     }
-    if (dirlen >= 2 && !strcmp(dir+dirlen-2,".>")) {
-      dir[--dirlen] = '\0';
-      dir[dirlen-1] = '>';
+    if (dirlen >= 2 && !strcmp(trndir+dirlen-2,".>")) {
+      trndir[--dirlen] = '\0';
+      trndir[dirlen-1] = '>';
     }
 
-    if ((cp1 = strrchr(dir,']')) != NULL || (cp1 = strrchr(dir,'>')) != NULL) {
+    if ((cp1 = strrchr(trndir,']')) != NULL || (cp1 = strrchr(trndir,'>')) != 
NULL) {
       /* If we've got an explicit filename, we can just shuffle the string. */
       if (*(cp1+1)) hasfilename = 1;
       /* Similarly, we can just back up a level if we've got multiple levels
          of explicit directories in a VMS spec which ends with directories. */
       else {
-        for (cp2 = cp1; cp2 > dir; cp2--) {
+        for (cp2 = cp1; cp2 > trndir; cp2--) {
           if (*cp2 == '.') {
             *cp2 = *cp1; *cp1 = '\0';
             hasfilename = 1;
@@ -3194,26 +3196,26 @@
       }
     }
 
-    if (hasfilename || !strpbrk(dir,"]:>")) { /* Unix-style path or filename */
-      if (dir[0] == '.') {
-        if (dir[1] == '\0' || (dir[1] == '/' && dir[2] == '\0'))
+    if (hasfilename || !strpbrk(trndir,"]:>")) { /* Unix-style path or 
filename */
+      if (trndir[0] == '.') {
+        if (trndir[1] == '\0' || (trndir[1] == '/' && trndir[2] == '\0'))
           return do_fileify_dirspec("[]",buf,ts);
-        else if (dir[1] == '.' &&
-                 (dir[2] == '\0' || (dir[2] == '/' && dir[3] == '\0')))
+        else if (trndir[1] == '.' &&
+                 (trndir[2] == '\0' || (trndir[2] == '/' && trndir[3] == 
'\0')))
           return do_fileify_dirspec("[-]",buf,ts);
       }
-      if (dirlen && dir[dirlen-1] == '/') {    /* path ends with '/'; just add 
.dir;1 */
+      if (dirlen && trndir[dirlen-1] == '/') {    /* path ends with '/'; just 
add .dir;1 */
         dirlen -= 1;                 /* to last element */
-        lastdir = strrchr(dir,'/');
+        lastdir = strrchr(trndir,'/');
       }
-      else if ((cp1 = strstr(dir,"/.")) != NULL) {
+      else if ((cp1 = strstr(trndir,"/.")) != NULL) {
         /* If we have "/." or "/..", VMSify it and let the VMS code
          * below expand it, rather than repeating the code to handle
          * relative components of a filespec here */
         do {
           if (*(cp1+2) == '.') cp1++;
           if (*(cp1+2) == '/' || *(cp1+2) == '\0') {
-            if (do_tovmsspec(dir,vmsdir,0) == NULL) return NULL;
+            if (do_tovmsspec(trndir,vmsdir,0) == NULL) return NULL;
             if (strchr(vmsdir,'/') != NULL) {
               /* If do_tovmsspec() returned it, it must have VMS syntax
                * delimiters in it, so it's a mixed VMS/Unix spec.  We take
@@ -3227,20 +3229,20 @@
           }
           cp1++;
         } while ((cp1 = strstr(cp1,"/.")) != NULL);
-        lastdir = strrchr(dir,'/');
+        lastdir = strrchr(trndir,'/');
       }
-      else if (dirlen >= 7 && !strcmp(&dir[dirlen-7],"/000000")) {
+      else if (dirlen >= 7 && !strcmp(&trndir[dirlen-7],"/000000")) {
         /* Ditto for specs that end in an MFD -- let the VMS code
          * figure out whether it's a real device or a rooted logical. */
-        dir[dirlen] = '/'; dir[dirlen+1] = '\0';
-        if (do_tovmsspec(dir,vmsdir,0) == NULL) return NULL;
+        trndir[dirlen] = '/'; trndir[dirlen+1] = '\0';
+        if (do_tovmsspec(trndir,vmsdir,0) == NULL) return NULL;
         if (do_fileify_dirspec(vmsdir,trndir,0) == NULL) return NULL;
         return do_tounixspec(trndir,buf,ts);
       }
       else {
-        if ( !(lastdir = cp1 = strrchr(dir,'/')) &&
-             !(lastdir = cp1 = strrchr(dir,']')) &&
-             !(lastdir = cp1 = strrchr(dir,'>'))) cp1 = dir;
+        if ( !(lastdir = cp1 = strrchr(trndir,'/')) &&
+             !(lastdir = cp1 = strrchr(trndir,']')) &&
+             !(lastdir = cp1 = strrchr(trndir,'>'))) cp1 = trndir;
         if ((cp2 = strchr(cp1,'.'))) {  /* look for explicit type */
           int ver; char *cp3;
           if (!*(cp2+1) || toupper(*(cp2+1)) != 'D' ||  /* Wrong type. */
@@ -3253,14 +3255,14 @@
             set_vaxc_errno(RMS$_DIR);
             return NULL;
           }
-          dirlen = cp2 - dir;
+          dirlen = cp2 - trndir;
         }
       }
       /* If we lead off with a device or rooted logical, add the MFD
          if we're specifying a top-level directory. */
-      if (lastdir && *dir == '/') {
+      if (lastdir && *trndir == '/') {
         addmfd = 1;
-        for (cp1 = lastdir - 1; cp1 > dir; cp1--) {
+        for (cp1 = lastdir - 1; cp1 > trndir; cp1--) {
           if (*cp1 == '/') {
             addmfd = 0;
             break;
@@ -3272,13 +3274,13 @@
       else if (ts) Newx(retspec,retlen+1,char);
       else retspec = __fileify_retbuf;
       if (addmfd) {
-        dirlen = lastdir - dir;
-        memcpy(retspec,dir,dirlen);
+        dirlen = lastdir - trndir;
+        memcpy(retspec,trndir,dirlen);
         strcpy(&retspec[dirlen],"/000000");
         strcpy(&retspec[dirlen+7],lastdir);
       }
       else {
-        memcpy(retspec,dir,dirlen);
+        memcpy(retspec,trndir,dirlen);
         retspec[dirlen] = '\0';
       }
       /* We've picked up everything up to the directory file name.
@@ -3293,14 +3295,14 @@
       struct NAM savnam, dirnam = cc$rms_nam;
 
       dirfab.fab$b_fns = strlen(dir);
-      dirfab.fab$l_fna = dir;
+      dirfab.fab$l_fna = trndir;
       dirfab.fab$l_nam = &dirnam;
       dirfab.fab$l_dna = ".DIR;1";
       dirfab.fab$b_dns = 6;
       dirnam.nam$b_ess = NAM$C_MAXRSS;
       dirnam.nam$l_esa = esa;
 
-      for (cp = dir; *cp; cp++)
+      for (cp = trndir; *cp; cp++)
         if (islower(*cp)) { haslower = 1; break; }
       if (!((sts = sys$parse(&dirfab))&1)) {
         if (dirfab.fab$l_sts == RMS$_DIR) {
@@ -3448,13 +3450,13 @@
 }  /* end of do_fileify_dirspec() */
 /*}}}*/
 /* External entry points */
-char *Perl_fileify_dirspec(pTHX_ char *dir, char *buf)
+char *Perl_fileify_dirspec(pTHX_ const char *dir, char *buf)
 { return do_fileify_dirspec(dir,buf,0); }
-char *Perl_fileify_dirspec_ts(pTHX_ char *dir, char *buf)
+char *Perl_fileify_dirspec_ts(pTHX_ const char *dir, char *buf)
 { return do_fileify_dirspec(dir,buf,1); }
 
 /*{{{ char *pathify_dirspec[_ts](char *path, char *buf)*/
-static char *mp_do_pathify_dirspec(pTHX_ char *dir,char *buf, int ts)
+static char *mp_do_pathify_dirspec(pTHX_ const char *dir,char *buf, int ts)
 {
     static char __pathify_retbuf[NAM$C_MAXRSS+1];
     unsigned long int retlen;
@@ -3486,16 +3488,19 @@
         return retpath;
       }
     }
-    dir = trndir;
 
-    if (!strpbrk(dir,"]:>")) { /* Unix-style path or plain name */
-      if (*dir == '.' && (*(dir+1) == '\0' ||
-                          (*(dir+1) == '.' && *(dir+2) == '\0')))
-        retlen = 2 + (*(dir+1) != '\0');
+    /* At this point we do not work with *dir, but the copy in
+     * *trndir that is modifiable.
+     */
+
+    if (!strpbrk(trndir,"]:>")) { /* Unix-style path or plain name */
+      if (*trndir == '.' && (*(trndir+1) == '\0' ||
+                          (*(trndir+1) == '.' && *(trndir+2) == '\0')))
+        retlen = 2 + (*(trndir+1) != '\0');
       else {
-        if ( !(cp1 = strrchr(dir,'/')) &&
-             !(cp1 = strrchr(dir,']')) &&
-             !(cp1 = strrchr(dir,'>')) ) cp1 = dir;
+        if ( !(cp1 = strrchr(trndir,'/')) &&
+             !(cp1 = strrchr(trndir,']')) &&
+             !(cp1 = strrchr(trndir,'>')) ) cp1 = trndir;
         if ((cp2 = strchr(cp1,'.')) != NULL &&
             (*(cp2-1) != '/' ||                /* Trailing '.', '..', */
              !(*(cp2+1) == '\0' ||             /* or '...' are dirs.  */
@@ -3512,16 +3517,16 @@
             set_vaxc_errno(RMS$_DIR);
             return NULL;
           }
-          retlen = cp2 - dir + 1;
+          retlen = cp2 - trndir + 1;
         }
         else {  /* No file type present.  Treat the filename as a directory. */
-          retlen = strlen(dir) + 1;
+          retlen = strlen(trndir) + 1;
         }
       }
       if (buf) retpath = buf;
       else if (ts) Newx(retpath,retlen+1,char);
       else retpath = __pathify_retbuf;
-      strncpy(retpath,dir,retlen-1);
+      strncpy(retpath, trndir, retlen-1);
       if (retpath[retlen-2] != '/') { /* If the path doesn't already end */
         retpath[retlen-1] = '/';      /* with '/', add it. */
         retpath[retlen] = '\0';
@@ -3535,8 +3540,8 @@
       struct NAM savnam, dirnam = cc$rms_nam;
 
       /* If we've got an explicit filename, we can just shuffle the string. */
-      if ( ( (cp1 = strrchr(dir,']')) != NULL ||
-             (cp1 = strrchr(dir,'>')) != NULL     ) && *(cp1+1)) {
+      if ( ( (cp1 = strrchr(trndir,']')) != NULL ||
+             (cp1 = strrchr(trndir,'>')) != NULL     ) && *(cp1+1)) {
         if ((cp2 = strchr(cp1,'.')) != NULL) {
           int ver; char *cp3;
           if (!*(cp2+1) || toupper(*(cp2+1)) != 'D' ||  /* Wrong type. */
@@ -3558,15 +3563,15 @@
         *cp1 = '.';
         /* We've now got a VMS 'path'; fall through */
       }
-      dirfab.fab$b_fns = strlen(dir);
-      dirfab.fab$l_fna = dir;
+      dirfab.fab$b_fns = strlen(trndir);
+      dirfab.fab$l_fna = trndir;
       if (dir[dirfab.fab$b_fns-1] == ']' ||
           dir[dirfab.fab$b_fns-1] == '>' ||
           dir[dirfab.fab$b_fns-1] == ':') { /* It's already a VMS 'path' */
         if (buf) retpath = buf;
         else if (ts) Newx(retpath,strlen(dir)+1,char);
         else retpath = __pathify_retbuf;
-        strcpy(retpath,dir);
+        strcpy(retpath,trndir);
         return retpath;
       } 
       dirfab.fab$l_dna = ".DIR;1";
@@ -3575,7 +3580,7 @@
       dirnam.nam$b_ess = (unsigned char) sizeof esa - 1;
       dirnam.nam$l_esa = esa;
 
-      for (cp = dir; *cp; cp++)
+      for (cp = trndir; *cp; cp++)
         if (islower(*cp)) { haslower = 1; break; }
 
       if (!(sts = (sys$parse(&dirfab)&1))) {
@@ -3639,16 +3644,17 @@
 }  /* end of do_pathify_dirspec() */
 /*}}}*/
 /* External entry points */
-char *Perl_pathify_dirspec(pTHX_ char *dir, char *buf)
+char *Perl_pathify_dirspec(pTHX_ const char *dir, char *buf)
 { return do_pathify_dirspec(dir,buf,0); }
-char *Perl_pathify_dirspec_ts(pTHX_ char *dir, char *buf)
+char *Perl_pathify_dirspec_ts(pTHX_ const char *dir, char *buf)
 { return do_pathify_dirspec(dir,buf,1); }
 
 /*{{{ char *tounixspec[_ts](char *path, char *buf)*/
-static char *mp_do_tounixspec(pTHX_ char *spec, char *buf, int ts)
+static char *mp_do_tounixspec(pTHX_ const 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];
+  char *dirend, *rslt, *cp1, *cp3, tmp[NAM$C_MAXRSS+1];
+  const char *cp2;
   int devlen, dirlen, retlen = NAM$C_MAXRSS+1;
   int expand = 1; /* guarantee room for leading and trailing slashes */
   unsigned short int trnlnm_iter_count;
@@ -3774,14 +3780,15 @@
 }  /* end of do_tounixspec() */
 /*}}}*/
 /* External entry points */
-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 *Perl_tounixspec(pTHX_ const char *spec, char *buf) { return 
do_tounixspec(spec,buf,0); }
+char *Perl_tounixspec_ts(pTHX_ const char *spec, char *buf) { return 
do_tounixspec(spec,buf,1); }
 
 /*{{{ char *tovmsspec[_ts](char *path, char *buf)*/
-static char *mp_do_tovmsspec(pTHX_ char *path, char *buf, int ts) {
+static char *mp_do_tovmsspec(pTHX_ const char *path, char *buf, int ts) {
   static char __tovmsspec_retbuf[NAM$C_MAXRSS+1];
   char *rslt, *dirend;
-  register char *cp1, *cp2;
+  register char *cp1;
+  const char *cp2;
   unsigned long int infront = 0, hasdir = 1;
 
   if (path == NULL) return NULL;
@@ -3922,7 +3929,7 @@
 char *Perl_tovmsspec_ts(pTHX_ char *path, char *buf) { return 
do_tovmsspec(path,buf,1); }
 
 /*{{{ char *tovmspath[_ts](char *path, char *buf)*/
-static char *mp_do_tovmspath(pTHX_ char *path, char *buf, int ts) {
+static char *mp_do_tovmspath(pTHX_ const 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;
@@ -3946,12 +3953,12 @@
 }  /* end of do_tovmspath() */
 /*}}}*/
 /* External entry points */
-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 *Perl_tovmspath(pTHX_ const char *path, char *buf) { return 
do_tovmspath(path,buf,0); }
+char *Perl_tovmspath_ts(pTHX_ const char *path, char *buf) { return 
do_tovmspath(path,buf,1); }
 
 
 /*{{{ char *tounixpath[_ts](char *path, char *buf)*/
-static char *mp_do_tounixpath(pTHX_ char *path, char *buf, int ts) {
+static char *mp_do_tounixpath(pTHX_ const 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;
@@ -3975,8 +3982,8 @@
 }  /* end of do_tounixpath() */
 /*}}}*/
 /* External entry points */
-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); }
+char *Perl_tounixpath(pTHX_ const char *path, char *buf) { return 
do_tounixpath(path,buf,0); }
+char *Perl_tounixpath_ts(pTHX_ const char *path, char *buf) { return 
do_tounixpath(path,buf,1); }
 
 /*
  * @(#)argproc.c 2.2 94/08/16  Mark Pizzolato ([EMAIL PROTECTED])
@@ -4859,7 +4866,7 @@
  */
 /*{{{ DIR *opendir(char*name) */
 DIR *
-Perl_opendir(pTHX_ char *name)
+Perl_opendir(pTHX_ const char *name)
 {
     DIR *dd;
     char dir[NAM$C_MAXRSS+1];
--- ext/compress/zlib/makefile.pl_blead Mon Jul 25 21:33:47 2005
+++ ext/compress/zlib/makefile.pl       Mon Jul 25 21:32:52 2005
@@ -193,7 +193,7 @@
        @echo All is ok.
 
 Zlib.xs:       typemap
-       @$(TOUCH) Zlib.xs
+       @ $(TOUCH) Zlib.xs
 
 EOM
 

Reply via email to