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 reuse 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, - 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_soc.o, - 404 [.src]curl-tool_cb_wrt.o, [.src]curl-tool_cfgable.o, - 405 [.src]curl-tool_convert.o, [.src]curl-tool_dirhie.o, - 406 [.src]curl-tool_doswin.o, [.src]curl-tool_easysrc.o, - 407 [.src]curl-tool_formparse.o, [.src]curl-tool_getparam.o, - 408 [.src]curl-tool_getpass.o, [.src]curl-tool_help.o, - 409 [.src]curl-tool_helpers.o, [.src]curl-tool_homedir.o, - 410 [.src]curl-tool_hugehelp.o, [.src]curl-tool_libinfo.o, - 411 [.src]curl-tool_mfiles.o, - 412 [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, - 413 [.src]curl-tool_operhlp.o, - 414 [.src]curl-tool_paramhlp.o, [.src]curl-tool_parsecfg.o, - 415 [.src]curl-tool_setopt.o, [.src]curl-tool_sleep.o, - 416 [.src]curl-tool_urlglob.o, [.src]curl-tool_util.o, - 417 [.src]curl-tool_vms.o, [.src]curl-tool_writeenv.o, - 418 [.src]curl-tool_writeout.o, [.src]curl-tool_xattr.o, - 419 [.src]curl-strtoofft.o, [.src]curl-strdup.o, [.src]curl-strcase.o, - 420 [.src]curl-nonblock.o, gnv_packages_vms:curlmsg.obj,- 421 sys$input:/opt 422gnv$libcurl/share 423gnv_packages_vms:curl_crtl_init.obj 424$ endif 425$ else 426$ curl_exe = "[.src]curl.exe" 427$ curl_dsf = "[.src]curl.dsf" 428$ curl_main = "[.packages.vms.''arch_name']tool_main.obj" 429$ curl_src = "[.packages.vms.''arch_name']curlsrc.olb" 430$ curl_lib = "[.packages.vms.''arch_name']curllib.olb" 431$ strcase = "strcase" 432$ nonblock = "nonblock" 433$ warnless = "warnless" 434$! 435$! Extended parse style requires special quoting 436$! 437$ if (arch_name .nes. "VAX") .and. (parse_style .eqs. "EXTENDED") 438$ then 439$ strcase = """strcase""" 440$ nonblock = """nonblock""" 441$ warnless = """warnless""" 442$ endif 443$ if f$search(curl_exe) .eqs. "" 444$ then 445$ define/user gnv$libcurl 'gnv_libcurl_share' 446$ link'ldebug'/exe='curl_exe'/dsf='curl_dsf' - 447 'curl_main','curl_src'/lib, - 448 'curl_lib'/library/include=- 449 ('strcase','nonblock','warnless'),- 450 gnv_packages_vms:curlmsg.obj,- 451 sys$input:/opt 452gnv$libcurl/share 453gnv_packages_vms:curl_crtl_init.obj 454$ endif 455$ endif 456$! 457$! 458$! 459$! in6addr_missing so skip building: 460$! [.server]sws.o 461$! [.server]sockfilt.o 462$! [.server]tftpd.o 463$! 464$! 465$ target = "10-at-a-time" 466$ if f$search("[.docs.examples]''target'.o") .eqs. "" 467$ then 468$ write sys$output "examples not built" 469$ goto all_exit 470$ endif 471$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 472$ then 473$ define/user gnv$libcurl 'gnv_libcurl_share' 474$ link'ldebug'/exe=[.docs.examples]'target'.exe- 475 /dsf=[.docs.examples]'target'.dsf - 476 [.docs.examples]'target'.o,- 477 gnv$'target'.opt/opt,- 478 sys$input:/opt 479gnv$libcurl/share 480$ endif 481$! 482$! 483$ target = "anyauthput" 484$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 485$ then 486$ define/user gnv$libcurl 'gnv_libcurl_share' 487$ link'ldebug'/exe=[.docs.examples]'target'.exe- 488 /dsf=[.docs.examples]'target'.dsf - 489 [.docs.examples]'target'.o,- 490 gnv$'target'.opt/opt,- 491 sys$input:/opt 492gnv$libcurl/share 493$ endif 494$! 495$! 496$ target = "certinfo" 497$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 498$ then 499$ define/user gnv$libcurl 'gnv_libcurl_share' 500$ link'ldebug'/exe=[.docs.examples]'target'.exe- 501 /dsf=[.docs.examples]'target'.dsf - 502 [.docs.examples]'target'.o,- 503 gnv$'target'.opt/opt,- 504 sys$input:/opt 505gnv$libcurl/share 506$ endif 507$! 508$! 509$ target = "cookie_interface" 510$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 511$ then 512$ define/user gnv$libcurl 'gnv_libcurl_share' 513$ link'ldebug'/exe=[.docs.examples]'target'.exe- 514 /dsf=[.docs.examples]'target'.dsf - 515 [.docs.examples]'target'.o,- 516 gnv$'target'.opt/opt,- 517 sys$input:/opt 518gnv$libcurl/share 519$ endif 520$! 521$! 522$ target = "debug" 523$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 524$ then 525$ define/user gnv$libcurl 'gnv_libcurl_share' 526$ link'ldebug'/exe=[.docs.examples]'target'.exe- 527 /dsf=[.docs.examples]'target'.dsf - 528 [.docs.examples]'target'.o,- 529 gnv$'target'.opt/opt,- 530 sys$input:/opt 531gnv$libcurl/share 532$ endif 533$! 534$! 535$ target = "fileupload" 536$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 537$ then 538$ define/user gnv$libcurl 'gnv_libcurl_share' 539$ link'ldebug'/exe=[.docs.examples]'target'.exe- 540 /dsf=[.docs.examples]'target'.dsf - 541 [.docs.examples]'target'.o,- 542 gnv$'target'.opt/opt,- 543 sys$input:/opt 544gnv$libcurl/share 545$ endif 546$! 547$! 548$ target = "fopen" 549$ if f$search("[.docs.examples]''target'.exe") .eqs. "" 550$ then 551$ define/user gnv$libcurl 'gnv_libcurl_share' 552$ link'ldebug'/exe=[.docs.examples]'target'.exe- 553 /dsf=[.docs.examples]'target'.dsf - 554 [.docs.examples]'target'.o,- 555 gnv$'target'.opt/opt,- 556 sys$input:/opt 557gnv$libcurl/share 558$ endif 559$! 560$! 561$target = "ftpget" 562$if f$search("[.docs.examples]''target'.exe") .eqs. "" 563$then 564$ define/user gnv$libcurl 'gnv_libcurl_share' 565$ link'ldebug'/exe=[.docs.examples]'target'.exe- 566 /dsf=[.docs.examples]'target'.dsf - 567 [.docs.examples]'target'.o,- 568 gnv$'target'.opt/opt,- 569 sys$input:/opt 570gnv$libcurl/share 571$endif 572$! 573$! 574$target = "ftpgetresp" 575$if f$search("[.docs.examples]''target'.exe") .eqs. "" 576$then 577$ define/user gnv$libcurl 'gnv_libcurl_share' 578$ link'ldebug'/exe=[.docs.examples]'target'.exe- 579 /dsf=[.docs.examples]'target'.dsf - 580 [.docs.examples]'target'.o,- 581 gnv$'target'.opt/opt,- 582 sys$input:/opt 583gnv$libcurl/share 584$endif 585$! 586$! 587$target = "ftpupload" 588$if f$search("[.docs.examples]''target'.exe") .eqs. "" 589$then 590$ define/user gnv$libcurl 'gnv_libcurl_share' 591$ link'ldebug'/exe=[.docs.examples]'target'.exe- 592 /dsf=[.docs.examples]'target'.dsf - 593 [.docs.examples]'target'.o,- 594 gnv$'target'.opt/opt,- 595 sys$input:/opt 596gnv$libcurl/share 597$endif 598$! 599$! 600$target = "getinfo" 601$if f$search("[.docs.examples]''target'.exe") .eqs. "" 602$then 603$ define/user gnv$libcurl 'gnv_libcurl_share' 604$ link'ldebug'/exe=[.docs.examples]'target'.exe- 605 /dsf=[.docs.examples]'target'.dsf - 606 [.docs.examples]'target'.o,- 607 gnv$'target'.opt/opt,- 608 sys$input:/opt 609gnv$libcurl/share 610$endif 611$! 612$! 613$target = "getinmemory" 614$if f$search("[.docs.examples]''target'.exe") .eqs. "" 615$then 616$ define/user gnv$libcurl 'gnv_libcurl_share' 617$ link'ldebug'/exe=[.docs.examples]'target'.exe- 618 /dsf=[.docs.examples]'target'.dsf - 619 [.docs.examples]'target'.o,- 620 gnv$'target'.opt/opt,- 621 sys$input:/opt 622gnv$libcurl/share 623$endif 624$! 625$! 626$target = "http-post" 627$if f$search("[.docs.examples]''target'.exe") .eqs. "" 628$then 629$ define/user gnv$libcurl 'gnv_libcurl_share' 630$ link'ldebug'/exe=[.docs.examples]'target'.exe- 631 /dsf=[.docs.examples]'target'.dsf - 632 [.docs.examples]'target'.o,- 633 gnv$'target'.opt/opt,- 634 sys$input:/opt 635gnv$libcurl/share 636$endif 637$! 638$! 639$target = "httpcustomheader" 640$if f$search("[.docs.examples]''target'.exe") .eqs. "" 641$then 642$ define/user gnv$libcurl 'gnv_libcurl_share' 643$ link'ldebug'/exe=[.docs.examples]'target'.exe- 644 /dsf=[.docs.examples]'target'.dsf - 645 [.docs.examples]'target'.o,- 646 gnv$'target'.opt/opt,- 647 sys$input:/opt 648gnv$libcurl/share 649$endif 650$! 651$! 652$target = "httpput" 653$if f$search("[.docs.examples]''target'.exe") .eqs. "" 654$then 655$ define/user gnv$libcurl 'gnv_libcurl_share' 656$ link'ldebug'/exe=[.docs.examples]'target'.exe- 657 /dsf=[.docs.examples]'target'.dsf - 658 [.docs.examples]'target'.o,- 659 gnv$'target'.opt/opt,- 660 sys$input:/opt 661gnv$libcurl/share 662$endif 663$! 664$! 665$target = "https" 666$if f$search("[.docs.examples]''target'.exe") .eqs. "" 667$then 668$ define/user gnv$libcurl 'gnv_libcurl_share' 669$ link'ldebug'/exe=[.docs.examples]'target'.exe- 670 /dsf=[.docs.examples]'target'.dsf - 671 [.docs.examples]'target'.o,- 672 gnv$'target'.opt/opt,- 673 sys$input:/opt 674gnv$libcurl/share 675$endif 676$! 677$! 678$target = "multi-app" 679$if f$search("[.docs.examples]''target'.exe") .eqs. "" 680$then 681$ define/user gnv$libcurl 'gnv_libcurl_share' 682$ link'ldebug'/exe=[.docs.examples]'target'.exe- 683 /dsf=[.docs.examples]'target'.dsf - 684 [.docs.examples]'target'.o,- 685 gnv$'target'.opt/opt,- 686 sys$input:/opt 687gnv$libcurl/share 688$endif 689$! 690$! 691$target = "multi-debugcallback" 692$if f$search("[.docs.examples]''target'.exe") .eqs. "" 693$then 694$ define/user gnv$libcurl 'gnv_libcurl_share' 695$ link'ldebug'/exe=[.docs.examples]'target'.exe- 696 /dsf=[.docs.examples]'target'.dsf - 697 [.docs.examples]'target'.o,- 698 gnv$'target'.opt/opt,- 699 sys$input:/opt 700gnv$libcurl/share 701$endif 702$! 703$! 704$target = "multi-double" 705$if f$search("[.docs.examples]''target'.exe") .eqs. "" 706$then 707$ define/user gnv$libcurl 'gnv_libcurl_share' 708$ link'ldebug'/exe=[.docs.examples]'target'.exe- 709 /dsf=[.docs.examples]'target'.dsf - 710 [.docs.examples]'target'.o,- 711 gnv$'target'.opt/opt,- 712 sys$input:/opt 713gnv$libcurl/share 714$endif 715$! 716$! 717$target = "multi-post" 718$if f$search("[.docs.examples]''target'.exe") .eqs. "" 719$then 720$ define/user gnv$libcurl 'gnv_libcurl_share' 721$ link'ldebug'/exe=[.docs.examples]'target'.exe- 722 /dsf=[.docs.examples]'target'.dsf - 723 [.docs.examples]'target'.o,- 724 gnv$'target'.opt/opt,- 725 sys$input:/opt 726gnv$libcurl/share 727$endif 728$! 729$! 730$target = "multi-single" 731$if f$search("[.docs.examples]''target'.exe") .eqs. "" 732$then 733$ define/user gnv$libcurl 'gnv_libcurl_share' 734$ link'ldebug'/exe=[.docs.examples]'target'.exe- 735 /dsf=[.docs.examples]'target'.dsf - 736 [.docs.examples]'target'.o,- 737 gnv$'target'.opt/opt,- 738 sys$input:/opt 739gnv$libcurl/share 740$endif 741$! 742$! 743$target = "persistent" 744$if f$search("[.docs.examples]''target'.exe") .eqs. "" 745$then 746$ define/user gnv$libcurl 'gnv_libcurl_share' 747$ link'ldebug'/exe=[.docs.examples]'target'.exe- 748 /dsf=[.docs.examples]'target'.dsf - 749 [.docs.examples]'target'.o,- 750 gnv$'target'.opt/opt,- 751 sys$input:/opt 752gnv$libcurl/share 753$endif 754$! 755$! 756$target = "post-callback" 757$if f$search("[.docs.examples]''target'.exe") .eqs. "" 758$then 759$ define/user gnv$libcurl 'gnv_libcurl_share' 760$ link'ldebug'/exe=[.docs.examples]'target'.exe- 761 /dsf=[.docs.examples]'target'.dsf - 762 [.docs.examples]'target'.o,- 763 gnv$'target'.opt/opt,- 764 sys$input:/opt 765gnv$libcurl/share 766$endif 767$! 768$! 769$target = "postit2" 770$if f$search("[.docs.examples]''target'.exe") .eqs. "" 771$then 772$ define/user gnv$libcurl 'gnv_libcurl_share' 773$ link'ldebug'/exe=[.docs.examples]'target'.exe- 774 /dsf=[.docs.examples]'target'.dsf - 775 [.docs.examples]'target'.o,- 776 gnv$'target'.opt/opt,- 777 sys$input:/opt 778gnv$libcurl/share 779$endif 780$! 781$! 782$target = "sendrecv" 783$if f$search("[.docs.examples]''target'.exe") .eqs. "" 784$then 785$ define/user gnv$libcurl 'gnv_libcurl_share' 786$ link'ldebug'/exe=[.docs.examples]'target'.exe- 787 /dsf=[.docs.examples]'target'.dsf - 788 [.docs.examples]'target'.o,- 789 gnv$'target'.opt/opt,- 790 sys$input:/opt 791gnv$libcurl/share 792$endif 793$! 794$! 795$target = "sepheaders" 796$if f$search("[.docs.examples]''target'.exe") .eqs. "" 797$then 798$ define/user gnv$libcurl 'gnv_libcurl_share' 799$ link'ldebug'/exe=[.docs.examples]'target'.exe- 800 /dsf=[.docs.examples]'target'.dsf - 801 [.docs.examples]'target'.o,- 802 gnv$'target'.opt/opt,- 803 sys$input:/opt 804gnv$libcurl/share 805$endif 806$! 807$! 808$target = "simple" 809$if f$search("[.docs.examples]''target'.exe") .eqs. "" 810$then 811$ define/user gnv$libcurl 'gnv_libcurl_share' 812$ link'ldebug'/exe=[.docs.examples]'target'.exe- 813 /dsf=[.docs.examples]'target'.dsf - 814 [.docs.examples]'target'.o,- 815 gnv$'target'.opt/opt,- 816 sys$input:/opt 817gnv$libcurl/share 818$endif 819$! 820$! 821$target = "simplepost" 822$if f$search("[.docs.examples]''target'.exe") .eqs. "" 823$then 824$ define/user gnv$libcurl 'gnv_libcurl_share' 825$ link'ldebug'/exe=[.docs.examples]'target'.exe- 826 /dsf=[.docs.examples]'target'.dsf - 827 [.docs.examples]'target'.o,- 828 gnv$'target'.opt/opt,- 829 sys$input:/opt 830gnv$libcurl/share 831$endif 832$! 833$! 834$target = "simplessl" 835$if f$search("[.docs.examples]''target'.exe") .eqs. "" 836$then 837$ define/user gnv$libcurl 'gnv_libcurl_share' 838$ link'ldebug'/exe=[.docs.examples]'target'.exe- 839 /dsf=[.docs.examples]'target'.dsf - 840 [.docs.examples]'target'.o,- 841 gnv$'target'.opt/opt,- 842 sys$input:/opt 843gnv$libcurl/share 844$endif 845$! 846$! =============== End of docs/examples ========================= 847$! 848$! 849$all_exit: 850$set def 'default_dir' 851$exit '$status' 852$! 853