vms.c EFS logical name fix.
John E. Malmberg [Thu, 4 Jun 2009 13:46:50 +0000 (08:46 -0500)]
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
wb8tyw@qsl.net
Personal Opinion Only

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>

vms/vms.c

index 10ee36b..0896934 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -8231,7 +8231,7 @@ int sts, v_len, r_len, d_len, n_len, e_len, vs_len;
         * 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 @@ int sts, v_len, r_len, d_len, n_len, e_len, vs_len;
     vmsptr2 = vmsptr - 1;
     if ((vmslen > 1) &&
        (*vmsptr2 != ']') && (*vmsptr2 != '*') && (*vmsptr2 != '%') &&
-       (*vmsptr2 != ')') && (*lastdot != '.')) {
+       (*vmsptr2 != ')') && (*lastdot != '.') && (*vmsptr2 != ':')) {
        *vmsptr++ = '.';
         vmslen++;
     }
@@ -8677,7 +8677,7 @@ static char *int_tovmsspec
       }
   }
 
-/* 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);