Return to config_h.com CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / packages / vms |
1.1 ! misho 1: $! File: config_h.com ! 2: $! ! 3: $! $Id: config_h.com,v 1.1.1.1 2012/12/02 19:25:21 wb8tyw Exp $ ! 4: $! ! 5: $! This procedure attempts to figure out how to build a config.h file ! 6: $! for the current project. ! 7: $! ! 8: $! P1 specifies the config.h.in file or equivalent. If it is not specified ! 9: $! then this procedure will search for several common names of the file. ! 10: $! ! 11: $! The CONFIGURE shell script will be examined for hints and a few symbols ! 12: $! but most of the tests will not produce valid results on OpenVMS. Some ! 13: $! will produce false positives and some will produce false negatives. ! 14: $! ! 15: $! It is easier to just read the config.h_in file and make up tests based ! 16: $! on what is in it! ! 17: $! ! 18: $! This file will create an empty config_vms.h file if one does not exist. ! 19: $! The config_vms.h is intended for manual edits to handle things that ! 20: $! this procedure can not. ! 21: $! ! 22: $! The config_vms.h will be invoked by the resulting config.h file. ! 23: $! ! 24: $! This procedure knows about the DEC C RTL on the system it is on. ! 25: $! Future versions may be handle the GNV, the OpenVMS porting library, ! 26: $! and others. ! 27: $! ! 28: $! This procedure may not guess the options correctly for all architectures, ! 29: $! and is a work in progress. ! 30: $! ! 31: $! Copyright 2011 - 2020, John Malmberg ! 32: $! ! 33: $! Permission to use, copy, modify, and/or distribute this software for any ! 34: $! purpose with or without fee is hereby granted, provided that the above ! 35: $! copyright notice and this permission notice appear in all copies. ! 36: $! ! 37: $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ! 38: $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ! 39: $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ! 40: $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ! 41: $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ! 42: $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT ! 43: $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ! 44: $! ! 45: $! 15-Jan-2001 J. Malmberg Original ! 46: $! 29-Apr-2001 J. Malmberg Also look for config.*in* in a [.include] ! 47: $! subdirectory ! 48: $! 30-Apr-2001 J. Malmberg Update for SAMBA checks ! 49: $! 09-Apr-2005 J. Malmberg Update for RSYNC and large file. ! 50: $! 29-Sep-2011 J. Malmberg Update for Bash 4.2 ! 51: $! 01-Mar-2012 J. Malmberg Warn about getcwd(0,0) ! 52: $! 21-Dec-2012 J. Malmberg Update for gawk ! 53: $! 29-Dec-2012 J. Malmberg Update for curl ! 54: $!============================================================================ ! 55: $! ! 56: $ss_normal = 1 ! 57: $ss_abort = 44 ! 58: $ss_control_y = 1556 ! 59: $status = ss_normal ! 60: $on control_y then goto control_y ! 61: $on warning then goto general_error ! 62: $!on warning then set ver ! 63: $! ! 64: $! Some information for writing timestamps to created files ! 65: $!---------------------------------------------------------- ! 66: $my_proc = f$environment("PROCEDURE") ! 67: $my_proc_file = f$parse(my_proc,,,"NAME") + f$parse(my_proc,,,"TYPE") ! 68: $tab[0,8] = 9 ! 69: $datetime = f$element(0,".",f$cvtime(,"ABSOLUTE","DATETIME")) ! 70: $username = f$edit(f$getjpi("","USERNAME"),"TRIM") ! 71: $! ! 72: $pid = f$getjpi("","PID") ! 73: $tfile1 = "SYS$SCRATCH:config_h_temp1_''pid'.TEMP" ! 74: $dchfile = "SYS$SCRATCH:config_h_decc_''pid'.TEMP" ! 75: $starhfile = "SYS$SCRATCH:config_h_starlet_''pid'.TEMP" ! 76: $configure_script = "SYS$SCRATCH:configure_script_''pid'.TEMP" ! 77: $! ! 78: $! Get the system type ! 79: $!---------------------- ! 80: $arch_type = f$getsyi("arch_type") ! 81: $! ! 82: $! Does config_vms.h exist? ! 83: $!------------------------- ! 84: $update_config_vms = 0 ! 85: $file = f$search("sys$disk:[]config_vms.h") ! 86: $if file .nes. "" ! 87: $then ! 88: $ write sys$output "Found existing custom file ''file'." ! 89: $else ! 90: $ update_config_vms = 1 ! 91: $ write sys$output "Creating new sys$disk:[]config_vms.h for you." ! 92: $ gosub write_config_vms ! 93: $endif ! 94: $! ! 95: $! ! 96: $! On some platforms, DCL search has problems with searching a file ! 97: $! on a NFS mounted volume. So copy it to sys$scratch: ! 98: $! ! 99: $if f$search(configure_script) .nes. "" then delete 'configure_script';* ! 100: $copy sys$disk:[]configure 'configure_script' ! 101: $! ! 102: $ssl_header_dir = "OPENSSL:" ! 103: $if f$trnlnm("OPENSSL") .eqs. "" ! 104: $then ! 105: $ ssl_header_dir = "SSL$INCLUDE:" ! 106: $endif ! 107: $! ! 108: $! ! 109: $! Write out the header ! 110: $!---------------------- ! 111: $gosub write_config_h_header ! 112: $! ! 113: $! ! 114: $! ! 115: $! config.h.in could have at least five different names depending ! 116: $! on how it was transferred to OpenVMS ! 117: $!------------------------------------------------------------------ ! 118: $if p1 .nes. "" ! 119: $then ! 120: $ cfile = p1 ! 121: $else ! 122: $ cfile = f$search("sys$disk:[]config.h.in") ! 123: $ if cfile .eqs. "" ! 124: $ then ! 125: $ cfile = f$search("sys$disk:[]config.h_in") ! 126: $ if cfile .eqs. "" ! 127: $ then ! 128: $ cfile = f$search("sys$disk:[]configh.in") ! 129: $ if cfile .eqs. "" ! 130: $ then ! 131: $ cfile = f$search("sys$disk:[]config__2eh.in") ! 132: $ if cfile .eqs. "" ! 133: $ then ! 134: $ cfile = f$search("sys$disk:[]config.h__2ein") ! 135: $ endif ! 136: $ endif ! 137: $ endif ! 138: $ endif ! 139: $endif ! 140: $if f$trnlnm("PRJ_INCLUDE") .nes. "" ! 141: $then ! 142: $ cfile = f$search("PRJ_INCLUDE:config.h.in") ! 143: $ if cfile .eqs. "" ! 144: $ then ! 145: $ cfile = f$search("PRJ_INCLUDE:config.h_in") ! 146: $ if cfile .eqs. "" ! 147: $ then ! 148: $ cfile = f$search("PRJ_INCLUDE:config__2eh.in") ! 149: $ if cfile .eqs. "" ! 150: $ then ! 151: $ cfile = f$search("PRJ_INCLUDE:config__2eh.in") ! 152: $ if cfile .eqs. "" ! 153: $ then ! 154: $ cfile = f$search("PRJ_INCLUDE:config.h__2ein") ! 155: $ endif ! 156: $ endif ! 157: $ endif ! 158: $ endif ! 159: $endif ! 160: $if cfile .eqs. "" ! 161: $then ! 162: $ write sys$output "Can not find sys$disk:config.h.in" ! 163: $ line_out = "Looked for config.h.in, config.h_in, configh.in, " ! 164: $ line_out = line_out + "config__2eh.in, config.h__2ein" ! 165: $ write/symbol sys$output line_out ! 166: $ if f$trnlnm("PRJ_INCLUDE") .nes. "" ! 167: $ then ! 168: $ write sys$output "Also looked in PRJ_INCLUDE: for these files." ! 169: $ endif ! 170: $! ! 171: $ write tf "" ! 172: $ write tf - ! 173: " /* Could not find sys$disk:config.h.in */" ! 174: $ write tf - ! 175: " /* Looked also for config.h_in, configh.in, config__2eh.in, */" ! 176: $ write tf - ! 177: " /* config.h__2ein */" ! 178: $ if f$trnlnm("PRJ_INCLUDE") .nes. "" ! 179: $ then ! 180: $ write tf - ! 181: " /* Also looked in PRJ_INCLUDE: for these files. */" ! 182: $ endif ! 183: $ write tf - ! 184: "/*--------------------------------------------------------------*/ ! 185: $ write tf "" ! 186: $ goto write_tail ! 187: $endif ! 188: $! ! 189: $! ! 190: $! Locate the DECC libraries in use ! 191: $!----------------------------------- ! 192: $decc_rtldef = f$parse("decc$rtldef","sys$library:.tlb;0") ! 193: $decc_starletdef = f$parse("sys$starlet_c","sys$library:.tlb;0") ! 194: $decc_shr = f$parse("decc$shr","sys$share:.exe;0") ! 195: $! ! 196: $! Dump the DECC header names into a file ! 197: $!---------------------------------------- ! 198: $if f$search(dchfile) .nes. "" then delete 'dchfile';* ! 199: $if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 200: $define/user sys$output 'tfile1' ! 201: $library/list 'decc_rtldef' ! 202: $open/read/error=rtldef_loop1_end tf1 'tfile1' ! 203: $open/write/error=rtldef_loop1_end tf2 'dchfile' ! 204: $rtldef_loop1: ! 205: $ read/end=rtldef_loop1_end tf1 line_in ! 206: $ line_in = f$edit(line_in,"TRIM,COMPRESS") ! 207: $ key1 = f$element(0," ",line_in) ! 208: $ key2 = f$element(1," ",line_in) ! 209: $ if key1 .eqs. " " .or. key1 .eqs. "" then goto rtldef_loop1 ! 210: $ if key2 .nes. " " .and. key2 .nes. "" then goto rtldef_loop1 ! 211: $ write tf2 "|",key1,"|" ! 212: $ goto rtldef_loop1 ! 213: $rtldef_loop1_end: ! 214: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1 ! 215: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2 ! 216: $if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 217: $! ! 218: $! Dump the STARLET header names into a file ! 219: $!---------------------------------------- ! 220: $if f$search(starhfile) .nes. "" then delete 'starhfile';* ! 221: $if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 222: $define/user sys$output 'tfile1' ! 223: $library/list 'decc_starletdef' ! 224: $open/read/error=stardef_loop1_end tf1 'tfile1' ! 225: $open/write/error=stardef_loop1_end tf2 'starhfile' ! 226: $stardef_loop1: ! 227: $ read/end=stardef_loop1_end tf1 line_in ! 228: $ line_in = f$edit(line_in,"TRIM,COMPRESS") ! 229: $ key1 = f$element(0," ",line_in) ! 230: $ key2 = f$element(1," ",line_in) ! 231: $ if key1 .eqs. " " .or. key1 .eqs. "" then goto stardef_loop1 ! 232: $ if key2 .nes. " " .and. key2 .nes. "" then goto stardef_loop1 ! 233: $ write tf2 "|",key1,"|" ! 234: $ goto stardef_loop1 ! 235: $stardef_loop1_end: ! 236: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1 ! 237: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2 ! 238: $if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 239: $! ! 240: $! ! 241: $! Now calculate what should be in the file from reading ! 242: $! config.h.in and CONFIGURE. ! 243: $!--------------------------------------------------------------- ! 244: $open/read inf 'cfile' ! 245: $do_comment = 0 ! 246: $if_block = 0 ! 247: $cfgh_in_loop1: ! 248: $!set nover ! 249: $ read/end=cfgh_in_loop1_end inf line_in ! 250: $ xline = f$edit(line_in,"TRIM,COMPRESS") ! 251: $! ! 252: $! Blank line handling ! 253: $!--------------------- ! 254: $ if xline .eqs. "" ! 255: $ then ! 256: $ write tf "" ! 257: $ goto cfgh_in_loop1 ! 258: $ endif ! 259: $ xlen = f$length(xline) ! 260: $ key = f$extract(0,2,xline) ! 261: $! ! 262: $! deal with comments by copying exactly ! 263: $!----------------------------------------- ! 264: $ if (do_comment .eq. 1) .or. (key .eqs. "/*") ! 265: $ then ! 266: $ do_comment = 1 ! 267: $ write tf line_in ! 268: $ key = f$extract(xlen - 2, 2, xline) ! 269: $ if key .eqs. "*/" then do_comment = 0 ! 270: $ goto cfgh_in_loop1 ! 271: $ endif ! 272: $! ! 273: $! Some quick parsing ! 274: $!---------------------- ! 275: $ keyif = f$extract(0,3,xline) ! 276: $ key1 = f$element(0," ",xline) ! 277: $ key2 = f$element(1," ",xline) ! 278: $ key2a = f$element(0,"_",key2) ! 279: $ key2b = f$element(1,"_",key2) ! 280: $ key2_len = f$length(key2) ! 281: $ key2_h = f$extract(key2_len - 2, 2, key2) ! 282: $ key2_t = f$extract(key2_len - 5, 5, key2) ! 283: $ if key2_t .eqs. "_TYPE" then key2_h = "_T" ! 284: $ key64 = 0 ! 285: $ if f$locate("64", xline) .lt. xlen then key64 = 1 ! 286: $! ! 287: $!write sys$output "xline = ''xline'" ! 288: $! ! 289: $! Comment out this section of the ifblock ! 290: $!----------------------------------------- ! 291: $ if if_block .ge. 3 ! 292: $ then ! 293: $ write tf "/* ", xline, " */" ! 294: $ if keyif .eqs. "#en" then if_block = 0 ! 295: $ goto cfgh_in_loop1 ! 296: $ endif ! 297: $! ! 298: $! Handle the end of an ifblock ! 299: $!------------------------------- ! 300: $ if keyif .eqs. "#en" ! 301: $ then ! 302: $ write tf xline ! 303: $ if_block = 0 ! 304: $ goto cfgh_in_loop1 ! 305: $ endif ! 306: $! ! 307: $ if key1 .eqs. "#ifndef" ! 308: $ then ! 309: $! Manual check for _ALL_SOURCE on AIX error ! 310: $!----------------------------------------------- ! 311: $ if key2 .eqs. "_ALL_SOURCE" ! 312: $ then ! 313: $ write tf "/* ", xline, " */" ! 314: $! ! 315: $! Ignore the rest of the block ! 316: $!-------------------------------------- ! 317: $ if_block = 3 ! 318: $ goto cfgh_in_loop1 ! 319: $ endif ! 320: $ endif ! 321: $! ! 322: $! ! 323: $! Default action for an #if/#else/#endif ! 324: $!------------------------------------------ ! 325: $ if keyif .eqs. "#if" .or. keyif .eqs. "#el" ! 326: $ then ! 327: $ if_block = 1 ! 328: $ write tf xline ! 329: $ goto cfgh_in_loop1 ! 330: $ endif ! 331: $! ! 332: $! ! 333: $! Process "normal?" stuff ! 334: $!--------------------------- ! 335: $ if key1 .eqs. "#undef" ! 336: $ then ! 337: $ key2c = f$element(2, "_", key2) ! 338: $ if (key2c .eqs. "_") .or. (key2c .eqs. "H") then key2c = "" ! 339: $ key2d = f$element(3, "_", key2) ! 340: $ if (key2d .eqs. "_") .or. (key2d .eqs. "H") then key2d = "" ! 341: $ key2e = f$element(4, "_", key2) ! 342: $ if (key2e .eqs. "_") .or. (key2e .eqs. "H") then key2e = "" ! 343: $ if key2d .eqs. "T" ! 344: $ then ! 345: $ if key2e .eqs. "TYPE" ! 346: $ then ! 347: $ key2_h = "_T" ! 348: $ key2d = "" ! 349: $ endif ! 350: $ endif ! 351: $! ! 352: $ double_under = 0 ! 353: $! ! 354: $! Process FCNTL directives ! 355: $!------------------------------------- ! 356: $ if (key2b .eqs. "FCNTL") .and. (key2c .eqs. "O") .and. - ! 357: (key2d .eqs. "NONBLOCK") ! 358: $ then ! 359: $ write tf "#ifndef ''key2'" ! 360: $ write tf "#define ''key2' 1" ! 361: $ write tf "#endif" ! 362: $ goto cfgh_in_loop1 ! 363: $ endif ! 364: $! ! 365: $! Process GETADDRINFO directives ! 366: $!------------------------------------- ! 367: $ if key2 .eqs. "GETADDRINFO_THREADSAFE" ! 368: $ then ! 369: $ write tf "#ifndef ''key2'" ! 370: $ write tf "#define ''key2' 1" ! 371: $ write tf "#endif" ! 372: $ goto cfgh_in_loop1 ! 373: $ endif ! 374: $! ! 375: $! Process IOCTL directives ! 376: $!------------------------------------- ! 377: $ if (key2b .eqs. "IOCTL") .and. (key2c .nes. "") ! 378: $ then ! 379: $ if (key2c .eqs. "FIONBIO") .or. (key2c .eqs. "SIOCGIFADDR") ! 380: $ then ! 381: $ write tf "#ifndef ''key2'" ! 382: $ write tf "#define ''key2' 1" ! 383: $ write tf "#endif" ! 384: $ goto cfgh_in_loop1 ! 385: $ endif ! 386: $ endif ! 387: $! ! 388: $! ! 389: $! Manual check for LL on ! 390: $!----------------------------------------------- ! 391: $ if key2 .eqs. "LL" ! 392: $ then ! 393: $ write tf "#ifndef __VAX ! 394: $ write tf "#define HAVE_''key2' 1" ! 395: $ write tf "#endif" ! 396: $ goto cfgh_in_loop1 ! 397: $ endif ! 398: $! ! 399: $ if key2 .eqs. "bool_t" ! 400: $ then ! 401: $ write tf "#ifndef ''key2'" ! 402: $ write tf "#define ''key2' short" ! 403: $ write tf "#endif" ! 404: $ goto cfgh_in_loop1 ! 405: $ endif ! 406: $! ! 407: $ if key2 .eqs. "bits16_t" ! 408: $ then ! 409: $ write tf "#ifndef ''key2'" ! 410: $ write tf "#define ''key2' short" ! 411: $ write tf "#endif" ! 412: $ goto cfgh_in_loop1 ! 413: $ endif ! 414: $! ! 415: $ if key2 .eqs. "u_bits16_t" ! 416: $ then ! 417: $ write tf "#ifndef ''key2'" ! 418: $ write tf "#define ''key2' unsigned short" ! 419: $ write tf "#endif" ! 420: $ goto cfgh_in_loop1 ! 421: $ endif ! 422: $! ! 423: $ if key2 .eqs. "bits32_t" ! 424: $ then ! 425: $ write tf "#ifndef ''key2'" ! 426: $ write tf "#define ''key2' int" ! 427: $ write tf "#endif" ! 428: $ goto cfgh_in_loop1 ! 429: $ endif ! 430: $! ! 431: $ if key2 .eqs. "u_bits32_t" ! 432: $ then ! 433: $ write tf "#ifndef ''key2'" ! 434: $ write tf "#define ''key2' unsigned int" ! 435: $ write tf "#endif" ! 436: $ goto cfgh_in_loop1 ! 437: $ endif ! 438: $! ! 439: $ if key2 .eqs. "intmax_t" ! 440: $ then ! 441: $ write tf "#ifndef ''key2'" ! 442: $ write tf "#ifdef __VAX" ! 443: $ write tf "#define ''key2' long" ! 444: $ write tf "#else" ! 445: $ write tf "#define ''key2' long long" ! 446: $ write tf "#endif" ! 447: $ write tf "#endif" ! 448: $ goto cfgh_in_loop1 ! 449: $ endif ! 450: $! ! 451: $ if key2 .eqs. "uintmax_t" ! 452: $ then ! 453: $ write tf "#ifndef ''key2'" ! 454: $ write tf "#ifdef __VAX" ! 455: $ write tf "#define ''key2' unsigned long" ! 456: $ write tf "#else" ! 457: $ write tf "#define ''key2' unsigned long long" ! 458: $ write tf "#endif" ! 459: $ write tf "#endif" ! 460: $ goto cfgh_in_loop1 ! 461: $ endif ! 462: $! ! 463: $ if key2 .eqs. "socklen_t" ! 464: $ then ! 465: $ write tf "#ifndef ''key2'" ! 466: $ write tf "#define ''key2' int" ! 467: $ write tf "#endif" ! 468: $ goto cfgh_in_loop1 ! 469: $ endif ! 470: $! ! 471: $ if key2 .eqs. "GETGROUPS_T" ! 472: $ then ! 473: $ write tf "#ifndef ''key2'" ! 474: $ write tf "#define ''key2' gid_t" ! 475: $ write tf "#endif" ! 476: $ goto cfgh_in_loop1 ! 477: $ endif ! 478: $! ! 479: $ if key2 .eqs. "HAVE_DECL_SYS_SIGLIST" ! 480: $ then ! 481: $ write tf "#ifndef ''key2'" ! 482: $ write tf "#define ''key2' 0" ! 483: $ write tf "#endif" ! 484: $ goto cfgh_in_loop1 ! 485: $ endif ! 486: $! ! 487: $ if key2 .eqs. "HAVE_SYS_ERRLIST" ! 488: $ then ! 489: $ write tf "#ifndef ''key2'" ! 490: $ write tf "#define ''key2' 1" ! 491: $ write tf "#endif" ! 492: $ goto cfgh_in_loop1 ! 493: $ endif ! 494: $! ! 495: $ if key2 .eqs. "HAVE_STRUCT_DIRENT_D_INO" ! 496: $ then ! 497: $ write tf "#ifndef ''key2'" ! 498: $ write tf "#define ''key2' 1" ! 499: $ write tf "#endif" ! 500: $ goto cfgh_in_loop1 ! 501: $ endif ! 502: $! ! 503: $ if key2 .eqs. "HAVE_STRUCT_TIMEVAL" ! 504: $ then ! 505: $ write tf "#ifndef ''key2'" ! 506: $ write tf "#define ''key2' 1" ! 507: $ write tf "#endif" ! 508: $ goto cfgh_in_loop1 ! 509: $ endif ! 510: $! ! 511: $! ! The header files have this information, however ! 512: $! ! The ioctl() call only works on sockets. ! 513: $! if key2 .eqs. "FIONREAD_IN_SYS_IOCTL" ! 514: $! then ! 515: $! write tf "#ifndef ''key2'" ! 516: $! write tf "#define ''key2' 1" ! 517: $! write tf "#endif" ! 518: $! goto cfgh_in_loop1 ! 519: $! endif ! 520: $! ! 521: $! ! The header files have this information, however ! 522: $! ! The ioctl() call only works on sockets. ! 523: $! if key2 .eqs. "GWINSZ_IN_SYS_IOCTL" ! 524: $! then ! 525: $! write tf "#ifndef ''key2'" ! 526: $! write tf "#define ''key2' 1" ! 527: $! write tf "#endif" ! 528: $! goto cfgh_in_loop1 ! 529: $! endif ! 530: $! ! 531: $! ! The header files have this information, however ! 532: $! ! The ioctl() call only works on sockets. ! 533: $! if key2 .eqs. "STRUCT_WINSIZE_IN_SYS_IOCTL" ! 534: $! then ! 535: $! write tf "#ifndef ''key2'" ! 536: $! write tf "#define ''key2' 0" ! 537: $! write tf "#endif" ! 538: $! goto cfgh_in_loop1 ! 539: $! endif ! 540: $! ! 541: $ if key2 .eqs. "HAVE_STRUCT_TM_TM_ZONE" ! 542: $ then ! 543: $ write tf "#ifndef ''key2'" ! 544: $ write tf "#define ''key2' 1" ! 545: $ write tf "#endif" ! 546: $ goto cfgh_in_loop1 ! 547: $ endif ! 548: $! ! 549: $ if key2 .eqs. "HAVE_TM_ZONE" ! 550: $ then ! 551: $ write tf "#ifndef ''key2'" ! 552: $ write tf "#define ''key2' 1" ! 553: $ write tf "#endif" ! 554: $ goto cfgh_in_loop1 ! 555: $ endif ! 556: $! ! 557: $ if key2 .eqs. "HAVE_TIMEVAL" ! 558: $ then ! 559: $ write tf "#ifndef ''key2'" ! 560: $ write tf "#define ''key2' 1" ! 561: $ write tf "#endif" ! 562: $ goto cfgh_in_loop1 ! 563: $ endif ! 564: $! ! 565: $ if key2 .eqs. "WEXITSTATUS_OFFSET" ! 566: $ then ! 567: $ write tf "#ifndef ''key2'" ! 568: $ write tf "#define ''key2' 2" ! 569: $ write tf "#endif" ! 570: $ goto cfgh_in_loop1 ! 571: $ endif ! 572: $! ! 573: $ if key2 .eqs. "HAVE_GETPW_DECLS" ! 574: $ then ! 575: $ write tf "#ifndef ''key2'" ! 576: $ write tf "#define ''key2' 1" ! 577: $ write tf "#endif" ! 578: $ goto cfgh_in_loop1 ! 579: $ endif ! 580: $! ! 581: $ if key2 .eqs. "HAVE_DECL_CONFSTR" ! 582: $ then ! 583: $ write tf "#ifndef ''key2'" ! 584: $ write tf "#define ''key2' 1" ! 585: $ write tf "#endif" ! 586: $ goto cfgh_in_loop1 ! 587: $ endif ! 588: $! ! 589: $ if key2 .eqs. "HAVE_DECL_PRINTF" ! 590: $ then ! 591: $ write tf "#ifndef ''key2'" ! 592: $ write tf "#define ''key2' 1" ! 593: $ write tf "#endif" ! 594: $ goto cfgh_in_loop1 ! 595: $ endif ! 596: $! ! 597: $ if key2 .eqs. "HAVE_DECL_SBRK" ! 598: $ then ! 599: $ write tf "#ifndef ''key2'" ! 600: $ write tf "#define ''key2' 1" ! 601: $ write tf "#endif" ! 602: $ goto cfgh_in_loop1 ! 603: $ endif ! 604: $! ! 605: $ if key2 .eqs. "HAVE_DECL_STRSIGNAL" ! 606: $ then ! 607: $ write tf "#ifndef ''key2'" ! 608: $ write tf "#define ''key2' 0" ! 609: $ write tf "#endif" ! 610: $ goto cfgh_in_loop1 ! 611: $ endif ! 612: $! ! 613: $ if key2a .eqs. "HAVE_DECL_STRTOLD" ! 614: $ then ! 615: $ write tf "#ifndef ''key2'" ! 616: $ write tf "#define ''key2' 0" ! 617: $ write tf "#endif" ! 618: $ goto cfgh_in_loop1 ! 619: $ endif ! 620: $! ! 621: $ if key2 .eqs. "HAVE_DECL_STRTOIMAX" ! 622: $ then ! 623: $ write tf "#ifndef ''key2'" ! 624: $ write tf "#define ''key2' 0" ! 625: $ write tf "#endif" ! 626: $ goto cfgh_in_loop1 ! 627: $ endif ! 628: $! ! 629: $ if key2 .eqs. "HAVE_DECL_STRTOL" ! 630: $ then ! 631: $ write tf "#ifndef ''key2'" ! 632: $ write tf "#define ''key2' 1" ! 633: $ write tf "#endif" ! 634: $ goto cfgh_in_loop1 ! 635: $ endif ! 636: $! ! 637: $ if key2 .eqs. "HAVE_DECL_STRTOLL" ! 638: $ then ! 639: $ write tf "#ifndef ''key2'" ! 640: $ write tf "#define ''key2' 1" ! 641: $ write tf "#endif" ! 642: $ goto cfgh_in_loop1 ! 643: $ endif ! 644: $! ! 645: $ if key2 .eqs. "HAVE_DECL_STRTOUL" ! 646: $ then ! 647: $ write tf "#ifndef ''key2'" ! 648: $ write tf "#define ''key2' 1" ! 649: $ write tf "#endif" ! 650: $ goto cfgh_in_loop1 ! 651: $ endif ! 652: $! ! 653: $ if key2 .eqs. "HAVE_DECL_STRTOULL" ! 654: $ then ! 655: $ write tf "#ifndef ''key2'" ! 656: $ write tf "#define ''key2' 1" ! 657: $ write tf "#endif" ! 658: $ goto cfgh_in_loop1 ! 659: $ endif ! 660: $! ! 661: $ if key2 .eqs. "HAVE_DECL_STRTOUMAX" ! 662: $ then ! 663: $ write tf "#ifndef ''key2'" ! 664: $ write tf "#define ''key2' 0" ! 665: $ write tf "#endif" ! 666: $ goto cfgh_in_loop1 ! 667: $ endif ! 668: $! ! 669: $ if key2 .eqs. "GETPGRP_VOID" ! 670: $ then ! 671: $ write tf "#ifndef ''key2'" ! 672: $ write tf "#define ''key2' 1" ! 673: $ write tf "#endif" ! 674: $ goto cfgh_in_loop1 ! 675: $ endif ! 676: $! ! 677: $ if key2 .eqs. "NAMED_PIPES_MISSING" ! 678: $ then ! 679: $ write tf "#ifndef ''key2'" ! 680: $ write tf "#define ''key2' 1" ! 681: $ write tf "#endif" ! 682: $ goto cfgh_in_loop1 ! 683: $ endif ! 684: $! ! 685: $ if key2 .eqs. "OPENDIR_NOT_ROBUST" ! 686: $ then ! 687: $ write tf "#ifndef ''key2'" ! 688: $ write tf "#define ''key2' 1" ! 689: $ write tf "#endif" ! 690: $ goto cfgh_in_loop1 ! 691: $ endif ! 692: $! ! 693: $ if key2 .eqs. "PGRP_PIPE" ! 694: $ then ! 695: $ write tf "#ifndef ''key2'" ! 696: $ write tf "#define ''key2' 1" ! 697: $ write tf "#endif" ! 698: $ goto cfgh_in_loop1 ! 699: $ endif ! 700: $! ! 701: $ if key2 .eqs. "CAN_REDEFINE_GETENV" ! 702: $ then ! 703: $ write tf "#ifndef ''key2'" ! 704: $ write tf "#define ''key2' 1" ! 705: $ write tf "#endif" ! 706: $ goto cfgh_in_loop1 ! 707: $ endif ! 708: $! ! 709: $ if key2 .eqs. "HAVE_PRINTF_A_FORMAT" ! 710: $ then ! 711: $ write tf "#ifndef ''key2'" ! 712: $ write tf "#define ''key2' 1" ! 713: $ write tf "#endif" ! 714: $ goto cfgh_in_loop1 ! 715: $ endif ! 716: $! ! 717: $ if key2 .eqs. "CTYPE_NON_ASCII" ! 718: $ then ! 719: $ write tf "#ifndef ''key2'" ! 720: $ write tf "#define ''key2' 1" ! 721: $ write tf "#endif" ! 722: $ goto cfgh_in_loop1 ! 723: $ endif ! 724: $! ! 725: $ if key2 .eqs. "HAVE_LANGINFO_CODESET" ! 726: $ then ! 727: $ write tf "#ifndef ''key2'" ! 728: $ write tf "#define ''key2' 0" ! 729: $ write tf "#endif" ! 730: $ goto cfgh_in_loop1 ! 731: $ endif ! 732: $! ! 733: $! This wants execve() to do this automagically to pass. ! 734: $! if key2 .eqs. "HAVE_HASH_BANG_EXEC" ! 735: $! then ! 736: $! write tf "#ifndef ''key2'" ! 737: $! write tf "#define ''key2' 1" ! 738: $! write tf "#endif" ! 739: $! goto cfgh_in_loop1 ! 740: $! endif ! 741: $! ! 742: $ if key2 .eqs. "ICONV_CONST" ! 743: $ then ! 744: $ write tf "#ifndef ''key2'" ! 745: $ write tf "#define ''key2'" ! 746: $ write tf "#endif" ! 747: $ goto cfgh_in_loop1 ! 748: $ endif ! 749: $! ! 750: $ if key2 .eqs. "VOID_SIGHANDLER" ! 751: $ then ! 752: $ write tf "#ifndef ''key2'" ! 753: $ write tf "#define ''key2' 1" ! 754: $ write tf "#endif" ! 755: $ goto cfgh_in_loop1 ! 756: $ endif ! 757: $! ! 758: $ if key2 .eqs. "HAVE_POSIX_SIGNALS" ! 759: $ then ! 760: $ write tf "#ifndef ''key2'" ! 761: $ write tf "#define ''key2' 1" ! 762: $ write tf "#endif" ! 763: $ goto cfgh_in_loop1 ! 764: $ endif ! 765: $! ! 766: $ if key2 .eqs. "UNUSABLE_RT_SIGNALS" ! 767: $ then ! 768: $ write tf "#ifndef ''key2'" ! 769: $ write tf "#define ''key2' 1" ! 770: $ write tf "#endif" ! 771: $ goto cfgh_in_loop1 ! 772: $ endif ! 773: $! ! 774: $ if key2a .eqs. "HAVE_DECL_FPURGE" ! 775: $ then ! 776: $ write tf "#ifndef ''key2a'" ! 777: $ write tf "#define ''key2a' 1" ! 778: $ write tf "#endif" ! 779: $ goto cfgh_in_loop1 ! 780: $ endif ! 781: $! ! 782: $ if key2 .eqs. "HAVE_DECL_SETREGID" ! 783: $ then ! 784: $ write tf "#ifndef ''key2'" ! 785: $ write tf "#define ''key2' 1" ! 786: $ write tf "#endif" ! 787: $ goto cfgh_in_loop1 ! 788: $ endif ! 789: $! ! 790: $ if key2 .eqs. "HAVE_POSIX_SIGSETJMP" ! 791: $ then ! 792: $ write tf "#ifndef ''key2'" ! 793: $ write tf "#define ''key2' 1" ! 794: $ write tf "#endif" ! 795: $ goto cfgh_in_loop1 ! 796: $ endif ! 797: $! ! 798: $ if key2 .eqs. "HAVE_LIBDL" ! 799: $ then ! 800: $ write tf "#ifndef ''key2'" ! 801: $ write tf "#define ''key2' 1" ! 802: $ write tf "#endif" ! 803: $ goto cfgh_in_loop1 ! 804: $ endif ! 805: $! ! 806: $ if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. "" ! 807: $ then ! 808: $ if (key2c .eqs. "EGD") .or. - ! 809: (key2c .eqs. "STATUS") .or. - ! 810: (key2c .eqs. "SCREEN") ! 811: $ then ! 812: $ if f$search("''ssl_header_dir'rand.h") .nes. "" ! 813: $ then ! 814: $ write tf "#ifndef ''key2'" ! 815: $ write tf "#define ''key2' 1" ! 816: $ write tf "#endif" ! 817: $ else ! 818: $ write tf "/* #undef ''key2' */" ! 819: $ endif ! 820: $ endif ! 821: $ endif ! 822: $! ! 823: $ if key2 .eqs. "STRCOLL_BROKEN" ! 824: $ then ! 825: $ write tf "#ifndef ''key2'" ! 826: $ write tf "#define ''key2' 1" ! 827: $ write tf "#endif" ! 828: $ goto cfgh_in_loop1 ! 829: $ endif ! 830: $! ! 831: $ if key2 .eqs. "DUP_BROKEN" ! 832: $ then ! 833: $ write tf "#ifndef ''key2'" ! 834: $ write tf "#define ''key2' 1" ! 835: $ write tf "#endif" ! 836: $ goto cfgh_in_loop1 ! 837: $ endif ! 838: $! ! 839: $! This is for a test that getcwd(0,0) works. ! 840: $! It does not on VMS. ! 841: $!-------------------------- ! 842: $ if key2 .eqs. "GETCWD_BROKEN" ! 843: $ then ! 844: $ write sys$output "" ! 845: $ write sys$output - ! 846: "%CONFIG_H-I-NONPORT, ''key2' being tested for!" ! 847: $ write sys$output - ! 848: "-CONFIG_H-I-GETCWD, GETCWD(0,0) does not work on VMS." ! 849: $ write sys$output - ! 850: "-CONFIG_H-I-GETCWD2, Work around hack probably required." ! 851: $ write sys$output - ! 852: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 853: $ if update_config_vms ! 854: $ then ! 855: $ open/append tfcv sys$disk:[]config_vms.h ! 856: $ write tfcv "" ! 857: $ write tfcv - ! 858: "/* Check config.h for use of ''key2' settings */" ! 859: $ write tfcv "" ! 860: $ close tfcv ! 861: $ endif ! 862: $ ! 863: $ goto cfgh_in_loop1 ! 864: $ endif ! 865: $! ! 866: $ if (key2a .eqs. "HAVE") .or. (key2a .eqs. "STAT") .or. - ! 867: (key2 .eqs. "ENABLE_IPV6") .or. (key2b .eqs. "LDAP") ! 868: $ then ! 869: $! ! 870: $! Process extra underscores ! 871: $!------------------------------------ ! 872: $ if f$locate("HAVE___", key2) .lt. key2_len ! 873: $ then ! 874: $ key2b = "__" + key2d ! 875: $ key2d = "" ! 876: $ double_under = 1 ! 877: $ else ! 878: $ if f$locate("HAVE__", key2) .lt. key2_len ! 879: $ then ! 880: $ key2b = "_" + key2c ! 881: $ key2c = "" ! 882: $ double_under = 1 ! 883: $ endif ! 884: $ endif ! 885: $! ! 886: $ if (key2_h .eqs. "_H") .or. (key2 .eqs. "ENABLE_IPV6") .or. - ! 887: (key2b .eqs. "LDAP") ! 888: $ then ! 889: $! ! 890: $! Looking for a header file ! 891: $!--------------------------------------- ! 892: $ headf = key2b ! 893: $ if key2c .nes. "" then headf = headf + "_" + key2c ! 894: $ if key2d .nes. "" then headf = headf + "_" + key2d ! 895: $! ! 896: $! (key2b .eqs. "READLINE") ! 897: $! ! 898: $! Some special parsing ! 899: $!------------------------------------------ ! 900: $ if (key2b .eqs. "SYS") .or. (key2b .eqs. "ARPA") .or. - ! 901: (key2b .eqs. "NET") .or. (key2b .eqs. "NETINET") ! 902: $ then ! 903: $ if key2c .nes. "" ! 904: $ then ! 905: $ headf = key2c ! 906: $ if key2d .nes. "" then headf = key2c + "_" + key2d ! 907: $ endif ! 908: $ endif ! 909: $! ! 910: $! And of course what's life with out some special cases ! 911: $!-------------------------------------------------------------------- ! 912: $ if key2 .eqs. "ENABLE_IPV6" ! 913: $ then ! 914: $ headf = "in6" ! 915: $ endif ! 916: $! ! 917: $ if key2b .eqs. "LDAP" ! 918: $ then ! 919: $ if (key2 .eqs. "HAVE_LDAP_SSL") .or. - ! 920: (key2 .eqs. "HAVE_LDAP_URL_PARSE") ! 921: $ then ! 922: $ headf = "ldap" ! 923: $ endif ! 924: $ endif ! 925: $! ! 926: $! ! 927: $ if key2b .eqs. "FILE" ! 928: $ then ! 929: $ write sys$output "" ! 930: $ write sys$output - ! 931: "%CONFIG_H-I-NONPORT, ''key2' being asked for!" ! 932: $ write sys$output - ! 933: "-CONFIG_H-I-FILE_OLD, file.h will not be configured as is obsolete!" ! 934: $ write sys$output - ! 935: "-CONFIG_H_I-FCNTL_NEW, "Expecting fcntl.h to be configured instead!" ! 936: $ write sys$output - ! 937: "-CONFIG_H_I-FCNTL_CHK, "Unable to verify at this time!" ! 938: $ write sys$output - ! 939: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 940: $! ! 941: $ if update_config_vms ! 942: $ then ! 943: $ open/append tfcv sys$disk:[]config_vms.h ! 944: $ write tfcv "" ! 945: $ write tfcv - ! 946: "/* Check config.h for use of fcntl.h instead of file.h */" ! 947: $ write tfcv "" ! 948: $ close tfcv ! 949: $ endif ! 950: $ endif ! 951: $! ! 952: $! Now look it up in the DEC C RTL ! 953: $!--------------------------------------------- ! 954: $ define/user sys$output nl: ! 955: $ define/user sys$error nl: ! 956: $ search/output=nl: 'dchfile' |'headf'|/exact ! 957: $ if '$severity' .eq. 1 ! 958: $ then ! 959: $ if key64 then write tf "#ifndef __VAX" ! 960: $ write tf "#ifndef ''key2'" ! 961: $ write tf "#define ''key2' 1" ! 962: $if p2 .nes. "" then write sys$output "''dchfile' - #define ''key2' 1" ! 963: $ write tf "#endif" ! 964: $ if key64 then write tf "#endif" ! 965: $set nover ! 966: $ goto cfgh_in_loop1 ! 967: $ endif ! 968: $! ! 969: $! ! 970: $! Now look it up in the DEC C STARLET_C ! 971: $!--------------------------------------------- ! 972: $ define/user sys$output nl: ! 973: $ define/user sys$error nl: ! 974: $ search/output=nl: 'starhfile' |'headf'|/exact ! 975: $ if '$severity' .eq. 1 ! 976: $ then ! 977: $ if key64 then write tf "#ifndef __VAX" ! 978: $ write tf "#ifndef ''key2'" ! 979: $ write tf "#define ''key2' 1" ! 980: $if p2 .nes. "" then write sys$output "''starfile' - #define ''key2' 1" ! 981: $ write tf "#endif" ! 982: $ if key64 then write tf "#endif" ! 983: $set nover ! 984: $ goto cfgh_in_loop1 ! 985: $ endif ! 986: $! ! 987: $! Now look for OPENSSL headers ! 988: $!--------------------------------------------------------- ! 989: $ if key2b .eqs. "OPENSSL" ! 990: $ then ! 991: $ headf = headf - "OPENSSL_" ! 992: $ header = f$search("''ssl_header_dir'''headf'.h") ! 993: $ if header .nes. "" ! 994: $ then ! 995: $ write tf "#ifndef ''key2'" ! 996: $ write tf "#define ''key2' 1" ! 997: $ write tf "#endif" ! 998: $set nover ! 999: $ goto cfgh_in_loop1 ! 1000: $ endif ! 1001: $ endif ! 1002: $! ! 1003: $! Now look for Kerberos ! 1004: $!------------------------------------------------------------ ! 1005: $ if key2b .eqs. "GSSAPI" ! 1006: $ then ! 1007: $ header_dir = "sys$sysroot:[kerberos.include]" ! 1008: $ headf = headf - "GSSAPI_" ! 1009: $ header = f$search("''header_dir'''headf'.h") ! 1010: $ if header .nes. "" ! 1011: $ then ! 1012: $ write tf "#ifndef ''key2'" ! 1013: $ write tf "#define ''key2' 1" ! 1014: $ write tf "#endif" ! 1015: $set nover ! 1016: $ goto cfgh_in_loop1 ! 1017: $ endif ! 1018: $ endif ! 1019: $! ! 1020: $set nover ! 1021: $ else ! 1022: $! ! 1023: $! Looking for a routine or a symbol ! 1024: $!------------------------------------------------ ! 1025: $ if key2c .eqs. "MACRO" ! 1026: $ then ! 1027: $ if (key2b .eqs. "FILE") .or. (key2b .eqs. "DATE") - ! 1028: .or. (key2b .eqs. "LINE") .or. (key2b .eqs. "TIME") ! 1029: $ then ! 1030: $ write tf "#ifndef HAVE_''key2b'" ! 1031: $ write tf "#define HAVE_''key2b' 1" ! 1032: $ write tf "#endif" ! 1033: $ endif ! 1034: $ goto cfgh_in_loop1 ! 1035: $ endif ! 1036: $! ! 1037: $! Special false tests ! 1038: $!------------------------------------- ! 1039: $ if double_under ! 1040: $ then ! 1041: $ if key2b .eqs. "_FCNTL" .or. key2b .eqs. "__FCNTL" ! 1042: $ then ! 1043: $ write tf "/* #undef HAVE_''key2b' */" ! 1044: $ goto cfgh_in_loop1 ! 1045: $ endif ! 1046: $! ! 1047: $ if key2b .eqs. "_STAT" .or. key2b .eqs. "__STAT" ! 1048: $ then ! 1049: $ write tf "/* #undef HAVE_''key2b' */" ! 1050: $ goto cfgh_in_loop1 ! 1051: $ endif ! 1052: $! ! 1053: $ if key2b .eqs. "_READ" .or. key2b .eqs. "__READ" ! 1054: $ then ! 1055: $ write tf "/* #undef HAVE_''key2b' */" ! 1056: $ goto cfgh_in_loop1 ! 1057: $ endif ! 1058: $ endif ! 1059: $! ! 1060: $ keysym = key2b ! 1061: $ if key2c .nes. "" then keysym = keysym + "_" + key2c ! 1062: $ if key2d .nes. "" then keysym = keysym + "_" + key2d ! 1063: $ if key2e .nes. "" then keysym = keysym + "_" + key2e ! 1064: $! ! 1065: $! ! 1066: $! Stat structure members ! 1067: $!------------------------------------- ! 1068: $ if key2b .eqs. "STRUCT" ! 1069: $ then ! 1070: $ if key2c .eqs. "STAT" .and (key2d .nes. "") ! 1071: $ then ! 1072: $ key2b = key2b + "_" + key2c + "_" + key2d ! 1073: $ key2c = key2e ! 1074: $ key2d = "" ! 1075: $ key2e = "" ! 1076: $ endif ! 1077: $ endif ! 1078: $ if (key2b .eqs. "ST") .or. (key2b .eqs. "STRUCT_STAT_ST") ! 1079: $ then ! 1080: $ keysym = "ST" + "_" + key2c ! 1081: $ keysym = f$edit(keysym,"LOWERCASE") ! 1082: $ endif ! 1083: $ if key2a .eqs. "STAT" ! 1084: $ then ! 1085: $ if (f$locate("STATVFS", key2b) .eq. 0) .and. key2c .eqs. "" ! 1086: $ then ! 1087: $ keysym = f$edit(key2b, "LOWERCASE") ! 1088: $ endif ! 1089: $!$ if (key2b .eqs. "STATVFS" .or. key2b .eqs. "STATFS2" - ! 1090: $! .or. key2b .eqs. "STATFS3") .and. key2c .nes. "" ! 1091: $! ! 1092: $ if (key2b .eqs. "STATVFS") .and. key2c .nes. "" ! 1093: $ then ! 1094: $! Should really verify that the structure ! 1095: $! named by key2b actually exists first. ! 1096: $!------------------------------------------------------------ ! 1097: $! ! 1098: $! Statvfs structure members ! 1099: $!------------------------------------------------- ! 1100: $ keysym = "f_" + f$edit(key2c,"LOWERCASE") ! 1101: $ endif ! 1102: $ endif ! 1103: $! ! 1104: $! UTMPX structure members ! 1105: $!-------------------------------------- ! 1106: $ if key2b .eqs. "UT" .and. key2c .eqs. "UT" ! 1107: $ then ! 1108: $ keysym = "ut_" + f$edit(key2d,"LOWERCASE") ! 1109: $ endif ! 1110: $! ! 1111: $ if f$locate("MMAP",key2) .lt. key2_len ! 1112: $ then ! 1113: $ write sys$output "" ! 1114: $ write sys$output - ! 1115: "%CONFIG_H-I-NONPORT, ''key2' being asked for!" ! 1116: $ write sys$output - ! 1117: "-CONFIG_H-I-MMAP, MMAP operations only work on STREAM and BINARY files!" ! 1118: $ write sys$output - ! 1119: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 1120: $ if update_config_vms ! 1121: $ then ! 1122: $ open/append tfcv sys$disk:[]config_vms.h ! 1123: $ write tfcv "" ! 1124: $ write tfcv - ! 1125: "/* Check config.h for use of ''key2' settings */" ! 1126: $ write tfcv "" ! 1127: $ close tfcv ! 1128: $ endif ! 1129: $ endif ! 1130: $! ! 1131: $! ! 1132: $ if keysym .eqs. "CRYPT" ! 1133: $ then ! 1134: $ write sys$output "" ! 1135: $ write sys$output - ! 1136: "%CONFIG_H-I-NONPORT, ''key2' being asked for!" ! 1137: $ write sys$output - ! 1138: "-CONFIG_H-I-CRYPT, CRYPT operations on the VMS SYSUAF may not work!" ! 1139: $ write sys$output - ! 1140: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 1141: $ if update_config_vms ! 1142: $ then ! 1143: $ open/append tfcv sys$disk:[]config_vms.h ! 1144: $ write tfcv "" ! 1145: $ write tfcv - ! 1146: "/* Check config.h for use of ''keysym' */" ! 1147: $ write tfcv "" ! 1148: $ close tfcv ! 1149: $ endif ! 1150: $ endif ! 1151: $! ! 1152: $! ! 1153: $ if keysym .eqs. "EXECL" ! 1154: $ then ! 1155: $ write sys$output "" ! 1156: $ write sys$output - ! 1157: "%CONFIG_H-I-NONPORT, ''key2' being asked for!" ! 1158: $ write sys$output - ! 1159: "-CONFIG_H-I-EXCEL, EXECL configured, Will probably not work." ! 1160: $ write sys$output - ! 1161: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 1162: $ if update_config_vms ! 1163: $ then ! 1164: $ open/append tfcv sys$disk:[]config_vms.h ! 1165: $ write tfcv "" ! 1166: $ write tfcv - ! 1167: "/* Check config.h for use of ''keysym' */" ! 1168: $ write tfcv "" ! 1169: $ close tfcv ! 1170: $ endif ! 1171: $ endif ! 1172: $! ! 1173: $! ! 1174: $! Process if cpp supports ANSI-C stringizing '#' operator ! 1175: $!----------------------------------------------------------------------- ! 1176: $ if keysym .eqs. "STRINGIZE" ! 1177: $ then ! 1178: $ write tf "#ifndef HAVE_STRINGIZE" ! 1179: $ write tf "#define HAVE_STRINGSIZE 1" ! 1180: $ write tf "#endif" ! 1181: $ goto cfgh_in_loop1 ! 1182: $ endif ! 1183: $! ! 1184: $ if keysym .eqs. "VOLATILE" ! 1185: $ then ! 1186: $ write tf "#ifndef HAVE_VOLATILE" ! 1187: $ write tf "#define HAVE_VOLATILE 1" ! 1188: $ write tf "#endif" ! 1189: $ goto cfgh_in_loop1 ! 1190: $ endif ! 1191: $! ! 1192: $ if keysym .eqs. "ALLOCA" ! 1193: $ then ! 1194: $ write tf "#ifndef HAVE_ALLOCA" ! 1195: $ write tf "#define HAVE_ALLOCA 1" ! 1196: $ write tf "#endif" ! 1197: $ goto cfgh_in_loop1 ! 1198: $ endif ! 1199: $! ! 1200: $ if keysym .eqs. "ERRNO_DECL" ! 1201: $ then ! 1202: $ write tf "#ifndef HAVE_ERRNO_DECL" ! 1203: $ write tf "#define HAVE_ERRNO_DECL 1" ! 1204: $ write tf "#endif" ! 1205: $ goto cfgh_in_loop1 ! 1206: $ endif ! 1207: $! ! 1208: $ if keysym .eqs. "LONGLONG" ! 1209: $ then ! 1210: $ write tf "#ifndef __VAX" ! 1211: $ write tf "#pragma message disable longlongtype" ! 1212: $ write tf "#ifndef HAVE_LONGLONG" ! 1213: $ write tf "#define HAVE_LONGLONG 1" ! 1214: $ write tf "#endif" ! 1215: $ write tf "#endif" ! 1216: $ goto cfgh_in_loop1 ! 1217: $ endif ! 1218: $! ! 1219: $! May need to test compiler version ! 1220: $!----------------------------------------------- ! 1221: $ if keysym .eqs. "LONG_LONG" ! 1222: $ then ! 1223: $ write tf "#ifndef __VAX" ! 1224: $ write tf "#pragma message disable longlongtype" ! 1225: $ write tf "#ifndef HAVE_LONG_LONG" ! 1226: $ write tf "#define HAVE_LONG_LONG 1" ! 1227: $ write tf "#endif" ! 1228: $ write tf "#endif" ! 1229: $ goto cfgh_in_loop1 ! 1230: $ endif ! 1231: $! ! 1232: $! May need to test compiler version ! 1233: $!----------------------------------------------- ! 1234: $ if keysym .eqs. "UNSIGNED_LONG_LONG" ! 1235: $ then ! 1236: $ write tf "#ifndef __VAX" ! 1237: $ write tf "#pragma message disable longlongtype" ! 1238: $ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG" ! 1239: $ write tf "#define HAVE_UNSIGNED_LONG_LONG 1" ! 1240: $ write tf "#endif" ! 1241: $ write tf "#endif" ! 1242: $ goto cfgh_in_loop1 ! 1243: $ endif ! 1244: $! ! 1245: $! May need to test compiler version ! 1246: $!----------------------------------------------- ! 1247: $ if keysym .eqs. "UNSIGNED_LONG_LONG_INT" ! 1248: $ then ! 1249: $ write tf "#ifndef __VAX" ! 1250: $ write tf "#pragma message disable longlongtype" ! 1251: $ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG_INT" ! 1252: $ write tf "#define HAVE_UNSIGNED_LONG_LONG_INT 1" ! 1253: $ write tf "#endif" ! 1254: $ write tf "#endif" ! 1255: $ goto cfgh_in_loop1 ! 1256: $ endif ! 1257: $! ! 1258: $! May need to test compiler version ! 1259: $!----------------------------------------------- ! 1260: $ if keysym .eqs. "LONG_DOUBLE" ! 1261: $ then ! 1262: $ write tf "#ifndef __VAX" ! 1263: $ write tf "#pragma message disable longlongtype" ! 1264: $ write tf "#ifndef HAVE_LONG_DOUBLE" ! 1265: $ write tf "#define HAVE_LONG_DOUBLE 1" ! 1266: $ write tf "#endif" ! 1267: $ write tf "#endif" ! 1268: $ goto cfgh_in_loop1 ! 1269: $ endif ! 1270: $! ! 1271: $ if keysym .eqs. "FCNTL_LOCK" ! 1272: $ then ! 1273: $ write sys$output - ! 1274: "%CONFIG_H-I-NONPORT, ''key2' being asked for! ! 1275: $ write sys$output - ! 1276: "-CONFIG_H-I-REVIEW, Manual Code review required!" ! 1277: $ goto cfgh_in_loop1 ! 1278: $ endif ! 1279: $! ! 1280: $! ! 1281: $! These libraries are provided by the DEC C RTL ! 1282: $!------------------------------------------------------------- ! 1283: $ if keysym .eqs. "LIBINET" .or. keysym .eqs. "LIBSOCKET" ! 1284: $ then ! 1285: $ write tf "#ifndef HAVE_''keysym'" ! 1286: $ write tf "#define HAVE_''keysym' 1" ! 1287: $if p2 .nes. "" then write sys$output "''decc_shr' #define ''keysym' 1" ! 1288: $ write tf "#endif ! 1289: $ goto cfgh_in_loop1 ! 1290: $ endif ! 1291: $! ! 1292: $ if keysym .eqs. "HERRNO" then keysym = "h_errno" ! 1293: $ if keysym .eqs. "UTIMBUF" then keysym = "utimbuf" ! 1294: $ if key2c .eqs. "STRUCT" ! 1295: $ then ! 1296: $ keysym = f$edit(key2d,"LOWERCASE") ! 1297: $ else ! 1298: $ if key2_h .eqs. "_T" ! 1299: $ then ! 1300: $ if key2_t .eqs. "_TYPE" ! 1301: $ then ! 1302: $ keysym = f$extract(0, key2_len - 5, key2) - "HAVE_" ! 1303: $ endif ! 1304: $ keysym = f$edit(keysym,"LOWERCASE") ! 1305: $ endif ! 1306: $ endif ! 1307: $! ! 1308: $! Check the DEC C RTL shared image first ! 1309: $!------------------------------------------------------ ! 1310: $ if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 1311: $ define/user sys$output nl: ! 1312: $ define/user sys$error nl: ! 1313: $ search/format=nonull/out='tfile1' 'decc_shr' 'keysym' ! 1314: $ if '$severity' .eq. 1 ! 1315: $ then ! 1316: $! ! 1317: $! Not documented, but from observation ! 1318: $!------------------------------------------------------ ! 1319: $ define/user sys$output nl: ! 1320: $ define/user sys$error nl: ! 1321: $ if arch_type .eq. 3 ! 1322: $ then ! 1323: $ keyterm = "''keysym'<SOH>" ! 1324: $ else ! 1325: $ if arch_type .eq. 2 ! 1326: $ then ! 1327: $ keyterm = "''keysym'<BS>" ! 1328: $ else ! 1329: $ keyterm = "''keysym'<STX>" ! 1330: $ endif ! 1331: $ endif ! 1332: $ search/out=nl: 'tfile1' - ! 1333: "$''keyterm'","$g''keyterm'","$__utc_''keyterm'",- ! 1334: "$__utctz_''keyterm'","$__bsd44_''keyterm'","$bsd_''keyterm'",- ! 1335: "$''keysym'decc$","$G''keysym'decc$","$GX''keyterm'" ! 1336: $ severity = '$severity' ! 1337: $! ! 1338: $! ! 1339: $! Of course the 64 bit stuff is different ! 1340: $!--------------------------------------------------------- ! 1341: $ if severity .ne. 1 .and. key64 ! 1342: $ then ! 1343: $ define/user sys$output nl: ! 1344: $ define/user sys$error nl: ! 1345: $ search/out=nl: 'tfile1' "$_''keyterm'" ! 1346: $! search/out 'tfile1' "$_''keyterm'" ! 1347: $ severity = '$severity' ! 1348: $ endif ! 1349: $! ! 1350: $! Unix compatibility routines ! 1351: $!--------------------------------------------- ! 1352: $ if severity .ne. 1 ! 1353: $ then ! 1354: $ define/user sys$output nl: ! 1355: $ define/user sys$error nl: ! 1356: $ search/out=nl: 'tfile1' - ! 1357: "$__unix_''keyterm'","$__vms_''keyterm'","$_posix_''keyterm'" ! 1358: $ severity = '$severity' ! 1359: $ endif ! 1360: $! ! 1361: $! Show the result of the search ! 1362: $!------------------------------------------------ ! 1363: $ if 'severity' .eq. 1 ! 1364: $ then ! 1365: $ if key64 then write tf "#ifndef __VAX" ! 1366: $ write tf "#ifndef ''key2'" ! 1367: $ write tf "#define ''key2' 1" ! 1368: $if p2 .nes. "" then write sys$output "''decc_shr' #define ''key2' 1" ! 1369: $ write tf "#endif" ! 1370: $ if key64 then write tf "#endif" ! 1371: $ goto cfgh_in_loop1 ! 1372: $ endif ! 1373: $ endif ! 1374: $ if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 1375: $! ! 1376: $! Check the DECC Header files next ! 1377: $!---------------------------------------------- ! 1378: $ define/user sys$output nl: ! 1379: $ define/user sys$error nl: ! 1380: $ search/out=nl: 'decc_rtldef' - ! 1381: "''keysym';", "''keysym'[", "struct ''keysym'"/exact ! 1382: $ severity = '$severity' ! 1383: $ if severity .eq. 1 ! 1384: $ then ! 1385: $ if key64 then write tf "#ifndef __VAX" ! 1386: $ write tf "#ifndef ''key2'" ! 1387: $ write tf "#define ''key2' 1" ! 1388: $if p2 .nes. "" then write sys$output "''decc_rtldef' #define ''key2' 1" ! 1389: $ write tf "#endif" ! 1390: $ if key64 then write tf "#endif" ! 1391: $ goto cfgh_in_loop1 ! 1392: $ endif ! 1393: $! ! 1394: $! Check kerberos ! 1395: $!-------------------------------------------- ! 1396: $ if f$search("SYS$SYSROOT:[kerberos]include.dir") .nes. "" ! 1397: $ then ! 1398: $ test_mit = "SYS$SYSROOT:[kerberos.include]gssapi_krb5.h" ! 1399: $ if (key2 .eqs. "HAVE_GSSAPI") ! 1400: $ then ! 1401: $ write tf "#ifndef ''key2'" ! 1402: $ write tf "#define ''key2' 1" ! 1403: $ write tf "#endif" ! 1404: $ goto cfgh_in_loop1 ! 1405: $ endif ! 1406: $! ! 1407: $! This is really do we have the newer MIT Kerberos ! 1408: $!---------------------------------------------------------------------- ! 1409: $ if (key2 .eqs. "HAVE_GSSMIT") ! 1410: $ then ! 1411: $ if f$search(test_mit) .nes. "" ! 1412: $ then ! 1413: $ write tf "#ifndef ''key2'" ! 1414: $ write tf "#define ''key2' 1" ! 1415: $ else ! 1416: $ write tf "#ifdef ''key2'" ! 1417: $ write tf "#undef ''key2'" ! 1418: $ endif ! 1419: $ write tf "#endif" ! 1420: $ goto cfgh_in_loop1 ! 1421: $ endif ! 1422: $! ! 1423: $! Older MIT looks like Heimdal ! 1424: $!------------------------------------------------ ! 1425: $ if (key2 .eqs. "HAVE_HEIMDAL") ! 1426: $ then ! 1427: $ if f$search(test_mit) .eqs. "" ! 1428: $ then ! 1429: $ write tf "#ifndef ''key2'" ! 1430: $ write tf "#define ''key2' 1" ! 1431: $ else ! 1432: $ write tf "#ifdef ''key2'" ! 1433: $ write tf "#undef ''key2'" ! 1434: $ endif ! 1435: $ write tf "#endif" ! 1436: $ goto cfgh_in_loop1 ! 1437: $ endif ! 1438: $ endif ! 1439: $! ! 1440: $ endif ! 1441: $ write tf "/* ", xline, " */" ! 1442: $ goto cfgh_in_loop1 ! 1443: $ endif ! 1444: $! ! 1445: $! ! 1446: $! Process SIZEOF directives found in SAMBA and others ! 1447: $!---------------------------------------------------------- ! 1448: $ if key2a .eqs. "SIZEOF" ! 1449: $ then ! 1450: $ if key2b .eqs. "INO" .and. key2_h .eqs. "_T" ! 1451: $ then ! 1452: $ write tf "#ifndef SIZEOF_INO_T" ! 1453: $ write tf "#if !__USING_STD_STAT ! 1454: $ write tf "#define SIZEOF_INO_T 6" ! 1455: $ write tf "#else ! 1456: $ write tf "#define SIZEOF_INO_T 8" ! 1457: $ write tf "#endif ! 1458: $ write tf "#endif" ! 1459: $ goto cfgh_in_loop1 ! 1460: $ endif ! 1461: $ if key2b .eqs. "INTMAX" .and. key2_h .eqs. "_T" ! 1462: $ then ! 1463: $ write tf "#ifndef SIZEOF_INTMAX_T" ! 1464: $ write tf "#ifdef __VAX" ! 1465: $ write tf "#define SIZEOF_INTMAX_T 4" ! 1466: $ write tf "#else" ! 1467: $ write tf "#define SIZEOF_INTMAX_T 8" ! 1468: $ write tf "#endif" ! 1469: $ write tf "#endif" ! 1470: $ goto cfgh_in_loop1 ! 1471: $ endif ! 1472: $ if key2b .eqs. "OFF" .and. key2_h .eqs. "_T" ! 1473: $ then ! 1474: $ write tf "#ifndef SIZEOF_OFF_T" ! 1475: $ write tf "#if __USE_OFF64_T" ! 1476: $ write tf "#define SIZEOF_OFF_T 8" ! 1477: $ write tf "#else" ! 1478: $ write tf "#define SIZEOF_OFF_T 4" ! 1479: $ write tf "#endif" ! 1480: $ write tf "#endif" ! 1481: $ goto cfgh_in_loop1 ! 1482: $ endif ! 1483: $ if key2b .eqs. "CHAR" .and. key2_h .eqs. "_P" ! 1484: $ then ! 1485: $ write tf "#ifndef SIZEOF_CHAR_P" ! 1486: $ write tf "#if __INITIAL_POINTER_SIZE == 64" ! 1487: $ write tf "#define SIZEOF_CHAR_P 8" ! 1488: $ write tf "#else" ! 1489: $ write tf "#define SIZEOF_CHAR_P 4" ! 1490: $ write tf "#endif" ! 1491: $ goto cfgh_in_loop1 ! 1492: $ endif ! 1493: $ if key2b .eqs. "VOIDP" ! 1494: $ then ! 1495: $ write tf "#ifndef SIZEOF_VOIDP" ! 1496: $ write tf "#if __INITIAL_POINTER_SIZE == 64" ! 1497: $ write tf "#define SIZEOF_VOIDP 8" ! 1498: $ write tf "#else" ! 1499: $ write tf "#define SIZEOF_VOIDP 4" ! 1500: $ write tf "#endif" ! 1501: $ write tf "#endif" ! 1502: $ goto cfgh_in_loop1 ! 1503: $ endif ! 1504: $ if key2b .eqs. "INT" ! 1505: $ then ! 1506: $ write tf "#ifndef SIZEOF_INT" ! 1507: $ write tf "#define SIZEOF_INT 4" ! 1508: $ write tf "#endif" ! 1509: $ goto cfgh_in_loop1 ! 1510: $ endif ! 1511: $ if key2b .eqs. "SIZE" .and. key2_h .eqs. "_T" ! 1512: $ then ! 1513: $ write tf "#ifndef SIZEOF_SIZE_T" ! 1514: $ write tf "#define SIZEOF_SIZE_T 4" ! 1515: $ write tf "#endif" ! 1516: $ goto cfgh_in_loop1 ! 1517: $ endif ! 1518: $ if key2b .eqs. "TIME" .and. key2_h .eqs. "_T" ! 1519: $ then ! 1520: $ write tf "#ifndef SIZEOF_TIME_T" ! 1521: $ write tf "#define SIZEOF_TIME_T 4" ! 1522: $ write tf "#endif" ! 1523: $ goto cfgh_in_loop1 ! 1524: $ endif ! 1525: $ if key2b .eqs. "DOUBLE" ! 1526: $ then ! 1527: $ write tf "#ifndef SIZEOF_DOUBLE" ! 1528: $ write tf "#define SIZEOF_DOUBLE 8" ! 1529: $ write tf "#endif" ! 1530: $ goto cfgh_in_loop1 ! 1531: $ endif ! 1532: $ if key2b .eqs. "LONG" ! 1533: $ then ! 1534: $ if key2c .eqs. "" ! 1535: $ then ! 1536: $ write tf "#ifndef SIZEOF_LONG" ! 1537: $ write tf "#define SIZEOF_LONG 4" ! 1538: $ write tf "#endif" ! 1539: $ else ! 1540: $ write tf "#ifndef SIZEOF_LONG_LONG" ! 1541: $ write tf "#ifndef __VAX" ! 1542: $ write tf "#define SIZEOF_LONG_LONG 8" ! 1543: $ write tf "#endif" ! 1544: $ write tf "#endif" ! 1545: $ endif ! 1546: $ goto cfgh_in_loop1 ! 1547: $ endif ! 1548: $ if key2b .eqs. "SHORT" ! 1549: $ then ! 1550: $ write tf "#ifndef SIZEOF_SHORT" ! 1551: $ write tf "#define SIZEOF_SHORT 2" ! 1552: $ write tf "#endif" ! 1553: $ goto cfgh_in_loop1 ! 1554: $ endif ! 1555: $ write tf "/* ", xline, " */" ! 1556: $ goto cfgh_in_loop1 ! 1557: $ endif ! 1558: $! ! 1559: $! Process NEED directives ! 1560: $!------------------------------- ! 1561: $ if key2a .eqs. "NEED" ! 1562: $ then ! 1563: $ if key2b .eqs. "STRINGS" .and. key2_h .eqs. "_H" ! 1564: $ then ! 1565: $ write tf "#ifndef NEED_STRINGS_H" ! 1566: $ write tf "#define NEED_STRINGS_H 1" ! 1567: $ write tf "#endif" ! 1568: $ goto cfgh_in_loop1 ! 1569: $ endif ! 1570: $ write tf "/* ", xline, " */" ! 1571: $ goto cfgh_in_loop1 ! 1572: $ endif ! 1573: $! ! 1574: $! Process GETHOSTNAME directives ! 1575: $!------------------------------------- ! 1576: $ if key2 .eqs. "GETHOSTNAME_TYPE_ARG2" ! 1577: $ then ! 1578: $ write tf "#ifndef ''key2'" ! 1579: $ write tf "#ifdef _DECC_V4_SOURCE" ! 1580: $ write tf "#define ''key2' int" ! 1581: $ write tf "#else" ! 1582: $ write tf "#define ''key2' size_t" ! 1583: $ write tf "#endif" ! 1584: $ write tf "#endif" ! 1585: $ goto cfgh_in_loop1 ! 1586: $ endif ! 1587: $! ! 1588: $! Process GETNAMEINFO directives ! 1589: $!------------------------------------- ! 1590: $ if key2a .eqs. "GETNAMEINFO" ! 1591: $ then ! 1592: $ if key2 .eqs. "GETNAMEINFO_QUAL_ARG1" ! 1593: $ then ! 1594: $ write tf "#ifndef ''key2'" ! 1595: $ write tf "#define ''key2' const" ! 1596: $ write tf "#endif" ! 1597: $ goto cfgh_in_loop1 ! 1598: $ endif ! 1599: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG1" ! 1600: $ then ! 1601: $ write tf "#ifndef ''key2'" ! 1602: $ write tf "#define ''key2' struct sockaddr *" ! 1603: $ write tf "#endif" ! 1604: $ goto cfgh_in_loop1 ! 1605: $ endif ! 1606: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG2" ! 1607: $ then ! 1608: $ write tf "#ifndef ''key2'" ! 1609: $ write tf "#define ''key2' size_t" ! 1610: $ write tf "#endif" ! 1611: $ goto cfgh_in_loop1 ! 1612: $ endif ! 1613: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG46" ! 1614: $ then ! 1615: $ write tf "#ifndef ''key2'" ! 1616: $ write tf "#define ''key2' size_t" ! 1617: $ write tf "#endif" ! 1618: $ goto cfgh_in_loop1 ! 1619: $ endif ! 1620: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG7" ! 1621: $ then ! 1622: $ write tf "#ifndef ''key2'" ! 1623: $ write tf "#define ''key2' int" ! 1624: $ write tf "#endif" ! 1625: $ goto cfgh_in_loop1 ! 1626: $ endif ! 1627: $ endif ! 1628: $! ! 1629: $! Process RECV directives ! 1630: $!------------------------------------- ! 1631: $ if key2a .eqs. "RECV" ! 1632: $ then ! 1633: $ if key2 .eqs. "RECV_TYPE_ARG1" ! 1634: $ then ! 1635: $ write tf "#ifndef ''key2'" ! 1636: $ write tf "#define ''key2' int" ! 1637: $ write tf "#endif" ! 1638: $ goto cfgh_in_loop1 ! 1639: $ endif ! 1640: $ if key2 .eqs. "RECV_TYPE_ARG2" ! 1641: $ then ! 1642: $ write tf "#ifndef ''key2'" ! 1643: $ write tf "#define ''key2' void *" ! 1644: $ write tf "#endif" ! 1645: $ goto cfgh_in_loop1 ! 1646: $ endif ! 1647: $ if key2 .eqs. "RECV_TYPE_ARG3" ! 1648: $ then ! 1649: $ write tf "#ifndef ''key2'" ! 1650: $ write tf "#define ''key2' size_t" ! 1651: $ write tf "#endif" ! 1652: $ goto cfgh_in_loop1 ! 1653: $ endif ! 1654: $ if key2 .eqs. "RECV_TYPE_ARG4" ! 1655: $ then ! 1656: $ write tf "#ifndef ''key2'" ! 1657: $ write tf "#define ''key2' int" ! 1658: $ write tf "#endif" ! 1659: $ goto cfgh_in_loop1 ! 1660: $ endif ! 1661: $ if key2 .eqs. "RECV_TYPE_RETV" ! 1662: $ then ! 1663: $ write tf "#ifndef ''key2'" ! 1664: $ write tf "#define ''key2' int" ! 1665: $ write tf "#endif" ! 1666: $ goto cfgh_in_loop1 ! 1667: $ endif ! 1668: $ endif ! 1669: $! ! 1670: $! ! 1671: $! Process RECVFROM directives ! 1672: $!------------------------------------- ! 1673: $ if key2a .eqs. "RECVFROM" ! 1674: $ then ! 1675: $ if key2 .eqs. "RECVFROM_QUAL_ARG5" ! 1676: $ then ! 1677: $ write tf "#ifndef ''key2'" ! 1678: $ write tf "#define ''key2'" ! 1679: $ write tf "#endif" ! 1680: $ goto cfgh_in_loop1 ! 1681: $ endif ! 1682: $ if key2 .eqs. "RECVFROM_TYPE_ARG1" ! 1683: $ then ! 1684: $ write tf "#ifndef ''key2'" ! 1685: $ write tf "#define ''key2' int" ! 1686: $ write tf "#endif" ! 1687: $ goto cfgh_in_loop1 ! 1688: $ endif ! 1689: $ if key2 .eqs. "RECVFROM_TYPE_ARG2" ! 1690: $ then ! 1691: $ write tf "#ifndef ''key2'" ! 1692: $ write tf "#define ''key2' void *" ! 1693: $ write tf "#endif" ! 1694: $ goto cfgh_in_loop1 ! 1695: $ endif ! 1696: $ if key2 .eqs. "RECVFROM_TYPE_ARG3" ! 1697: $ then ! 1698: $ write tf "#ifndef ''key2'" ! 1699: $ write tf "#define ''key2' size_t" ! 1700: $ write tf "#endif" ! 1701: $ goto cfgh_in_loop1 ! 1702: $ endif ! 1703: $ if key2 .eqs. "RECVFROM_TYPE_ARG4" ! 1704: $ then ! 1705: $ write tf "#ifndef ''key2'" ! 1706: $ write tf "#define ''key2' int" ! 1707: $ write tf "#endif" ! 1708: $ goto cfgh_in_loop1 ! 1709: $ endif ! 1710: $ if key2 .eqs. "RECVFROM_TYPE_ARG5" ! 1711: $ then ! 1712: $ write tf "#ifndef ''key2'" ! 1713: $ write tf "#define ''key2' struct sockaddr" ! 1714: $ write tf "#endif" ! 1715: $ goto cfgh_in_loop1 ! 1716: $ endif ! 1717: $ if key2 .eqs. "RECVFROM_TYPE_ARG6" ! 1718: $ then ! 1719: $ write tf "#ifndef ''key2'" ! 1720: $ write tf "#define ''key2' unsigned int" ! 1721: $ write tf "#endif" ! 1722: $ goto cfgh_in_loop1 ! 1723: $ endif ! 1724: $ if key2 .eqs. "RECVFROM_TYPE_RETV" ! 1725: $ then ! 1726: $ write tf "#ifndef ''key2'" ! 1727: $ write tf "#define ''key2' int" ! 1728: $ write tf "#endif" ! 1729: $ goto cfgh_in_loop1 ! 1730: $ endif ! 1731: $ endif ! 1732: $! ! 1733: $! Process SELECT directives ! 1734: $!------------------------------------- ! 1735: $ if key2a .eqs. "SELECT" ! 1736: $ then ! 1737: $ if key2 .eqs. "SELECT_QUAL_ARG5" ! 1738: $ then ! 1739: $ write tf "#ifndef ''key2'" ! 1740: $ write tf "#define ''key2' const" ! 1741: $ write tf "#endif" ! 1742: $ goto cfgh_in_loop1 ! 1743: $ endif ! 1744: $ if key2 .eqs. "SELECT_TYPE_ARG1" ! 1745: $ then ! 1746: $ write tf "#ifndef ''key2'" ! 1747: $ write tf "#define ''key2' int" ! 1748: $ write tf "#endif" ! 1749: $ goto cfgh_in_loop1 ! 1750: $ endif ! 1751: $ if key2 .eqs. "SELECT_TYPE_ARG2" ! 1752: $ then ! 1753: $ write tf "#ifndef ''key2'" ! 1754: $ write tf "#define ''key2' void *" ! 1755: $ write tf "#endif" ! 1756: $ goto cfgh_in_loop1 ! 1757: $ endif ! 1758: $ if key2 .eqs. "SELECT_TYPE_ARG234" ! 1759: $ then ! 1760: $ write tf "#ifndef ''key2'" ! 1761: $ write tf "#define ''key2' fd_set *" ! 1762: $ write tf "#endif" ! 1763: $ goto cfgh_in_loop1 ! 1764: $ endif ! 1765: $ if key2 .eqs. "SELECT_TYPE_ARG5" ! 1766: $ then ! 1767: $ write tf "#ifndef ''key2'" ! 1768: $ write tf "#define ''key2' struct timeval *" ! 1769: $ write tf "#endif" ! 1770: $ goto cfgh_in_loop1 ! 1771: $ endif ! 1772: $ if key2 .eqs. "SELECT_TYPE_RETV" ! 1773: $ then ! 1774: $ write tf "#ifndef ''key2'" ! 1775: $ write tf "#define ''key2' int" ! 1776: $ write tf "#endif" ! 1777: $ goto cfgh_in_loop1 ! 1778: $ endif ! 1779: $ endif ! 1780: $! ! 1781: $! Process SEND directives ! 1782: $!------------------------------------- ! 1783: $ if key2a .eqs. "SEND" ! 1784: $ then ! 1785: $ if key2 .eqs. "SEND_QUAL_ARG2" ! 1786: $ then ! 1787: $ write tf "#ifndef ''key2'" ! 1788: $ write tf "#define ''key2' const" ! 1789: $ write tf "#endif" ! 1790: $ goto cfgh_in_loop1 ! 1791: $ endif ! 1792: $ if key2 .eqs. "SEND_TYPE_ARG1" ! 1793: $ then ! 1794: $ write tf "#ifndef ''key2'" ! 1795: $ write tf "#define ''key2' int" ! 1796: $ write tf "#endif" ! 1797: $ goto cfgh_in_loop1 ! 1798: $ endif ! 1799: $ if key2 .eqs. "SEND_TYPE_ARG2" ! 1800: $ then ! 1801: $ write tf "#ifndef ''key2'" ! 1802: $ write tf "#define ''key2' void *" ! 1803: $ write tf "#endif" ! 1804: $ goto cfgh_in_loop1 ! 1805: $ endif ! 1806: $ if key2 .eqs. "SEND_TYPE_ARG3" ! 1807: $ then ! 1808: $ write tf "#ifndef ''key2'" ! 1809: $ write tf "#define ''key2' size_t" ! 1810: $ write tf "#endif" ! 1811: $ goto cfgh_in_loop1 ! 1812: $ endif ! 1813: $ if key2 .eqs. "SEND_TYPE_ARG4" ! 1814: $ then ! 1815: $ write tf "#ifndef ''key2'" ! 1816: $ write tf "#define ''key2' int" ! 1817: $ write tf "#endif" ! 1818: $ goto cfgh_in_loop1 ! 1819: $ endif ! 1820: $ if key2 .eqs. "SEND_TYPE_RETV" ! 1821: $ then ! 1822: $ write tf "#ifndef ''key2'" ! 1823: $ write tf "#define ''key2' int" ! 1824: $ write tf "#endif" ! 1825: $ goto cfgh_in_loop1 ! 1826: $ endif ! 1827: $ endif ! 1828: $! ! 1829: $! ! 1830: $! Process STATFS directives ! 1831: $!------------------------------- ! 1832: $! if key2a .eqs. "STATFS" ! 1833: $! then ! 1834: $! write tf "/* ", xline, " */" ! 1835: $! goto cfgh_in_loop1 ! 1836: $! endif ! 1837: $! ! 1838: $! Process inline directive ! 1839: $!------------------------------ ! 1840: $ if key2 .eqs. "inline" ! 1841: $ then ! 1842: $ write tf "#ifndef inline" ! 1843: $ write tf "#define inline __inline" ! 1844: $ write tf "#endif" ! 1845: $ goto cfgh_in_loop1 ! 1846: $ endif ! 1847: $! ! 1848: $! Process restrict directive ! 1849: $!-------------------------------- ! 1850: $ if key2 .eqs. "restrict" ! 1851: $ then ! 1852: $ write tf "#ifndef restrict" ! 1853: $ write tf "#define restrict __restrict" ! 1854: $ write tf "#endif" ! 1855: $ goto cfgh_in_loop1 ! 1856: $ endif ! 1857: $! ! 1858: $! Process RETSIGTYPE directive ! 1859: $!---------------------------------- ! 1860: $ if key2 .eqs. "RETSIGTYPE" ! 1861: $ then ! 1862: $ write tf "#ifndef RETSIGTYPE" ! 1863: $ write tf "#define RETSIGTYPE void" ! 1864: $ write tf "#endif" ! 1865: $ goto cfgh_in_loop1 ! 1866: $ endif ! 1867: $! ! 1868: $! Process STDC_HEADERS (SAMBA!) ! 1869: $!--------------------------- ! 1870: $ if key2 .eqs. "STDC_HEADERS" ! 1871: $ then ! 1872: $ write tf "#ifndef STDC_HEADERS" ! 1873: $ write tf "#define STDC_HEADERS 1" ! 1874: $ write tf "#endif" ! 1875: $ goto cfgh_in_loop1 ! 1876: $ endif ! 1877: $! ! 1878: $! Process PROTOTYPES directive ! 1879: $!------------------------------------- ! 1880: $ if key2 .eqs. "PROTOTYPES" ! 1881: $ then ! 1882: $ write tf "#ifndef PROTOTYPES" ! 1883: $ write tf "#define PROTOTYPES 1" ! 1884: $ write tf "#endif" ! 1885: $ goto cfgh_in_loop1 ! 1886: $ endif ! 1887: $! ! 1888: $! Special for SEEKDIR_RETURNS_VOID ! 1889: $!--------------------------------------- ! 1890: $ if key2 .eqs. "SEEKDIR_RETURNS_VOID" ! 1891: $ then ! 1892: $ write tf "#ifndef SEEKDIR_RETURNS_VOID" ! 1893: $ write tf "#define SEEKDIR_RETURNS_VOID 1" ! 1894: $ write tf "#endif" ! 1895: $ endif ! 1896: $! ! 1897: $! Unknown - See if CONFIGURE can give a clue for this ! 1898: $!---------------------------------------------------------- ! 1899: $ pflag = 0 ! 1900: $ set_flag = 0 ! 1901: $! gproj_name = proj_name - "_VMS" - "-VMS" ! 1902: $ if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 1903: $ define/user sys$output nl: ! 1904: $ define/user sys$error nl: ! 1905: $! if f$locate("FILE", key2) .lt. key2_len then pflag = 1 ! 1906: $! if f$locate("DIR", key2) .eq. key2_len - 3 then pflag = 1 ! 1907: $! if f$locate("PATH", key2) .eq. key2_len - 4 then pflag = 1 ! 1908: $! ! 1909: $ search/out='tfile1' 'configure_script' "''key2'="/exact ! 1910: $ search_sev = '$severity' ! 1911: $ if 'search_sev' .eq. 1 ! 1912: $ then ! 1913: $ open/read/err=unknown_cf_rd_error sf 'tfile1' ! 1914: $search_file_rd_loop: ! 1915: $ read/end=unknown_cf_rd_err sf line_in ! 1916: $ line_in = f$edit(line_in, "TRIM") ! 1917: $ skey1 = f$element(0,"=",line_in) ! 1918: $ if skey1 .eqs. key2 ! 1919: $ then ! 1920: $ skey2 = f$element(1,"=",line_in) ! 1921: $ skey2a = f$extract(0,2,skey2) ! 1922: $! ! 1923: $! ! 1924: $! We can not handle assignment to shell symbols. ! 1925: $! For now skip them. ! 1926: $!------------------------------------------------------------ ! 1927: $ if f$locate("$", skey2) .lt. f$length(skey2) ! 1928: $ then ! 1929: $ write tf "/* ", xline, " */" ! 1930: $ set_flag = 1 ! 1931: $ goto found_in_configure ! 1932: $ endif ! 1933: $! ! 1934: $! Keep these two cases separate to make it easier to add ! 1935: $! more future intelligence to this routine ! 1936: $!---------------------------------------------------------------------- ! 1937: $ if skey2a .eqs. """`" ! 1938: $ then ! 1939: $! if pflag .eq. 1 ! 1940: $! then ! 1941: $! write tf "#ifndef ''key2'" ! 1942: $! write tf "#define ",key2," """,gproj_name,"_",key2,"""" ! 1943: $! write tf "#endif" ! 1944: $! else ! 1945: $! Ignore this for now ! 1946: $!------------------------------------------ ! 1947: $ write tf "/* ", xline, " */" ! 1948: $! endif ! 1949: $ set_flag = 1 ! 1950: $ goto found_in_configure ! 1951: $ endif ! 1952: $ if skey2a .eqs. """$" ! 1953: $ then ! 1954: $! if pflag .eq. 1 ! 1955: $! then ! 1956: $! write tf "#ifndef ''key2'" ! 1957: $! write tf "#define ",key2," """,gproj_name,"_",key2,"""" ! 1958: $! write tf "#endif" ! 1959: $! else ! 1960: $! Ignore this for now ! 1961: $!------------------------------------------- ! 1962: $ write tf "/* ", xline, " */" ! 1963: $! endif ! 1964: $ set_flag = 1 ! 1965: $ goto found_in_configure ! 1966: $ endif ! 1967: $! ! 1968: $! Remove multiple layers of quotes if present ! 1969: $!---------------------------------------------------------- ! 1970: $ if f$extract(0, 1, skey2) .eqs. "'" ! 1971: $ then ! 1972: $ skey2 = skey2 - "'" - "'" - "'" - "'" ! 1973: $ endif ! 1974: $ if f$extract(0, 1, skey2) .eqs. """" ! 1975: $ then ! 1976: $ skey2 = skey2 - """" - """" - """" - """" ! 1977: $ endif ! 1978: $ write tf "#ifndef ''key2'" ! 1979: $ if skey2 .eqs. "" ! 1980: $ then ! 1981: $ write tf "#define ",key2 ! 1982: $ else ! 1983: $! Only quote non-numbers ! 1984: $!---------------------------------------- ! 1985: $ if f$string(skey2+0) .eqs. skey2 ! 1986: $ then ! 1987: $ write tf "#define ",key2," ",skey2 ! 1988: $ else ! 1989: $ write tf "#define ",key2," """,skey2,"""" ! 1990: $ endif ! 1991: $ endif ! 1992: $ write tf "#endif" ! 1993: $ set_flag = 1 ! 1994: $ else ! 1995: $ goto search_file_rd_loop ! 1996: $! if pflag .eq. 1 ! 1997: $! then ! 1998: $! write tf "#ifndef ''key2'" ! 1999: $! write tf "#define ",key2," """,gproj_name,"_",key2,"""" ! 2000: $! write tf "#endif" ! 2001: $! set_flag = 1 ! 2002: $! endif ! 2003: $ endif ! 2004: $found_in_configure: ! 2005: $unknown_cf_rd_err: ! 2006: $ if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" ! 2007: $ then ! 2008: $ close sf ! 2009: $ endif ! 2010: $ if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 2011: $ if set_flag .eq. 1 then goto cfgh_in_loop1 ! 2012: $ endif ! 2013: $ endif ! 2014: $! ! 2015: $! ! 2016: $! ! 2017: $! If it falls through everything else, comment it out ! 2018: $!----------------------------------------------------- ! 2019: $ write tf "/* ", xline, " */" ! 2020: $ goto cfgh_in_loop1 ! 2021: $cfgh_in_loop1_end: ! 2022: $close inf ! 2023: $! ! 2024: $! ! 2025: $! Write out the tail ! 2026: $!-------------------- ! 2027: $write_tail: ! 2028: $gosub write_config_h_tail ! 2029: $! ! 2030: $! Exit and clean up ! 2031: $!-------------------- ! 2032: $general_error: ! 2033: $status = '$status' ! 2034: $all_exit: ! 2035: $set noon ! 2036: $if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" then close sf ! 2037: $if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf ! 2038: $if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf ! 2039: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1 ! 2040: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2 ! 2041: $if f$trnlnm("tfcv","lnm$process",,"SUPERVISOR") .nes. "" then close tfcv ! 2042: $if f$type(tfile1) .eqs. "STRING" ! 2043: $then ! 2044: $ if f$search(tfile1) .nes. "" then delete 'tfile1';* ! 2045: $endif ! 2046: $if f$type(dchfile) .eqs. "STRING" ! 2047: $then ! 2048: $ if f$search(dchfile) .nes. "" then delete 'dchfile';* ! 2049: $endif ! 2050: $if f$type(starhfile) .eqs. "STRING" ! 2051: $then ! 2052: $ if f$search(starhfile) .nes. "" then delete 'starhfile';* ! 2053: $endif ! 2054: $if f$type(configure_script) .eqs. "STRING" ! 2055: $then ! 2056: $ if f$search(configure_script) .nes. "" then delete 'configure_script';* ! 2057: $endif ! 2058: $exit 'status' ! 2059: $! ! 2060: $! ! 2061: $control_y: ! 2062: $ status = ss_control_y ! 2063: $ goto all_exit ! 2064: $! ! 2065: $! ! 2066: $! ! 2067: $! Gosub to write a new config_vms.h ! 2068: $!----------------------------------- ! 2069: $write_config_vms: ! 2070: $outfile = "sys$disk:[]config_vms.h" ! 2071: $create 'outfile' ! 2072: $open/append tf 'outfile' ! 2073: $write tf "/* File: config_vms.h" ! 2074: $write tf "**" ! 2075: $write tf "** This file contains the manual edits needed for porting" ! 2076: $!write tf "** the ''proj_name' package to OpenVMS. ! 2077: $write tf "**" ! 2078: $write tf "** Edit this file as needed. The procedure that automatically" ! 2079: $write tf "** generated this header stub will not overwrite or make any" ! 2080: $write tf "** changes to this file." ! 2081: $write tf "**" ! 2082: $write tf - ! 2083: "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'" ! 2084: $write tf "**" ! 2085: $write tf - ! 2086: "**========================================================================*/" ! 2087: $write tf "" ! 2088: $close tf ! 2089: $return ! 2090: $! ! 2091: $! gosub to write out a documentation header for config.h ! 2092: $!---------------------------------------------------------------- ! 2093: $write_config_h_header: ! 2094: $outfile = "sys$disk:[]config.h" ! 2095: $create 'outfile' ! 2096: $open/append tf 'outfile' ! 2097: $write tf "#ifndef CONFIG_H" ! 2098: $write tf "#define CONFIG_H" ! 2099: $write tf "/* File: config.h" ! 2100: $write tf "**" ! 2101: $write tf - ! 2102: "** This file contains the options needed for porting " ! 2103: $write tf "** the project on a VMS system." ! 2104: $write tf "**" ! 2105: $write tf "** Try not to make any edits to this file, as it is" ! 2106: $write tf "** automagically generated." ! 2107: $write tf "**" ! 2108: $write tf "** Manual edits should be made to the config_vms.h file." ! 2109: $write tf "**" ! 2110: $write tf - ! 2111: "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'" ! 2112: $write tf "**" ! 2113: $write tf - ! 2114: "**========================================================================*/" ! 2115: $write tf "" ! 2116: $write tf "#if (__CRTL_VER >= 70200000) && !defined (__VAX)" ! 2117: $write tf "#define _LARGEFILE 1" ! 2118: $write tf "#endif" ! 2119: $write tf "" ! 2120: $write tf "#ifndef __VAX" ! 2121: $write tf "#ifdef __CRTL_VER" ! 2122: $write tf "#if __CRTL_VER >= 80200000" ! 2123: $write tf "#define _USE_STD_STAT 1" ! 2124: $write tf "#endif" ! 2125: $write tf "#endif" ! 2126: $write tf "#endif" ! 2127: $write tf "" ! 2128: $! ! 2129: $write tf " /* Allow compiler builtins */" ! 2130: $write tf "/*-------------------------*/" ! 2131: $write tf "#ifdef __DECC_VER" ! 2132: $write tf "#include <non_existant_dir:builtins.h>" ! 2133: $write tf "#endif" ! 2134: $! ! 2135: $write tf "" ! 2136: $return ! 2137: $! ! 2138: $! gosub to write out the tail for config.h and close it ! 2139: $!--------------------------------------------------------- ! 2140: $write_config_h_tail: ! 2141: $write tf "" ! 2142: $write tf " /* Include the hand customized settings */" ! 2143: $write tf "/*--------------------------------------*/" ! 2144: $write tf "#include ""config_vms.h""" ! 2145: $write tf "" ! 2146: $write tf "#endif /* CONFIG_H */" ! 2147: $close tf ! 2148: $return ! 2149: $!