 2ad688ed7c
			
		
	
	2ad688ed7c
	
	
	
		
			
			Update the packages/vms/readme file to be current. Also some files for the GNV based build were either missing or needed an update. curl_crtl_init.c is a special file that is run before main() to set up the proper C runtime behavior. generate_vax_transfer.com generates the VAX transfer vector modules from the gnv_libcurl_symbols.opt file. gnv_conftest.c_first is a helper file needed for configure scripts to come up with the expected answers on VMS. gnv_libcurl_symbols.opt is the public symbols for the libcurl shared image. gnv_link_curl.com builds the shared libcurl image and rebuilds other programs to use it. macro32_exactcase.patch is a hack to make a local copy of the VMS Macro32 assembler case sensitive, which is needed to build the VAX transfer modules. report_openssl_version.c is a tool for help verify that the libcurl shared image is being built for a minium version of openssl.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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);
 | |
| }
 |