1$! File: gnv_link_curl.com 2$! 3$! File to build images using gnv$libcurl.exe 4$! 5$! Copyright (C) John Malmberg 6$! 7$! Permission to use, copy, modify, and/or distribute this software for any 8$! purpose with or without fee is hereby granted, provided that the above 9$! copyright notice and this permission notice appear in all copies. 10$! 11$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 17$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18$! 19$! SPDX-License-Identifier: ISC 20$! 21$!============================================================================ 22$! 23$! Save this so we can get back. 24$ default_dir = f$environment("default") 25$ define/job gnv_packages_vms 'default_dir' 26$! 27$ on warning then goto all_exit 28$! 29$! On VAX, we need to generate a Macro transfer vector. 30$ parse_style = "TRADITIONAL" 31$ if (f$getsyi("HW_MODEL") .lt. 1024) 32$ then 33$ @generate_vax_transfer.com 34$ arch_name = "VAX" 35$ else 36$ arch_name = "" 37$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE") 38$ if (arch_name .eqs. "") then arch_name = "UNK" 39$! 40$! Extended parsing option starts with VMS 7.3-1. 41$! There is no 7.4, so that simplifies the parse a bit. 42$! 43$ node_swvers = f$getsyi("node_swvers") 44$ version_patch = f$extract(1, f$length(node_swvers), node_swvers) 45$ maj_ver = f$element(0, ".", version_patch) 46$ min_ver_patch = f$element(1, ".", version_patch) 47$ min_ver = f$element(0, "-", min_ver_patch) 48$ patch = f$element(1, "-", min_ver_patch) 49$ if patch .eqs. "-" then patch = "" 50$ parse_x = 0 51$ if maj_ver .ges. "8" 52$ then 53$ parse_x = 1 54$ else 55$ if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. "" 56$ then 57$ parse_x = 1 58$ endif 59$ endif 60$ if parse_x 61$ then 62$ parse_style = f$getjpi("", "parse_style_perm") 63$ endif 64$ endif 65$! 66$! 67$! Move to where the base directories. 68$ set def [--] 69$! 70$! 71$! Build the Message file. 72$!-------------------------- 73$ if f$search("[.packages.vms]curlmsg.obj") .eqs. "" 74$ then 75$ message [.packages.vms]curlmsg.msg/object=[.packages.vms] 76$ endif 77$ if f$search("gnv$curlmsg.exe") .eqs. "" 78$ then 79$ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj 80$ endif 81$! 82$! 83$! Need to build the common init module. 84$!------------------------------------------- 85$ cflags = "/list/show=(expan,includ)" 86$ init_obj = "[.packages.vms]curl_crtl_init.obj" 87$ if f$search(init_obj) .eqs. "" 88$ then 89$ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj' 90$ endif 91$ purge 'init_obj' 92$ rename 'init_obj' ;1 93$! 94$! 95$! Need to build the module to test the HP OpenSSL version 96$!-------------------------------------------------------- 97$ if arch_name .nes. "VAX" 98$ then 99$ rpt_obj = "[.packages.vms]report_openssl_version.obj 100$ if f$search(rpt_obj) .eqs. "" 101$ then 102$ cc'cflags' 'default_dir'report_openssl_version.c/obj='rpt_obj' 103$ endif 104$ purge 'rpt_obj' 105$ rename 'rpt_obj' ;1 106$! 107$ link/exe='default_dir'report_openssl_version.exe 'rpt_obj' 108$ report_openssl_version := $'default_dir'report_openssl_version.exe 109$ endif 110$! 111$! 112$ base_link_opt_file = "[.packages.vms.''arch_name']gnv_libcurl_linker.opt" 113$ share_link_opt_file = "[.packages.vms.''arch_name']gnv_ssl_libcurl_linker.opt" 114$ if f$search(base_link_opt_file) .eqs. "" 115$ then 116$ base_link_opt_file = "[.packages.vms]gnv_libcurl_linker.opt" 117$ share_link_opt_file = "[.packages.vms]gnv_ssl_libcurl_linker.opt" 118$ if f$search(base_link_opt_file) .eqs. "" 119$ then 120$ write sys$output "Can not find base library option file!" 121$ goto all_exit 122$ endif 123$ endif 124$! 125$! Create the a new option file with special fixup for HP SSL 126$! For a shared image, we always want ZLIB and 32 bit HPSSL 127$! 128$ if f$search("gnv$libzshr32") .eqs. "" 129$ then 130$ write sys$output "VMSPORTS/GNV LIBZ Shared image not found!" 131$ goto all_exit 132$ endif 133$! 134$! 135$! Need to check the version of the HP SSL shared image. 136$! 137$! VAX platform can not be checked this way, it appears symbol lookup 138$! was disabled. VAX has not been updated in a while. 139$ if arch_name .eqs. "VAX" 140$ then 141$ hp_ssl_libcrypto32 = "sys$common:[syslib]ssl$libcrypto_shr32.exe" 142$ hp_ssl_libssl32 = "sys$common:[syslib]ssl$libssl_shr32.exe" 143$ if f$search(hp_ssl_libcrypto32) .nes. "" 144$ then 145$ use_hp_ssl = 1 146$ curl_ssl_libcrypto32 = hp_ssl_libcrypto32 147$ curl_ssl_libssl32 = hp_ssl_libssl32 148$ curl_ssl_version = "OpenSSL/0.9.6g" 149$ else 150$ write sys$output "HP OpenSSL Shared images not found!" 151$ goto all_exit 152$ endif 153$ else 154$! 155$! Minimum HP version we can use reports: 156$! "OpenSSL 0.9.8w 23 Apr 2012" 157$! 158$ use_hp_ssl = 0 159$ hp_ssl_libcrypto32 = "sys$share:ssl$libcrypto_shr32.exe" 160$ hp_ssl_libssl32 = "sys$share:ssl$libssl_shr32.exe" 161$ if f$search(hp_ssl_libcrypto32) .nes. "" 162$ then 163$ curl_ssl_libcrypto32 = hp_ssl_libcrypto32 164$ curl_ssl_libssl32 = hp_ssl_libssl32 165$ report_openssl_version 'hp_ssl_libcrypto32' hp_ssl_version 166$ endif 167$! 168$ if f$type(hp_ssl_version) .eqs. "STRING" 169$ then 170$ curl_ssl_version = hp_ssl_version 171$ full_version = f$element(1, " ", hp_ssl_version) 172$ ver_maj = f$element(0, ".", full_version) 173$ ver_min = f$element(1, ".", full_version) 174$ ver_patch = f$element(2, ".", full_version) 175$! ! ver_patch is typically both a number and some letters 176$ ver_patch_len = f$length(ver_patch) 177$ ver_patchltr = "" 178$ver_patch_loop: 179$ ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch) 180$ if ver_patchltr_c .les. "9" then goto ver_patch_loop_end 181$ ver_patchltr = ver_patchltr_c + ver_patchltr 182$ ver_patch_len = ver_patch_len - 1 183$ goto ver_patch_loop 184$ver_patch_loop_end: 185$ ver_patchnum = ver_patch - ver_patchltr 186$ if 'ver_maj' .ge. 0 187$ then 188$ if 'ver_min' .ge. 9 189$ then 190$ if 'ver_patchnum' .ge. 8 191$ then 192$ if ver_patchltr .ges. "w" then use_hp_ssl = 1 193$ endif 194$ endif 195$ endif 196$set nover 197$ if use_hp_ssl .eq. 0 198$ then 199$ write sys$output - 200 " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!" 201$ endif 202$ else 203$ write sys$output "Unable to get version of HP OpenSSL" 204$ endif 205$! 206$ gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe" 207$ gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe" 208$ if f$search(gnv_ssl_libcrypto32) .nes. "" 209$ then 210$ report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version 211$ endif 212$! 213$ use_gnv_ssl = 0 214$ if f$type(gnv_ssl_version) .eqs. "STRING" 215$ then 216$ gnv_full_version = f$element(1, " ", gnv_ssl_version) 217$ gnv_ver_maj = f$element(0, ".", gnv_full_version) 218$ gnv_ver_min = f$element(1, ".", gnv_full_version) 219$ gnv_ver_patch = f$element(2, ".", gnv_full_version) 220$ gnv_ver_patch_len = f$length(gnv_ver_patch) 221$ gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch) 222$ gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch) 223$ if 'gnv_ver_maj' .ge. 0 224$ then 225$ if 'gnv_ver_min' .ge. 9 226$ then 227$ if 'gnv_ver_patchnum' .ge. 8 228$ then 229$ if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1 230$ endif 231$ endif 232$ endif 233$ if use_gnv_ssl .eq. 0 234$ then 235$ write sys$output - 236 "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!" 237$ endif 238$! 239$! Prefer to break the tie with the lowest supported version 240$! For simplicity, if the GNV image is present, it will be used. 241$! Version tuple is not a simple compare. 242$! 243$ if use_gnv_ssl .eq. 1 then 244$ curl_ssl_libcrypto32 = gnv_ssl_libcrypto32 245$ curl_ssl_libssl32 = gnv_ssl_libssl32 246$ curl_ssl_version = gnv_ssl_version 247$ use_hp_ssl = 0 248$ endif 249!$! 250$ else 251$ write sys$output "Unable to get version of GNV OpenSSL" 252$ endif 253$! 254$! Need to write a release note section about HP OpenSSL 255$! 256$create 'default_dir'hp_ssl_release_info.txt 257$deck 258This package is built on with the OpenSSL version listed below and requires 259the shared images from the HP OpenSSL product that is kitted with that 260version or a compatible later version. 261 262For Alpha and IA64 platforms, see the url below to register to get the 263download URL. The kit will be HP 1.4-467 or later. 264 https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html 265 266For VAX, use the same registration, but remove the kit name from any of the 267download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE 268 269If your system can not be upgraded to a compatible version of OpenSSL, then 270you can extract the two shared images from the kit and place them in the 271[vms$common.gnv.lib]directory of the volume that you are installing GNV and 272or GNV compatible components like Curl. 273 274If GNV is installed, you must run the GNV startup procedure before these steps 275and before installing Curl. 276 277 278 1. make sure that [vms$common.gnv.lib] exists by using the following 279 commands. We want the directory to be in lowercase except on VAX. 280 281 $SET PROCESS/PARSE=extend !If not VAX. 282 $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re 283 284 2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images. 285 286 $PRODUCT EXTRACT FILE - 287 /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)- 288 /source=device:[dir] - 289 /options=noconfirm - 290 /destination=device:[vms$common.gnv.lib] SSL 291 292The [vms$common.sys$startup}curl_startup.com procedure will then configure 293libcurl to use these shared images instead of the system ones. 294 295When you upgrade SSL on VMS to the newer version of HP SSL, then these copies 296should be deleted. 297 298$eod 299$! 300$ open/append sslr 'default_dir'hp_ssl_release_info.txt 301$ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version 302$ write sslr "" 303$ close sslr 304$! 305$! 306$! LIBZ 307$ libzshr_line = "" 308$ try_shr = "gnv$libzshr32" 309$ if f$search(try_shr) .nes. "" 310$ then 311$ libzshr_line = "''try_shr'/share" 312$ else 313$ write sys$output "''try_shr' image not found!" 314$ goto all_exit 315$ endif 316$! 317$! 318$ gssrtlshr_line = "" 319$ if arch_name .nes. "VAX" 320$ then 321$ try_shr = "sys$share:gss$rtl" 322$ if f$search("''try_shr'.exe") .nes. "" 323$ then 324$ gssrtlshr_line = "''try_shr'/share" 325$ else 326$ write sys$output "''try_shr' image not found!" 327$ goto all_exit 328$ endif 329$ endif 330$! 331$! 332$! 333$ if f$search(share_link_opt_file) .eqs. "" 334$ then 335$ create 'share_link_opt_file' 336$ open/append slopt 'share_link_opt_file' 337$ if libzshr_line .nes. "" then write slopt libzshr_line 338$ if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line 339$ write slopt "gnv$curl_ssl_libcryptoshr32/share" 340$ write slopt "gnv$curl_ssl_libsslshr32/share" 341$ close slopt 342$ endif 343$! 344$! DCL build puts curllib in architecture directory 345$! GNV build uses the makefile. 346$ libfile = "[.packages.vms.''arch_name']curllib.olb" 347$ if f$search(libfile) .nes. "" 348$ then 349$ olb_file = libfile 350$ else 351$ ! GNV based build 352$ libfile = "[.lib.^.libs]libcurl.a" 353$ if f$search(libfile) .nes. "" 354$ then 355$ olb_file = libfile 356$ else 357$ write sys$output - 358 "Can not build shared image, libcurl object library not found!" 359$ goto all_exit 360$ endif 361$ endif 362$! 363$gnv_libcurl_share = "''default_dir'gnv$libcurl.exe" 364$! 365$ if f$search(gnv_libcurl_share) .eqs. "" 366$ then 367$ if arch_name .nes. "VAX" 368$ then 369$ define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32' 370$ define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32' 371$ link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' - 372 /map='default_dir'gnv$libcurl.map - 373 gnv_packages_vms:gnv_libcurl_symbols.opt/opt,- 374 'olb_file'/lib,- 375 'share_link_opt_file'/opt 376$ else 377$! VAX will not allow the logical name hack for the 378$! SSL libcryto library, it is pulling it in twice if I try it. 379$ link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map - 380 gnv_packages_vms:gnv_libcurl_xfer.opt/opt,- 381 'olb_file'/lib,- 382 'base_link_opt_file'/opt 383$ endif 384$ endif 385$! 386$! 387$ if f$search("[.src]curl-tool_main.o") .nes. "" 388$ then 389$! From src/makefile.inc: 390$! # libcurl has sources that provide functions named curlx_* that aren't 391$! # part of the official API, but we re-use the code here to avoid 392$! # duplication. 393$! 394$! 395$ if f$search("[.src]curl.exe") .eqs. "" 396$ then 397$ define/user gnv$libcurl 'gnv_libcurl_share' 398$ link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf - 399 [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, - 400 [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, - 401 [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, - 402 [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.o, - 403 [.src]curl-tool_cb_wrt.o, [.src]curl-tool_cfgable.o, - 404 [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, - 405 [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, - 406 [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, - 407 [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, - 408 [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, - 409 [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, - 410 [.src]curl-tool_mfiles.o, - 411 [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, - 412 [.src]curl-tool_operhlp.o, - 413 [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, - 414 [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, - 415 [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, - 416 [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, - 417 [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, - 418 [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, - 419 [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,- 420 sys$input:/opt 421gnv$libcurl/share 422gnv_packages_vms:curl_crtl_init.obj 423$ endif 424$ else 425$ curl_exe = "[.src]curl.exe" 426$ curl_dsf = "[.src]curl.dsf" 427$ curl_main = "[.packages.vms.''arch_name']tool_main.obj" 428$ curl_src = "[.packages.vms.''arch_name']curlsrc.olb" 429$ curl_lib = "[.packages.vms.''arch_name']curllib.olb" 430$ strcase = "strcase" 431$ nonblock = "nonblock" 432$ warnless = "warnless" 433$! 434$! Extended parse style requires special quoting 435$! 436$ if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED") 437$ then 438$ strcase = """strcase""" 439$ nonblock = """nonblock""" 440$ warnless = """warnless""" 441$ endif 442$ if f$search(curl_exe) .eqs. "" 443$ then 444$ define/user gnv$libcurl 'gnv_libcurl_share' 445$ link'ldebug'/exe='curl_exe'/dsf='curl_dsf' - 446 'curl_main','curl_src'/lib, - 447 'curl_lib'/library/include=- 448 ('strcase','nonblock','warnless'),- 449 gnv_packages_vms:curlmsg.obj,- 450 sys$input:/opt 451gnv$libcurl/share 452gnv_packages_vms:curl_crtl_init.obj 453$ endif 454$ endif 455$! 456$! 457$! 458$! in6addr_missing so skip building: 459$! [.server]sws.o 460$! [.server]sockfilt.o 461$! [.server]tftpd.o 462$! 463$! 464$ target = "10-at-a-time" 465$ if f$search("[.docs.examples]''target'.o") .eqs. "" 466$ then 467$ write sys$output "examples not built" 468$ goto all_exit 469$ endif 470$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 471$ then 472$ define/user gnv$libcurl 'gnv_libcurl_share' 473$ link'ldebug'/exe=[.docs.examples]'target'.exe- 474 /dsf=[.docs.examples]'target'.dsf - 475 [.docs.examples]'target'.o,- 476 gnv$'target'.opt/opt,- 477 sys$input:/opt 478gnv$libcurl/share 479$ endif 480$! 481$! 482$ target = "anyauthput" 483$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 484$ then 485$ define/user gnv$libcurl 'gnv_libcurl_share' 486$ link'ldebug'/exe=[.docs.examples]'target'.exe- 487 /dsf=[.docs.examples]'target'.dsf - 488 [.docs.examples]'target'.o,- 489 gnv$'target'.opt/opt,- 490 sys$input:/opt 491gnv$libcurl/share 492$ endif 493$! 494$! 495$ target = "certinfo" 496$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 497$ then 498$ define/user gnv$libcurl 'gnv_libcurl_share' 499$ link'ldebug'/exe=[.docs.examples]'target'.exe- 500 /dsf=[.docs.examples]'target'.dsf - 501 [.docs.examples]'target'.o,- 502 gnv$'target'.opt/opt,- 503 sys$input:/opt 504gnv$libcurl/share 505$ endif 506$! 507$! 508$ target = "cookie_interface" 509$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 510$ then 511$ define/user gnv$libcurl 'gnv_libcurl_share' 512$ link'ldebug'/exe=[.docs.examples]'target'.exe- 513 /dsf=[.docs.examples]'target'.dsf - 514 [.docs.examples]'target'.o,- 515 gnv$'target'.opt/opt,- 516 sys$input:/opt 517gnv$libcurl/share 518$ endif 519$! 520$! 521$ target = "debug" 522$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 523$ then 524$ define/user gnv$libcurl 'gnv_libcurl_share' 525$ link'ldebug'/exe=[.docs.examples]'target'.exe- 526 /dsf=[.docs.examples]'target'.dsf - 527 [.docs.examples]'target'.o,- 528 gnv$'target'.opt/opt,- 529 sys$input:/opt 530gnv$libcurl/share 531$ endif 532$! 533$! 534$ target = "fileupload" 535$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 536$ then 537$ define/user gnv$libcurl 'gnv_libcurl_share' 538$ link'ldebug'/exe=[.docs.examples]'target'.exe- 539 /dsf=[.docs.examples]'target'.dsf - 540 [.docs.examples]'target'.o,- 541 gnv$'target'.opt/opt,- 542 sys$input:/opt 543gnv$libcurl/share 544$ endif 545$! 546$! 547$ target = "fopen" 548$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 549$ then 550$ define/user gnv$libcurl 'gnv_libcurl_share' 551$ link'ldebug'/exe=[.docs.examples]'target'.exe- 552 /dsf=[.docs.examples]'target'.dsf - 553 [.docs.examples]'target'.o,- 554 gnv$'target'.opt/opt,- 555 sys$input:/opt 556gnv$libcurl/share 557$ endif 558$! 559$! 560$target = "ftpget" 561$if f$search("[.docs.examples]''target'.exe") .eqs. "" 562$then 563$ define/user gnv$libcurl 'gnv_libcurl_share' 564$ link'ldebug'/exe=[.docs.examples]'target'.exe- 565 /dsf=[.docs.examples]'target'.dsf - 566 [.docs.examples]'target'.o,- 567 gnv$'target'.opt/opt,- 568 sys$input:/opt 569gnv$libcurl/share 570$endif 571$! 572$! 573$target = "ftpgetresp" 574$if f$search("[.docs.examples]''target'.exe") .eqs. "" 575$then 576$ define/user gnv$libcurl 'gnv_libcurl_share' 577$ link'ldebug'/exe=[.docs.examples]'target'.exe- 578 /dsf=[.docs.examples]'target'.dsf - 579 [.docs.examples]'target'.o,- 580 gnv$'target'.opt/opt,- 581 sys$input:/opt 582gnv$libcurl/share 583$endif 584$! 585$! 586$target = "ftpupload" 587$if f$search("[.docs.examples]''target'.exe") .eqs. "" 588$then 589$ define/user gnv$libcurl 'gnv_libcurl_share' 590$ link'ldebug'/exe=[.docs.examples]'target'.exe- 591 /dsf=[.docs.examples]'target'.dsf - 592 [.docs.examples]'target'.o,- 593 gnv$'target'.opt/opt,- 594 sys$input:/opt 595gnv$libcurl/share 596$endif 597$! 598$! 599$target = "getinfo" 600$if f$search("[.docs.examples]''target'.exe") .eqs. "" 601$then 602$ define/user gnv$libcurl 'gnv_libcurl_share' 603$ link'ldebug'/exe=[.docs.examples]'target'.exe- 604 /dsf=[.docs.examples]'target'.dsf - 605 [.docs.examples]'target'.o,- 606 gnv$'target'.opt/opt,- 607 sys$input:/opt 608gnv$libcurl/share 609$endif 610$! 611$! 612$target = "getinmemory" 613$if f$search("[.docs.examples]''target'.exe") .eqs. "" 614$then 615$ define/user gnv$libcurl 'gnv_libcurl_share' 616$ link'ldebug'/exe=[.docs.examples]'target'.exe- 617 /dsf=[.docs.examples]'target'.dsf - 618 [.docs.examples]'target'.o,- 619 gnv$'target'.opt/opt,- 620 sys$input:/opt 621gnv$libcurl/share 622$endif 623$! 624$! 625$target = "http-post" 626$if f$search("[.docs.examples]''target'.exe") .eqs. "" 627$then 628$ define/user gnv$libcurl 'gnv_libcurl_share' 629$ link'ldebug'/exe=[.docs.examples]'target'.exe- 630 /dsf=[.docs.examples]'target'.dsf - 631 [.docs.examples]'target'.o,- 632 gnv$'target'.opt/opt,- 633 sys$input:/opt 634gnv$libcurl/share 635$endif 636$! 637$! 638$target = "httpcustomheader" 639$if f$search("[.docs.examples]''target'.exe") .eqs. "" 640$then 641$ define/user gnv$libcurl 'gnv_libcurl_share' 642$ link'ldebug'/exe=[.docs.examples]'target'.exe- 643 /dsf=[.docs.examples]'target'.dsf - 644 [.docs.examples]'target'.o,- 645 gnv$'target'.opt/opt,- 646 sys$input:/opt 647gnv$libcurl/share 648$endif 649$! 650$! 651$target = "httpput" 652$if f$search("[.docs.examples]''target'.exe") .eqs. "" 653$then 654$ define/user gnv$libcurl 'gnv_libcurl_share' 655$ link'ldebug'/exe=[.docs.examples]'target'.exe- 656 /dsf=[.docs.examples]'target'.dsf - 657 [.docs.examples]'target'.o,- 658 gnv$'target'.opt/opt,- 659 sys$input:/opt 660gnv$libcurl/share 661$endif 662$! 663$! 664$target = "https" 665$if f$search("[.docs.examples]''target'.exe") .eqs. "" 666$then 667$ define/user gnv$libcurl 'gnv_libcurl_share' 668$ link'ldebug'/exe=[.docs.examples]'target'.exe- 669 /dsf=[.docs.examples]'target'.dsf - 670 [.docs.examples]'target'.o,- 671 gnv$'target'.opt/opt,- 672 sys$input:/opt 673gnv$libcurl/share 674$endif 675$! 676$! 677$target = "multi-app" 678$if f$search("[.docs.examples]''target'.exe") .eqs. "" 679$then 680$ define/user gnv$libcurl 'gnv_libcurl_share' 681$ link'ldebug'/exe=[.docs.examples]'target'.exe- 682 /dsf=[.docs.examples]'target'.dsf - 683 [.docs.examples]'target'.o,- 684 gnv$'target'.opt/opt,- 685 sys$input:/opt 686gnv$libcurl/share 687$endif 688$! 689$! 690$target = "multi-debugcallback" 691$if f$search("[.docs.examples]''target'.exe") .eqs. "" 692$then 693$ define/user gnv$libcurl 'gnv_libcurl_share' 694$ link'ldebug'/exe=[.docs.examples]'target'.exe- 695 /dsf=[.docs.examples]'target'.dsf - 696 [.docs.examples]'target'.o,- 697 gnv$'target'.opt/opt,- 698 sys$input:/opt 699gnv$libcurl/share 700$endif 701$! 702$! 703$target = "multi-double" 704$if f$search("[.docs.examples]''target'.exe") .eqs. "" 705$then 706$ define/user gnv$libcurl 'gnv_libcurl_share' 707$ link'ldebug'/exe=[.docs.examples]'target'.exe- 708 /dsf=[.docs.examples]'target'.dsf - 709 [.docs.examples]'target'.o,- 710 gnv$'target'.opt/opt,- 711 sys$input:/opt 712gnv$libcurl/share 713$endif 714$! 715$! 716$target = "multi-post" 717$if f$search("[.docs.examples]''target'.exe") .eqs. "" 718$then 719$ define/user gnv$libcurl 'gnv_libcurl_share' 720$ link'ldebug'/exe=[.docs.examples]'target'.exe- 721 /dsf=[.docs.examples]'target'.dsf - 722 [.docs.examples]'target'.o,- 723 gnv$'target'.opt/opt,- 724 sys$input:/opt 725gnv$libcurl/share 726$endif 727$! 728$! 729$target = "multi-single" 730$if f$search("[.docs.examples]''target'.exe") .eqs. "" 731$then 732$ define/user gnv$libcurl 'gnv_libcurl_share' 733$ link'ldebug'/exe=[.docs.examples]'target'.exe- 734 /dsf=[.docs.examples]'target'.dsf - 735 [.docs.examples]'target'.o,- 736 gnv$'target'.opt/opt,- 737 sys$input:/opt 738gnv$libcurl/share 739$endif 740$! 741$! 742$target = "persistent" 743$if f$search("[.docs.examples]''target'.exe") .eqs. "" 744$then 745$ define/user gnv$libcurl 'gnv_libcurl_share' 746$ link'ldebug'/exe=[.docs.examples]'target'.exe- 747 /dsf=[.docs.examples]'target'.dsf - 748 [.docs.examples]'target'.o,- 749 gnv$'target'.opt/opt,- 750 sys$input:/opt 751gnv$libcurl/share 752$endif 753$! 754$! 755$target = "post-callback" 756$if f$search("[.docs.examples]''target'.exe") .eqs. "" 757$then 758$ define/user gnv$libcurl 'gnv_libcurl_share' 759$ link'ldebug'/exe=[.docs.examples]'target'.exe- 760 /dsf=[.docs.examples]'target'.dsf - 761 [.docs.examples]'target'.o,- 762 gnv$'target'.opt/opt,- 763 sys$input:/opt 764gnv$libcurl/share 765$endif 766$! 767$! 768$target = "postit2" 769$if f$search("[.docs.examples]''target'.exe") .eqs. "" 770$then 771$ define/user gnv$libcurl 'gnv_libcurl_share' 772$ link'ldebug'/exe=[.docs.examples]'target'.exe- 773 /dsf=[.docs.examples]'target'.dsf - 774 [.docs.examples]'target'.o,- 775 gnv$'target'.opt/opt,- 776 sys$input:/opt 777gnv$libcurl/share 778$endif 779$! 780$! 781$target = "sendrecv" 782$if f$search("[.docs.examples]''target'.exe") .eqs. "" 783$then 784$ define/user gnv$libcurl 'gnv_libcurl_share' 785$ link'ldebug'/exe=[.docs.examples]'target'.exe- 786 /dsf=[.docs.examples]'target'.dsf - 787 [.docs.examples]'target'.o,- 788 gnv$'target'.opt/opt,- 789 sys$input:/opt 790gnv$libcurl/share 791$endif 792$! 793$! 794$target = "sepheaders" 795$if f$search("[.docs.examples]''target'.exe") .eqs. "" 796$then 797$ define/user gnv$libcurl 'gnv_libcurl_share' 798$ link'ldebug'/exe=[.docs.examples]'target'.exe- 799 /dsf=[.docs.examples]'target'.dsf - 800 [.docs.examples]'target'.o,- 801 gnv$'target'.opt/opt,- 802 sys$input:/opt 803gnv$libcurl/share 804$endif 805$! 806$! 807$target = "simple" 808$if f$search("[.docs.examples]''target'.exe") .eqs. "" 809$then 810$ define/user gnv$libcurl 'gnv_libcurl_share' 811$ link'ldebug'/exe=[.docs.examples]'target'.exe- 812 /dsf=[.docs.examples]'target'.dsf - 813 [.docs.examples]'target'.o,- 814 gnv$'target'.opt/opt,- 815 sys$input:/opt 816gnv$libcurl/share 817$endif 818$! 819$! 820$target = "simplepost" 821$if f$search("[.docs.examples]''target'.exe") .eqs. "" 822$then 823$ define/user gnv$libcurl 'gnv_libcurl_share' 824$ link'ldebug'/exe=[.docs.examples]'target'.exe- 825 /dsf=[.docs.examples]'target'.dsf - 826 [.docs.examples]'target'.o,- 827 gnv$'target'.opt/opt,- 828 sys$input:/opt 829gnv$libcurl/share 830$endif 831$! 832$! 833$target = "simplessl" 834$if f$search("[.docs.examples]''target'.exe") .eqs. "" 835$then 836$ define/user gnv$libcurl 'gnv_libcurl_share' 837$ link'ldebug'/exe=[.docs.examples]'target'.exe- 838 /dsf=[.docs.examples]'target'.dsf - 839 [.docs.examples]'target'.o,- 840 gnv$'target'.opt/opt,- 841 sys$input:/opt 842gnv$libcurl/share 843$endif 844$! 845$! =============== End of docs/examples ========================= 846$! 847$! 848$all_exit: 849$set def 'default_dir' 850$exit '$status' 851$! 852