Mercurial > hgrepos > Python2 > PyMuPDF
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 /* File: report_openssl_version.c | |
| 2 * | |
| 3 * $Id$ | |
| 4 * | |
| 5 * This file dynamically loads the openssl shared image to report the | |
| 6 * version string. | |
| 7 * | |
| 8 * It will optionally place that version string in a DCL symbol. | |
| 9 * | |
| 10 * Usage: report_openssl_version <shared_image> [<dcl_symbol>] | |
| 11 * | |
| 12 * Copyright 2013, John Malmberg | |
| 13 * | |
| 14 * Permission to use, copy, modify, and/or distribute this software for any | |
| 15 * purpose with or without fee is hereby granted, provided that the above | |
| 16 * copyright notice and this permission notice appear in all copies. | |
| 17 * | |
| 18 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
| 19 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
| 20 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
| 21 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
| 22 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
| 23 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | |
| 24 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
| 25 * | |
| 26 */ | |
| 27 | |
| 28 #include <dlfcn.h> | |
| 29 #include <openssl/opensslv.h> | |
| 30 #include <openssl/crypto.h> | |
| 31 | |
| 32 #include <string.h> | |
| 33 #include <descrip.h> | |
| 34 #include <libclidef.h> | |
| 35 #include <stsdef.h> | |
| 36 #include <errno.h> | |
| 37 | |
| 38 unsigned long LIB$SET_SYMBOL( | |
| 39 const struct dsc$descriptor_s * symbol, | |
| 40 const struct dsc$descriptor_s * value, | |
| 41 const unsigned long * table_type); | |
| 42 | |
| 43 int main(int argc, char ** argv) { | |
| 44 | |
| 45 | |
| 46 void * libptr; | |
| 47 const char * (*ssl_version)(int t); | |
| 48 const char * version; | |
| 49 | |
| 50 if (argc < 1) { | |
| 51 puts("report_openssl_version filename"); | |
| 52 exit(1); | |
| 53 } | |
| 54 | |
| 55 libptr = dlopen(argv[1], 0); | |
| 56 | |
| 57 ssl_version = (const char * (*)(int))dlsym(libptr, "SSLeay_version"); | |
| 58 if ((void *)ssl_version == NULL) { | |
| 59 ssl_version = (const char * (*)(int))dlsym(libptr, "ssleay_version"); | |
| 60 if ((void *)ssl_version == NULL) { | |
| 61 ssl_version = (const char * (*)(int))dlsym(libptr, "SSLEAY_VERSION"); | |
| 62 } | |
| 63 } | |
| 64 | |
| 65 dlclose(libptr); | |
| 66 | |
| 67 if ((void *)ssl_version == NULL) { | |
| 68 puts("Unable to lookup version of OpenSSL"); | |
| 69 exit(1); | |
| 70 } | |
| 71 | |
| 72 version = ssl_version(SSLEAY_VERSION); | |
| 73 | |
| 74 puts(version); | |
| 75 | |
| 76 /* Was a symbol argument given? */ | |
| 77 if (argc > 1) { | |
| 78 int status; | |
| 79 struct dsc$descriptor_s symbol_dsc; | |
| 80 struct dsc$descriptor_s value_dsc; | |
| 81 const unsigned long table_type = LIB$K_CLI_LOCAL_SYM; | |
| 82 | |
| 83 symbol_dsc.dsc$a_pointer = argv[2]; | |
| 84 symbol_dsc.dsc$w_length = strlen(argv[2]); | |
| 85 symbol_dsc.dsc$b_dtype = DSC$K_DTYPE_T; | |
| 86 symbol_dsc.dsc$b_class = DSC$K_CLASS_S; | |
| 87 | |
| 88 value_dsc.dsc$a_pointer = (char *)version; /* Cast ok */ | |
| 89 value_dsc.dsc$w_length = strlen(version); | |
| 90 value_dsc.dsc$b_dtype = DSC$K_DTYPE_T; | |
| 91 value_dsc.dsc$b_class = DSC$K_CLASS_S; | |
| 92 | |
| 93 status = LIB$SET_SYMBOL(&symbol_dsc, &value_dsc, &table_type); | |
| 94 if (!$VMS_STATUS_SUCCESS(status)) { | |
| 95 exit(status); | |
| 96 } | |
| 97 } | |
| 98 | |
| 99 exit(0); | |
| 100 } |
