Remove EFS escapes in unixify without directory components.
authorCraig A. Berry <craigberry@mac.com>
Tue, 5 Feb 2013 13:20:23 +0000 (07:20 -0600)
committerCraig A. Berry <craigberry@mac.com>
Tue, 5 Feb 2013 13:20:23 +0000 (07:20 -0600)
When converting a VMS file specification containing caret escapes
for extended characters to Unix format, we need to remove those
escapes.  We were doing so for paths containing directory
components but we also need to do it for bare filenames.  I.e.,
this was working:

disk:[dir]foo^%bar --> /disk/dir/foo%bar

but this was not (until now):

foo^%bar --> foo%bar

vms/vms.c

index 06a606a..b92b7da 100644 (file)
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -6957,7 +6957,13 @@ static char *int_tounixspec(const char *spec, char *rslt, int * utf8_fl)
   if (dirend == NULL) dirend = strrchr(spec,'>');
   if (dirend == NULL) dirend = strchr(spec,':');
   if (dirend == NULL) {
-    strcpy(rslt,spec);
+    while (*cp2) {
+        if (*cp2 == '^')
+            cp2++;
+        else 
+            *(cp1++) = *(cp2++);
+    }
+    *cp1 = '\0';    
     if (vms_debug_fileify) {
         fprintf(stderr, "int_tounixspec: rslt = %s\n", rslt);
     }