Avoid some doubled escapes in tovmsspec.
authorCraig A. Berry <craigberry@mac.com>
Tue, 4 Dec 2012 13:23:57 +0000 (07:23 -0600)
committerCraig A. Berry <craigberry@mac.com>
Tue, 4 Dec 2012 13:23:57 +0000 (07:23 -0600)
Since it's impossible to guarantee a filename is never makes
multiple trips through the Unix-to-VMS converter, it's important
not to escape characters that have already been escaped.

vms/vms.c

index 43496ef..b3201a4 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -8582,7 +8582,8 @@ static char *int_tovmsspec
          *(cp1++) = '?';
        cp2++;
     case ' ':
-       *(cp1)++ = '^';
+       if (cp2 > path && *(cp2-1) != '^') /* not previously escaped */
+           *(cp1)++ = '^';
        *(cp1)++ = '_';
        cp2++;
        break;
@@ -8666,7 +8667,8 @@ static char *int_tovmsspec
     case '|':
     case '<':
     case '>':
-       *(cp1++) = '^';
+       if (cp2 > path && *(cp2-1) != '^') /* not previously escaped */
+           *(cp1++) = '^';
        *(cp1++) = *(cp2++);
        break;
     case ';':