Revert "Add VMS version of app_dirname()"
authorRichard Levitte <levitte@openssl.org>
Fri, 20 Apr 2018 10:22:36 +0000 (12:22 +0200)
committerRichard Levitte <levitte@openssl.org>
Wed, 25 Apr 2018 09:44:25 +0000 (11:44 +0200)
This reverts commit 215a6730f1eaf53b01a4eb10d75bd09fd74f70cc.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6033)

apps/apps.c

index 6ae85233ccdc6aefabaed72ab532cf9f39a850d4..2ab65b72134465aa8a5fde78481fcf8c9d9c571f 100644 (file)
 #endif
 #include <ctype.h>
 #include <errno.h>
-#ifdef __VMS
-# include <descrip.h>
-# include <iledef.h>
-# include <fscndef.h>
-# include <starlet.h>
-#endif
 #include <openssl/err.h>
 #include <openssl/x509.h>
 #include <openssl/x509v3.h>
@@ -2427,57 +2421,14 @@ static char *posix_dirname(char *path)
 }
 
 /*
- * TODO: implement app_dirname for Windows.
+ * TODO: implement app_dirname for Windows
+ * and VMS.
  */
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__VMS)
 char *app_dirname(char *path)
 {
     return posix_dirname(path);
 }
-#elif defined(__VMS)
-/*
- * sys$filescan fills the given item list with pointers into the original
- * path string, so all we need to do is to find the file name and simply
- * put a NUL byte wherever the FSCN$_NAME pointer points.  If there is no
- * file name part and the path string isn't the empty string, we know for
- * a fact that the whole string is a directory spec and return it as is.
- * Otherwise or if that pointer is the starting address of the original
- * path string, we know to return "sys$disk:[]", which corresponds to the
- * Unixly ".".
- *
- * If sys$filescan returns an error status, we know that this is not
- * parsable as a VMS file spec, and then use the fallback, in case we
- * have a Unix type path.
- */
-char *app_dirname(char *path)
-{
-    char *ret = "sys$disk:[]";
-    struct dsc$descriptor_s dsc_path = { 0 };
-    ile2 itemlist[] = {
-        {0, FSCN$_NAME, 0},
-        {0, 0, 0}
-    };
-    int fields;
-    int status;
-
-    dsc_path.dsc$a_pointer = path;
-    dsc_path.dsc$w_length = strlen(path);
-    status = sys$filescan(&dsc_path, itemlist, &fields, 0, 0);
-
-    if (!(status & 1))
-        return posix_dirname(path);
-
-    if ((fields & (1 << FSCN$_NAME)) == 0) {
-        if (dsc_path.dsc$w_length != 0)
-            ret = path;
-    } else if (itemlist[0].ile2$ps_bufaddr != path) {
-        if (itemlist[0].ile2$ps_bufaddr != path) {
-            *itemlist[0].ile2$ps_bufaddr = '\0';
-            ret = path;
-        }
-    }
-    return ret;
-}
 #endif
 
 /* raw_read|write section */