This patch fixes an issue that Craig Berry found in the handling of logical names of the form foo = "device:[dir]" when the EFS character set is enabled.

Regards,
-John
wb8...@qsl.net
Personal Opinion Only
--- /rsync_root/perl/vms/vms.c  Sun Feb 22 21:22:09 2009
+++ vms/vms.c   Tue Jun  2 20:42:26 2009
@@ -8231,7 +8231,7 @@
         * special device files.
          */
 
-       if ((add_6zero == 0) && (*nextslash == '/') &&
+       if (!islnm && (add_6zero == 0) && (*nextslash == '/') &&
            (&nextslash[1] == unixend)) {
          /* No real directory present */
          add_6zero = 1;
@@ -8491,7 +8491,7 @@
     vmsptr2 = vmsptr - 1;
     if ((vmslen > 1) &&
        (*vmsptr2 != ']') && (*vmsptr2 != '*') && (*vmsptr2 != '%') &&
-       (*vmsptr2 != ')') && (*lastdot != '.')) {
+       (*vmsptr2 != ')') && (*lastdot != '.') && (*vmsptr2 != ':')) {
        *vmsptr++ = '.';
         vmslen++;
     }
@@ -8677,7 +8677,7 @@
       }
   }
 
-/* If POSIX mode active, handle the conversion */
+/* If EFS charset mode active, handle the conversion */
 #if __CRTL_VER >= 80200000 && !defined(__VAX)
   if (decc_efs_charset) {
     posix_to_vmsspec_hardway(rslt, rslt_len, path, dir_flag, utf8_flag);

Reply via email to