diff mupdf-source/thirdparty/curl/packages/vms/report_openssl_version.c @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/curl/packages/vms/report_openssl_version.c	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,100 @@
+/* File: report_openssl_version.c
+ *
+ * $Id$
+ *
+ * This file dynamically loads the openssl shared image to report the
+ * version string.
+ *
+ * It will optionally place that version string in a DCL symbol.
+ *
+ * Usage:  report_openssl_version <shared_image> [<dcl_symbol>]
+ *
+ * Copyright 2013, John Malmberg
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#include <dlfcn.h>
+#include <openssl/opensslv.h>
+#include <openssl/crypto.h>
+
+#include <string.h>
+#include <descrip.h>
+#include <libclidef.h>
+#include <stsdef.h>
+#include <errno.h>
+
+unsigned long LIB$SET_SYMBOL(
+    const struct dsc$descriptor_s * symbol,
+    const struct dsc$descriptor_s * value,
+    const unsigned long * table_type);
+
+int main(int argc, char ** argv) {
+
+
+void * libptr;
+const char * (*ssl_version)(int t);
+const char * version;
+
+   if (argc < 1) {
+       puts("report_openssl_version filename");
+       exit(1);
+   }
+
+   libptr = dlopen(argv[1], 0);
+
+   ssl_version = (const char * (*)(int))dlsym(libptr, "SSLeay_version");
+   if ((void *)ssl_version == NULL) {
+      ssl_version = (const char * (*)(int))dlsym(libptr, "ssleay_version");
+      if ((void *)ssl_version == NULL) {
+         ssl_version = (const char * (*)(int))dlsym(libptr, "SSLEAY_VERSION");
+      }
+   }
+
+   dlclose(libptr);
+
+   if ((void *)ssl_version == NULL) {
+      puts("Unable to lookup version of OpenSSL");
+      exit(1);
+   }
+
+   version = ssl_version(SSLEAY_VERSION);
+
+   puts(version);
+
+   /* Was a symbol argument given? */
+   if (argc > 1) {
+      int status;
+      struct dsc$descriptor_s symbol_dsc;
+      struct dsc$descriptor_s value_dsc;
+      const unsigned long table_type = LIB$K_CLI_LOCAL_SYM;
+
+      symbol_dsc.dsc$a_pointer = argv[2];
+      symbol_dsc.dsc$w_length = strlen(argv[2]);
+      symbol_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+      symbol_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+      value_dsc.dsc$a_pointer = (char *)version; /* Cast ok */
+      value_dsc.dsc$w_length = strlen(version);
+      value_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
+      value_dsc.dsc$b_class = DSC$K_CLASS_S;
+
+      status = LIB$SET_SYMBOL(&symbol_dsc, &value_dsc, &table_type);
+      if (!$VMS_STATUS_SUCCESS(status)) {
+         exit(status);
+      }
+   }
+
+   exit(0);
+}