1$! File: gnv_link_curl.com 2$! 3$! $Id$ 4$! 5$! File to build images using gnv$libcurl.exe 6$! 7$! Copyright 2009 - 2020, John Malmberg 8$! 9$! Permission to use, copy, modify, and/or distribute this software for any 10$! purpose with or without fee is hereby granted, provided that the above 11$! copyright notice and this permission notice appear in all copies. 12$! 13$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 19$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20$! 21$! 10-Jun-2009 J. Malmberg 22$!============================================================================ 23$! 24$! Save this so we can get back. 25$ default_dir = f$environment("default") 26$ define/job gnv_packages_vms 'default_dir' 27$! 28$ on warning then goto all_exit 29$! 30$! On VAX, we need to generate a Macro transfer vector. 31$ parse_style = "TRADITIONAL" 32$ if (f$getsyi("HW_MODEL") .lt. 1024) 33$ then 34$ @generate_vax_transfer.com 35$ arch_name = "VAX" 36$ else 37$ arch_name = "" 38$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE") 39$ if (arch_name .eqs. "") then arch_name = "UNK" 40$! 41$! Extended parsing option starts with VMS 7.3-1. 42$! There is no 7.4, so that simplifies the parse a bit. 43$! 44$ node_swvers = f$getsyi("node_swvers") 45$ version_patch = f$extract(1, f$length(node_swvers), node_swvers) 46$ maj_ver = f$element(0, ".", version_patch) 47$ min_ver_patch = f$element(1, ".", version_patch) 48$ min_ver = f$element(0, "-", min_ver_patch) 49$ patch = f$element(1, "-", min_ver_patch) 50$ if patch .eqs. "-" then patch = "" 51$ parse_x = 0 52$ if maj_ver .ges. "8" 53$ then 54$ parse_x = 1 55$ else 56$ if maj_ver .eqs. "7" .and. min_ver .ges. "3" .and. patch .nes. "" 57$ then 58$ parse_x = 1 59$ endif 60$ endif 61$ if parse_x 62$ then 63$ parse_style = f$getjpi("", "parse_style_perm") 64$ endif 65$ endif 66$! 67$! 68$! Move to where the base directories. 69$ set def [--] 70$! 71$! 72$! Build the Message file. 73$!-------------------------- 74$ if f$search("[.packages.vms]curlmsg.obj") .eqs. "" 75$ then 76$ message [.packages.vms]curlmsg.msg/object=[.packages.vms] 77$ endif 78$ if f$search("gnv$curlmsg.exe") .eqs. "" 79$ then 80$ link/share=gnv$curlmsg.exe [.packages.vms]curlmsg.obj 81$ endif 82$! 83$! 84$! Need to build the common init module. 85$!------------------------------------------- 86$ cflags = "/list/show=(expan,includ)" 87$ init_obj = "[.packages.vms]curl_crtl_init.obj" 88$ if f$search(init_obj) .eqs. "" 89$ then 90$ cc'cflags' 'default_dir'curl_crtl_init.c/obj='init_obj' 91$ endif 92$ purge 'init_obj' 93$ rename 'init_obj' ;1 94$! 95$! 96$! Need to build the module to test the HP OpenSSL version 97$!-------------------------------------------------------- 98$ if arch_name .nes. "VAX" 99$ then 100$ rpt_obj = "[.packages.vms]report_openssl_version.obj 101$ if f$search(rpt_obj) .eqs. "" 102$ then 103$ cc'cflags' 'default_dir'report_openssl_version.c/obj='rpt_obj' 104$ endif 105$ purge 'rpt_obj' 106$ rename 'rpt_obj' ;1 107$! 108$ link/exe='default_dir'report_openssl_version.exe 'rpt_obj' 109$ report_openssl_version := $'default_dir'report_openssl_version.exe 110$ endif 111$! 112$! 113$ base_link_opt_file = "[.packages.vms.''arch_name']gnv_libcurl_linker.opt" 114$ share_link_opt_file = "[.packages.vms.''arch_name']gnv_ssl_libcurl_linker.opt" 115$ if f$search(base_link_opt_file) .eqs. "" 116$ then 117$ base_link_opt_file = "[.packages.vms]gnv_libcurl_linker.opt" 118$ share_link_opt_file = "[.packages.vms]gnv_ssl_libcurl_linker.opt" 119$ if f$search(base_link_opt_file) .eqs. "" 120$ then 121$ write sys$output "Can not find base library option file!" 122$ goto all_exit 123$ endif 124$ endif 125$! 126$! Create the a new option file with special fixup for HP SSL 127$! For a shared image, we always want ZLIB and 32 bit HPSSL 128$! 129$ if f$search("gnv$libzshr32") .eqs. "" 130$ then 131$ write sys$output "VMSPORTS/GNV LIBZ Shared image not found!" 132$ goto all_exit 133$ endif 134$! 135$! 136$! Need to check the version of the HP SSL shared image. 137$! 138$! VAX platform can not be checked this way, it appears symbol lookup 139$! was disabled. VAX has not been updated in a while. 140$ if arch_name .eqs. "VAX" 141$ then 142$ hp_ssl_libcrypto32 = "sys$common:[syslib]ssl$libcrypto_shr32.exe" 143$ hp_ssl_libssl32 = "sys$common:[syslib]ssl$libssl_shr32.exe" 144$ if f$search(hp_ssl_libcrypto32) .nes. "" 145$ then 146$ use_hp_ssl = 1 147$ curl_ssl_libcrypto32 = hp_ssl_libcrypto32 148$ curl_ssl_libssl32 = hp_ssl_libssl32 149$ curl_ssl_version = "OpenSSL/0.9.6g" 150$ else 151$ write sys$output "HP OpenSSL Shared images not found!" 152$ goto all_exit 153$ endif 154$ else 155$! 156$! Minimum HP version we can use reports: 157$! "OpenSSL 0.9.8w 23 Apr 2012" 158$! 159$ use_hp_ssl = 0 160$ hp_ssl_libcrypto32 = "sys$share:ssl$libcrypto_shr32.exe" 161$ hp_ssl_libssl32 = "sys$share:ssl$libssl_shr32.exe" 162$ if f$search(hp_ssl_libcrypto32) .nes. "" 163$ then 164$ curl_ssl_libcrypto32 = hp_ssl_libcrypto32 165$ curl_ssl_libssl32 = hp_ssl_libssl32 166$ report_openssl_version 'hp_ssl_libcrypto32' hp_ssl_version 167$ endif 168$! 169$ if f$type(hp_ssl_version) .eqs. "STRING" 170$ then 171$ curl_ssl_version = hp_ssl_version 172$ full_version = f$element(1, " ", hp_ssl_version) 173$ ver_maj = f$element(0, ".", full_version) 174$ ver_min = f$element(1, ".", full_version) 175$ ver_patch = f$element(2, ".", full_version) 176$! ! ver_patch is typically both a number and some letters 177$ ver_patch_len = f$length(ver_patch) 178$ ver_patchltr = "" 179$ver_patch_loop: 180$ ver_patchltr_c = f$extract(ver_patch_len - 1, 1, ver_patch) 181$ if ver_patchltr_c .les. "9" then goto ver_patch_loop_end 182$ ver_patchltr = ver_patchltr_c + ver_patchltr 183$ ver_patch_len = ver_patch_len - 1 184$ goto ver_patch_loop 185$ver_patch_loop_end: 186$ ver_patchnum = ver_patch - ver_patchltr 187$ if 'ver_maj' .ge. 0 188$ then 189$ if 'ver_min' .ge. 9 190$ then 191$ if 'ver_patchnum' .ge. 8 192$ then 193$ if ver_patchltr .ges. "w" then use_hp_ssl = 1 194$ endif 195$ endif 196$ endif 197$set nover 198$ if use_hp_ssl .eq. 0 199$ then 200$ write sys$output - 201 " HP OpenSSL version of ""''hp_ssl_version'"" is too old for shared libcurl!" 202$ endif 203$ else 204$ write sys$output "Unable to get version of HP OpenSSL" 205$ endif 206$! 207$ gnv_ssl_libcrypto32 = "gnv$gnu:[lib]ssl$libcrypto_shr32.exe" 208$ gnv_ssl_libssl32 = "gnv$gnu:[lib]ssl$libssl_shr32.exe" 209$ if f$search(gnv_ssl_libcrypto32) .nes. "" 210$ then 211$ report_openssl_version 'gnv_ssl_libcrypto32' gnv_ssl_version 212$ endif 213$! 214$ use_gnv_ssl = 0 215$ if f$type(gnv_ssl_version) .eqs. "STRING" 216$ then 217$ gnv_full_version = f$element(1, " ", gnv_ssl_version) 218$ gnv_ver_maj = f$element(0, ".", gnv_full_version) 219$ gnv_ver_min = f$element(1, ".", gnv_full_version) 220$ gnv_ver_patch = f$element(2, ".", gnv_full_version) 221$ gnv_ver_patch_len = f$length(gnv_ver_patch) 222$ gnv_ver_patchnum = f$extract(0, gnv_ver_patch_len - 1, gnv_ver_patch) 223$ gnv_ver_patchltr = f$extract(gnv_ver_patch_len - 1, 1, gnv_ver_patch) 224$ if 'gnv_ver_maj' .ge. 0 225$ then 226$ if 'gnv_ver_min' .ge. 9 227$ then 228$ if 'gnv_ver_patchnum' .ge. 8 229$ then 230$ if gnv_ver_patchltr .ges. "w" then use_gnv_ssl = 1 231$ endif 232$ endif 233$ endif 234$ if use_gnv_ssl .eq. 0 235$ then 236$ write sys$output - 237 "GNV OpenSSL version of ""''gnv_ssl_version'" is too old for shared libcurl!" 238$ endif 239$! 240$! Prefer to break the tie with the lowest supported version 241$! For simplicity, if the GNV image is present, it will be used. 242$! Version tuple is not a simple compare. 243$! 244$ if use_gnv_ssl .eq. 1 then 245$ curl_ssl_libcrypto32 = gnv_ssl_libcrypto32 246$ curl_ssl_libssl32 = gnv_ssl_libssl32 247$ curl_ssl_version = gnv_ssl_version 248$ use_hp_ssl = 0 249$ endif 250!$! 251$ else 252$ write sys$output "Unable to get version of GNV OpenSSL" 253$ endif 254$! 255$! Need to write a release note section about HP OpenSSL 256$! 257$create 'default_dir'hp_ssl_release_info.txt 258$deck 259This package is built on with the OpenSSL version listed below and requires 260the shared images from the HP OpenSSL product that is kitted with that 261version or a compatible later version. 262 263For Alpha and IA64 platforms, see the url below to register to get the 264download URL. The kit will be HP 1.4-467 or later. 265 https://h41379.www4.hpe.com/openvms/products/ssl/ssl.html 266 267For VAX, use the same registration, but remove the kit name from any of the 268download URLs provided and put in CPQ-VAXVMS-SSL-V0101-B-1.PCSI-DCX_VAXEXE 269 270If your system can not be upgraded to a compatible version of OpenSSL, then 271you can extract the two shared images from the kit and place them in the 272[vms$common.gnv.lib]directory of the volume that you are installing GNV and 273or GNV compatible components like Curl. 274 275If GNV is installed, you must run the GNV startup procedure before these steps 276and before installing Curl. 277 278 279 1. make sure that [vms$common.gnv.lib] exists by using the following 280 commands. We want the directory to be in lowercase except on VAX. 281 282 $SET PROCESS/PARSE=extend !If not VAX. 283 $CREATE/DIR device:[vms$common.gnv.lib]/prot=w:re 284 285 2. Extract the ssl$crypto_shr32.exe and ssl$libssl_shr32.exe images. 286 287 $PRODUCT EXTRACT FILE - 288 /select=(ssl$libcrypto_shr32.exe,ssl$libssl_shr32.exe)- 289 /source=device:[dir] - 290 /options=noconfirm - 291 /destination=device:[vms$common.gnv.lib] SSL 292 293The [vms$common.sys$startup}curl_startup.com procedure will then configure 294libcurl to use these shared images instead of the system ones. 295 296When you upgrade SSL on VMS to the newer version of HP SSL, then these copies 297should be deleted. 298 299$eod 300$! 301$ open/append sslr 'default_dir'hp_ssl_release_info.txt 302$ write sslr "OpenSSL version used for building this kit: ",curl_ssl_version 303$ write sslr "" 304$ close sslr 305$! 306$! 307$! LIBZ 308$ libzshr_line = "" 309$ try_shr = "gnv$libzshr32" 310$ if f$search(try_shr) .nes. "" 311$ then 312$ libzshr_line = "''try_shr'/share" 313$ else 314$ write sys$output "''try_shr' image not found!" 315$ goto all_exit 316$ endif 317$! 318$! 319$ gssrtlshr_line = "" 320$ if arch_name .nes. "VAX" 321$ then 322$ try_shr = "sys$share:gss$rtl" 323$ if f$search("''try_shr'.exe") .nes. "" 324$ then 325$ gssrtlshr_line = "''try_shr'/share" 326$ else 327$ write sys$output "''try_shr' image not found!" 328$ goto all_exit 329$ endif 330$ endif 331$! 332$! 333$! 334$ if f$search(share_link_opt_file) .eqs. "" 335$ then 336$ create 'share_link_opt_file' 337$ open/append slopt 'share_link_opt_file' 338$ if libzshr_line .nes. "" then write slopt libzshr_line 339$ if gssrtlshr_line .nes. "" then write slopt gssrtlshr_line 340$ write slopt "gnv$curl_ssl_libcryptoshr32/share" 341$ write slopt "gnv$curl_ssl_libsslshr32/share" 342$ close slopt 343$ endif 344$! 345$! DCL build puts curllib in architecture directory 346$! GNV build uses the makefile. 347$ libfile = "[.packages.vms.''arch_name']curllib.olb" 348$ if f$search(libfile) .nes. "" 349$ then 350$ olb_file = libfile 351$ else 352$ ! GNV based build 353$ libfile = "[.lib.^.libs]libcurl.a" 354$ if f$search(libfile) .nes. "" 355$ then 356$ olb_file = libfile 357$ else 358$ write sys$output - 359 "Can not build shared image, libcurl object library not found!" 360$ goto all_exit 361$ endif 362$ endif 363$! 364$gnv_libcurl_share = "''default_dir'gnv$libcurl.exe" 365$! 366$ if f$search(gnv_libcurl_share) .eqs. "" 367$ then 368$ if arch_name .nes. "VAX" 369$ then 370$ define/user gnv$curl_ssl_libcryptoshr32 'curl_ssl_libcrypto32' 371$ define/user gnv$curl_ssl_libsslshr32 'curl_ssl_libssl32' 372$ link/dsf='default_dir'gnv$libcurl.dsf/share='gnv_libcurl_share' - 373 /map='default_dir'gnv$libcurl.map - 374 gnv_packages_vms:gnv_libcurl_symbols.opt/opt,- 375 'olb_file'/lib,- 376 'share_link_opt_file'/opt 377$ else 378$! VAX will not allow the logical name hack for the 379$! SSL libcryto library, it is pulling it in twice if I try it. 380$ link/share='gnv_libcurl_share'/map='default_dir'gnv$libcurl.map - 381 gnv_packages_vms:gnv_libcurl_xfer.opt/opt,- 382 'olb_file'/lib,- 383 'base_link_opt_file'/opt 384$ endif 385$ endif 386$! 387$! 388$ if f$search("[.src]curl-tool_main.o") .nes. "" 389$ then 390$! From src/makefile.inc: 391$! # libcurl has sources that provide functions named curlx_* that aren't 392$! # part of the official API, but we re-use the code here to avoid 393$! # duplication. 394$! 395$! 396$ if f$search("[.src]curl.exe") .eqs. "" 397$ then 398$ define/user gnv$libcurl 'gnv_libcurl_share' 399$ link'ldebug'/exe=[.src]curl.exe/dsf=[.src]curl.dsf - 400 [.src]curl-tool_main.o, [.src]curl-tool_binmode.o, - 401 [.src]curl-tool_bname.o, [.src]curl-tool_cb_dbg.o, - 402 [.src]curl-tool_cb_hdr.o, [.src]curl-tool_cb_prg.o, - 403 [.src]curl-tool_cb_rea.o, [.src]curl-tool_cb_see.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_metalink.o, [.src]curl-tool_mfiles.o, - 412 [.src]curl-tool_msgs.o, [.src]curl-tool_operate.o, - 413 [.src]curl-tool_operhlp.o, [.src]curl-tool_panykey.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