Revert "Update to 7.40.1"
[platform/upstream/curl.git] / packages / vms / config_h.com
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, 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 key2 .eqs. "HAVE_ENGINE_LOAD_BUILTIN_ENGINES"
807 $       then
808 $           if f$search("''ssl_header_dir'engine.h") .nes. ""
809 $           then
810 $               search_key = key2 - "HAVE_"
811 $               define/user sys$output nl:
812 $               define/user sys$error nl:
813 $               search/output=nl: 'ssl_header_dir'engine.h 'search_key'
814 $               if '$severity' .eq. 1
815 $               then
816 $                   write tf "#ifndef ''key2'"
817 $                   write tf "#define ''key2' 1"
818 $                   write tf "#endif"
819 $               else
820 $                   write tf "/* #undef ''key2' */"
821 $               endif
822 $           else
823 $               write tf "/* #undef ''key2' */"
824 $           endif
825 $           goto cfgh_in_loop1
826 $       endif
827 $!
828 $       if key2 .eqs. "HAVE_SSL_GET_SHUTDOWN"
829 $       then
830 $           if f$search("''ssl_header_dir'ssl.h") .nes. ""
831 $           then
832 $               write tf "#ifndef ''key2'"
833 $               write tf "#define ''key2' 1"
834 $               write tf "#endif"
835 $           else
836 $               write tf "/* #undef ''key2' */"
837 $           endif
838 $           goto cfgh_in_loop1
839 $       endif
840 $!
841 $       if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
842 $       then
843 $           if (key2c .eqs. "EGD") .or. -
844                (key2c .eqs. "STATUS") .or. -
845                (key2c .eqs. "SCREEN")
846 $           then
847 $               if f$search("''ssl_header_dir'rand.h") .nes. ""
848 $               then
849 $                   write tf "#ifndef ''key2'"
850 $                   write tf "#define ''key2' 1"
851 $                   write tf "#endif"
852 $               else
853 $                   write tf "/* #undef ''key2' */"
854 $               endif
855 $           endif
856 $       endif
857 $!
858 $       if key2 .eqs. "STRCOLL_BROKEN"
859 $       then
860 $           write tf "#ifndef ''key2'"
861 $           write tf "#define ''key2' 1"
862 $           write tf "#endif"
863 $           goto cfgh_in_loop1
864 $       endif
865 $!
866 $       if key2 .eqs. "DUP_BROKEN"
867 $       then
868 $           write tf "#ifndef ''key2'"
869 $           write tf "#define ''key2' 1"
870 $           write tf "#endif"
871 $           goto cfgh_in_loop1
872 $       endif
873 $!
874 $!      This is for a test that getcwd(0,0) works.
875 $!      It does not on VMS.
876 $!--------------------------
877 $       if key2 .eqs. "GETCWD_BROKEN"
878 $       then
879 $           write sys$output ""
880 $           write sys$output -
881   "%CONFIG_H-I-NONPORT, ''key2' being tested for!"
882 $                  write sys$output -
883  "-CONFIG_H-I-GETCWD, GETCWD(0,0) does not work on VMS."
884 $                  write sys$output -
885  "-CONFIG_H-I-GETCWD2, Work around hack probably required."
886 $                  write sys$output -
887  "-CONFIG_H-I-REVIEW, Manual Code review required!"
888 $                   if update_config_vms
889 $                   then
890 $                       open/append tfcv sys$disk:[]config_vms.h
891 $                       write tfcv ""
892 $                       write tfcv -
893                 "/* Check config.h for use of ''key2' settings */"
894 $                       write tfcv ""
895 $                       close tfcv
896 $                   endif
897 $
898 $           goto cfgh_in_loop1
899 $       endif
900 $!
901 $       if (key2a .eqs. "HAVE") .or. (key2a .eqs. "STAT") .or. -
902            (key2 .eqs. "ENABLE_IPV6") .or. (key2b .eqs. "LDAP")
903 $       then
904 $!
905 $!          Process extra underscores
906 $!------------------------------------
907 $           if f$locate("HAVE___", key2) .lt. key2_len
908 $           then
909 $               key2b = "__" + key2d
910 $               key2d = ""
911 $               double_under = 1
912 $           else
913 $               if f$locate("HAVE__", key2) .lt. key2_len
914 $               then
915 $                   key2b = "_" + key2c
916 $                   key2c = ""
917 $                   double_under = 1
918 $               endif
919 $           endif
920 $!
921 $           if (key2_h .eqs. "_H") .or. (key2 .eqs. "ENABLE_IPV6") .or. -
922                (key2b .eqs. "LDAP")
923 $           then
924 $!
925 $!              Looking for a header file
926 $!---------------------------------------
927 $               headf = key2b
928 $               if key2c .nes. "" then headf = headf + "_" + key2c
929 $               if key2d .nes. "" then headf = headf + "_" + key2d
930 $!
931 $!                 (key2b .eqs. "READLINE")
932 $!
933 $!              Some special parsing
934 $!------------------------------------------
935 $               if (key2b .eqs. "SYS") .or. (key2b .eqs. "ARPA") .or. -
936                    (key2b .eqs. "NET") .or. (key2b .eqs. "NETINET")
937 $               then
938 $                   if key2c .nes. ""
939 $                   then
940 $                       headf = key2c
941 $                       if key2d .nes. "" then headf = key2c + "_" + key2d
942 $                   endif
943 $               endif
944 $!
945 $!              And of course what's life with out some special cases
946 $!--------------------------------------------------------------------
947 $               if key2 .eqs. "ENABLE_IPV6"
948 $               then
949 $                   headf = "in6"
950 $               endif
951 $!
952 $               if key2b .eqs. "LDAP"
953 $               then
954 $                   if (key2 .eqs. "HAVE_LDAP_SSL") .or. -
955                        (key2 .eqs. "HAVE_LDAP_URL_PARSE")
956 $                   then
957 $                       headf = "ldap"
958 $                   endif
959 $               endif
960 $!
961 $!
962 $               if key2b .eqs. "FILE"
963 $               then
964 $                  write sys$output ""
965 $                  write sys$output -
966   "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
967 $                  write sys$output -
968  "-CONFIG_H-I-FILE_OLD, file.h will not be configured as is obsolete!"
969 $                  write sys$output -
970  "-CONFIG_H_I-FCNTL_NEW, "Expecting fcntl.h to be configured instead!"
971 $                  write sys$output -
972  "-CONFIG_H_I-FCNTL_CHK, "Unable to verify at this time!"
973 $                  write sys$output -
974  "-CONFIG_H-I-REVIEW, Manual Code review required!"
975 $!
976 $                   if update_config_vms
977 $                   then
978 $                       open/append tfcv sys$disk:[]config_vms.h
979 $                       write tfcv ""
980 $                       write tfcv -
981                 "/* Check config.h for use of fcntl.h instead of file.h */"
982 $                       write tfcv ""
983 $                       close tfcv
984 $                   endif
985 $               endif
986 $!
987 $!              Now look it up in the DEC C RTL
988 $!---------------------------------------------
989 $               define/user sys$output nl:
990 $               define/user sys$error nl:
991 $               search/output=nl: 'dchfile' |'headf'|/exact
992 $               if '$severity' .eq. 1
993 $               then
994 $                   if key64 then write tf "#ifndef __VAX"
995 $                   write tf "#ifndef ''key2'"
996 $                   write tf "#define ''key2' 1"
997 $if p2 .nes. "" then write sys$output "''dchfile' - #define ''key2' 1"
998 $                   write tf "#endif"
999 $                   if key64 then write tf "#endif"
1000 $set nover
1001 $                   goto cfgh_in_loop1
1002 $               endif
1003 $!
1004 $!
1005 $!              Now look it up in the DEC C STARLET_C
1006 $!---------------------------------------------
1007 $               define/user sys$output nl:
1008 $               define/user sys$error nl:
1009 $               search/output=nl: 'starhfile' |'headf'|/exact
1010 $               if '$severity' .eq. 1
1011 $               then
1012 $                   if key64 then write tf "#ifndef __VAX"
1013 $                   write tf "#ifndef ''key2'"
1014 $                   write tf "#define ''key2' 1"
1015 $if p2 .nes. "" then write sys$output "''starfile' - #define ''key2' 1"
1016 $                   write tf "#endif"
1017 $                   if key64 then write tf "#endif"
1018 $set nover
1019 $                   goto cfgh_in_loop1
1020 $               endif
1021 $!
1022 $!              Now look for OPENSSL headers
1023 $!---------------------------------------------------------
1024 $               if key2b .eqs. "OPENSSL"
1025 $               then
1026 $                   headf = headf - "OPENSSL_"
1027 $                   header = f$search("''ssl_header_dir'''headf'.h")
1028 $                   if header .nes. ""
1029 $                   then
1030 $                       write tf "#ifndef ''key2'"
1031 $                       write tf "#define ''key2' 1"
1032 $                       write tf "#endif"
1033 $set nover
1034 $                       goto cfgh_in_loop1
1035 $                   endif
1036 $               endif
1037 $!
1038 $!              Now look for Kerberos
1039 $!------------------------------------------------------------
1040 $               if key2b .eqs. "GSSAPI"
1041 $               then
1042 $                   header_dir = "sys$sysroot:[kerberos.include]"
1043 $                   headf = headf - "GSSAPI_"
1044 $                   header = f$search("''header_dir'''headf'.h")
1045 $                   if header .nes. ""
1046 $                   then
1047 $                       write tf "#ifndef ''key2'"
1048 $                       write tf "#define ''key2' 1"
1049 $                       write tf "#endif"
1050 $set nover
1051 $                       goto cfgh_in_loop1
1052 $                   endif
1053 $               endif
1054 $!
1055 $set nover
1056 $           else
1057 $!
1058 $!              Looking for a routine or a symbol
1059 $!------------------------------------------------
1060 $               if key2c .eqs. "MACRO"
1061 $               then
1062 $                   if (key2b .eqs. "FILE") .or. (key2b .eqs. "DATE") -
1063                         .or. (key2b .eqs. "LINE") .or. (key2b .eqs. "TIME")
1064 $                   then
1065 $                       write tf "#ifndef HAVE_''key2b'"
1066 $                       write tf "#define HAVE_''key2b' 1"
1067 $                       write tf "#endif"
1068 $                   endif
1069 $                   goto cfgh_in_loop1
1070 $               endif
1071 $!
1072 $!              Special false tests
1073 $!-------------------------------------
1074 $               if double_under
1075 $               then
1076 $                   if key2b .eqs. "_FCNTL" .or. key2b .eqs. "__FCNTL"
1077 $                   then
1078 $                       write tf "/* #undef HAVE_''key2b' */"
1079 $                       goto cfgh_in_loop1
1080 $                   endif
1081 $!
1082 $                   if key2b .eqs. "_STAT" .or. key2b .eqs. "__STAT"
1083 $                   then
1084 $                       write tf "/* #undef HAVE_''key2b' */"
1085 $                       goto cfgh_in_loop1
1086 $                   endif
1087 $!
1088 $                   if key2b .eqs. "_READ" .or. key2b .eqs. "__READ"
1089 $                   then
1090 $                       write tf "/* #undef HAVE_''key2b' */"
1091 $                       goto cfgh_in_loop1
1092 $                   endif
1093 $               endif
1094 $!
1095 $               keysym = key2b
1096 $               if key2c .nes. "" then keysym = keysym + "_" + key2c
1097 $               if key2d .nes. "" then keysym = keysym + "_" + key2d
1098 $               if key2e .nes. "" then keysym = keysym + "_" + key2e
1099 $!
1100 $!
1101 $!              Stat structure members
1102 $!-------------------------------------
1103 $               if key2b .eqs. "STRUCT"
1104 $               then
1105 $                   if key2c .eqs. "STAT" .and (key2d .nes. "")
1106 $                   then
1107 $                       key2b = key2b + "_" + key2c + "_" + key2d
1108 $                       key2c = key2e
1109 $                       key2d = ""
1110 $                       key2e = ""
1111 $                   endif
1112 $               endif
1113 $               if (key2b .eqs. "ST") .or. (key2b .eqs. "STRUCT_STAT_ST")
1114 $               then
1115 $                   keysym = "ST" + "_" + key2c
1116 $                   keysym = f$edit(keysym,"LOWERCASE")
1117 $               endif
1118 $               if key2a .eqs. "STAT"
1119 $               then
1120 $                   if (f$locate("STATVFS", key2b) .eq. 0) .and. key2c .eqs. ""
1121 $                   then
1122 $                       keysym = f$edit(key2b, "LOWERCASE")
1123 $                   endif
1124 $!$                 if (key2b .eqs. "STATVFS" .or. key2b .eqs. "STATFS2" -
1125 $!                      .or. key2b .eqs. "STATFS3") .and. key2c .nes. ""
1126 $!
1127 $                   if (key2b .eqs. "STATVFS") .and. key2c .nes. ""
1128 $                   then
1129 $!                      Should really verify that the structure
1130 $!                      named by key2b actually exists first.
1131 $!------------------------------------------------------------
1132 $!
1133 $!                      Statvfs structure members
1134 $!-------------------------------------------------
1135 $                       keysym = "f_" + f$edit(key2c,"LOWERCASE")
1136 $                   endif
1137 $               endif
1138 $!
1139 $!              UTMPX structure members
1140 $!--------------------------------------
1141 $               if key2b .eqs. "UT" .and. key2c .eqs. "UT"
1142 $               then
1143 $                   keysym = "ut_" + f$edit(key2d,"LOWERCASE")
1144 $               endif
1145 $!
1146 $               if f$locate("MMAP",key2) .lt. key2_len
1147 $               then
1148 $                  write sys$output ""
1149 $                  write sys$output -
1150   "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1151 $                  write sys$output -
1152  "-CONFIG_H-I-MMAP, MMAP operations only work on STREAM and BINARY files!"
1153 $                  write sys$output -
1154  "-CONFIG_H-I-REVIEW, Manual Code review required!"
1155 $                   if update_config_vms
1156 $                   then
1157 $                       open/append tfcv sys$disk:[]config_vms.h
1158 $                       write tfcv ""
1159 $                       write tfcv -
1160                 "/* Check config.h for use of ''key2' settings */"
1161 $                       write tfcv ""
1162 $                       close tfcv
1163 $                   endif
1164 $               endif
1165 $!
1166 $!
1167 $               if keysym .eqs. "CRYPT"
1168 $               then
1169 $                  write sys$output ""
1170 $                  write sys$output -
1171   "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1172 $                  write sys$output -
1173  "-CONFIG_H-I-CRYPT, CRYPT operations on the VMS SYSUAF may not work!"
1174 $                  write sys$output -
1175  "-CONFIG_H-I-REVIEW, Manual Code review required!"
1176 $                   if update_config_vms
1177 $                   then
1178 $                       open/append tfcv sys$disk:[]config_vms.h
1179 $                       write tfcv ""
1180 $                       write tfcv -
1181                 "/* Check config.h for use of ''keysym' */"
1182 $                       write tfcv ""
1183 $                       close tfcv
1184 $                   endif
1185 $               endif
1186 $!
1187 $!
1188 $               if keysym .eqs. "EXECL"
1189 $               then
1190 $                  write sys$output ""
1191 $                  write sys$output -
1192   "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1193 $                  write sys$output -
1194  "-CONFIG_H-I-EXCEL, EXECL configured, Will probably not work."
1195 $                  write sys$output -
1196  "-CONFIG_H-I-REVIEW, Manual Code review required!"
1197 $                   if update_config_vms
1198 $                   then
1199 $                       open/append tfcv sys$disk:[]config_vms.h
1200 $                       write tfcv ""
1201 $                       write tfcv -
1202                 "/* Check config.h for use of ''keysym' */"
1203 $                       write tfcv ""
1204 $                       close tfcv
1205 $                   endif
1206 $               endif
1207 $!
1208 $!
1209 $!              Process if cpp supports ANSI-C stringizing '#' operator
1210 $!-----------------------------------------------------------------------
1211 $               if keysym .eqs. "STRINGIZE"
1212 $               then
1213 $                   write tf "#ifndef HAVE_STRINGIZE"
1214 $                   write tf "#define HAVE_STRINGSIZE 1"
1215 $                   write tf "#endif"
1216 $                   goto cfgh_in_loop1
1217 $               endif
1218 $!
1219 $               if keysym .eqs. "VOLATILE"
1220 $               then
1221 $                   write tf "#ifndef HAVE_VOLATILE"
1222 $                   write tf "#define HAVE_VOLATILE 1"
1223 $                   write tf "#endif"
1224 $                   goto cfgh_in_loop1
1225 $               endif
1226 $!
1227 $               if keysym .eqs. "ALLOCA"
1228 $               then
1229 $                   write tf "#ifndef HAVE_ALLOCA"
1230 $                   write tf "#define HAVE_ALLOCA 1"
1231 $                   write tf "#endif"
1232 $                   goto cfgh_in_loop1
1233 $               endif
1234 $!
1235 $               if keysym .eqs. "ERRNO_DECL"
1236 $               then
1237 $                   write tf "#ifndef HAVE_ERRNO_DECL"
1238 $                   write tf "#define HAVE_ERRNO_DECL 1"
1239 $                   write tf "#endif"
1240 $                   goto cfgh_in_loop1
1241 $               endif
1242 $!
1243 $               if keysym .eqs. "LONGLONG"
1244 $               then
1245 $                   write tf "#ifndef __VAX"
1246 $                   write tf "#pragma message disable longlongtype"
1247 $                   write tf "#ifndef HAVE_LONGLONG"
1248 $                   write tf "#define HAVE_LONGLONG 1"
1249 $                   write tf "#endif"
1250 $                   write tf "#endif"
1251 $                   goto cfgh_in_loop1
1252 $               endif
1253 $!
1254 $!              May need to test compiler version
1255 $!-----------------------------------------------
1256 $               if keysym .eqs. "LONG_LONG"
1257 $               then
1258 $                   write tf "#ifndef __VAX"
1259 $                   write tf "#pragma message disable longlongtype"
1260 $                   write tf "#ifndef HAVE_LONG_LONG"
1261 $                   write tf "#define HAVE_LONG_LONG 1"
1262 $                   write tf "#endif"
1263 $                   write tf "#endif"
1264 $                   goto cfgh_in_loop1
1265 $               endif
1266 $!
1267 $!              May need to test compiler version
1268 $!-----------------------------------------------
1269 $               if keysym .eqs. "UNSIGNED_LONG_LONG"
1270 $               then
1271 $                   write tf "#ifndef __VAX"
1272 $                   write tf "#pragma message disable longlongtype"
1273 $                   write tf "#ifndef HAVE_UNSIGNED_LONG_LONG"
1274 $                   write tf "#define HAVE_UNSIGNED_LONG_LONG 1"
1275 $                   write tf "#endif"
1276 $                   write tf "#endif"
1277 $                   goto cfgh_in_loop1
1278 $               endif
1279 $!
1280 $!              May need to test compiler version
1281 $!-----------------------------------------------
1282 $               if keysym .eqs. "UNSIGNED_LONG_LONG_INT"
1283 $               then
1284 $                   write tf "#ifndef __VAX"
1285 $                   write tf "#pragma message disable longlongtype"
1286 $                   write tf "#ifndef HAVE_UNSIGNED_LONG_LONG_INT"
1287 $                   write tf "#define HAVE_UNSIGNED_LONG_LONG_INT 1"
1288 $                   write tf "#endif"
1289 $                   write tf "#endif"
1290 $                   goto cfgh_in_loop1
1291 $               endif
1292 $!
1293 $!              May need to test compiler version
1294 $!-----------------------------------------------
1295 $               if keysym .eqs. "LONG_DOUBLE"
1296 $               then
1297 $                   write tf "#ifndef __VAX"
1298 $                   write tf "#pragma message disable longlongtype"
1299 $                   write tf "#ifndef HAVE_LONG_DOUBLE"
1300 $                   write tf "#define HAVE_LONG_DOUBLE 1"
1301 $                   write tf "#endif"
1302 $                   write tf "#endif"
1303 $                   goto cfgh_in_loop1
1304 $               endif
1305 $!
1306 $               if keysym .eqs. "FCNTL_LOCK"
1307 $               then
1308 $                   write sys$output -
1309   "%CONFIG_H-I-NONPORT, ''key2' being asked for!
1310 $                  write sys$output -
1311  "-CONFIG_H-I-REVIEW, Manual Code review required!"
1312 $                   goto cfgh_in_loop1
1313 $               endif
1314 $!
1315 $!
1316 $!              These libraries are provided by the DEC C RTL
1317 $!-------------------------------------------------------------
1318 $               if keysym .eqs. "LIBINET" .or. keysym .eqs. "LIBSOCKET"
1319 $               then
1320 $                   write tf "#ifndef HAVE_''keysym'"
1321 $                   write tf "#define HAVE_''keysym' 1"
1322 $if p2 .nes. "" then write sys$output "''decc_shr' #define ''keysym' 1"
1323 $                   write tf "#endif
1324 $                   goto cfgh_in_loop1
1325 $               endif
1326 $!
1327 $               if keysym .eqs. "HERRNO" then keysym = "h_errno"
1328 $               if keysym .eqs. "UTIMBUF" then keysym = "utimbuf"
1329 $               if key2c .eqs. "STRUCT"
1330 $               then
1331 $                   keysym = f$edit(key2d,"LOWERCASE")
1332 $               else
1333 $                   if key2_h .eqs. "_T"
1334 $                   then
1335 $                       if key2_t .eqs. "_TYPE"
1336 $                       then
1337 $                           keysym = f$extract(0, key2_len - 5, key2) - "HAVE_"
1338 $                       endif
1339 $                       keysym = f$edit(keysym,"LOWERCASE")
1340 $                   endif
1341 $               endif
1342 $!
1343 $!              Check the DEC C RTL shared image first
1344 $!------------------------------------------------------
1345 $               if f$search(tfile1) .nes. "" then delete 'tfile1';*
1346 $               define/user sys$output nl:
1347 $               define/user sys$error nl:
1348 $               search/format=nonull/out='tfile1' 'decc_shr' 'keysym'
1349 $               if '$severity' .eq. 1
1350 $               then
1351 $!
1352 $!                  Not documented, but from observation
1353 $!------------------------------------------------------
1354 $                   define/user sys$output nl:
1355 $                   define/user sys$error nl:
1356 $                   if arch_type .eq. 3
1357 $                   then
1358 $                       keyterm = "''keysym'<SOH>"
1359 $                   else
1360 $                       if arch_type .eq. 2
1361 $                       then
1362 $                           keyterm = "''keysym'<BS>"
1363 $                       else
1364 $                           keyterm = "''keysym'<STX>"
1365 $                       endif
1366 $                   endif
1367 $                   search/out=nl: 'tfile1' -
1368    "$''keyterm'","$g''keyterm'","$__utc_''keyterm'",-
1369    "$__utctz_''keyterm'","$__bsd44_''keyterm'","$bsd_''keyterm'",-
1370    "$''keysym'decc$","$G''keysym'decc$","$GX''keyterm'"
1371 $                   severity = '$severity'
1372 $!
1373 $!
1374 $!                  Of course the 64 bit stuff is different
1375 $!---------------------------------------------------------
1376 $                   if severity .ne. 1 .and. key64
1377 $                   then
1378 $                       define/user sys$output nl:
1379 $                       define/user sys$error nl:
1380 $                       search/out=nl: 'tfile1' "$_''keyterm'"
1381 $!                      search/out 'tfile1' "$_''keyterm'"
1382 $                       severity = '$severity'
1383 $                   endif
1384 $!
1385 $!                  UNIX compatability routines
1386 $!---------------------------------------------
1387 $                   if severity .ne. 1
1388 $                   then
1389 $                       define/user sys$output nl:
1390 $                       define/user sys$error nl:
1391 $                       search/out=nl: 'tfile1' -
1392     "$__unix_''keyterm'","$__vms_''keyterm'","$_posix_''keyterm'"
1393 $                       severity = '$severity'
1394 $                   endif
1395 $!
1396 $!                  Show the result of the search
1397 $!------------------------------------------------
1398 $                   if 'severity' .eq. 1
1399 $                   then
1400 $                       if key64 then write tf "#ifndef __VAX"
1401 $                       write tf "#ifndef ''key2'"
1402 $                       write tf "#define ''key2' 1"
1403 $if p2 .nes. "" then write sys$output "''decc_shr' #define ''key2' 1"
1404 $                       write tf "#endif"
1405 $                       if key64 then write tf "#endif"
1406 $                       goto cfgh_in_loop1
1407 $                   endif
1408 $               endif
1409 $               if f$search(tfile1) .nes. "" then delete 'tfile1';*
1410 $!
1411 $!              Check the DECC Header files next
1412 $!----------------------------------------------
1413 $               define/user sys$output nl:
1414 $               define/user sys$error nl:
1415 $               search/out=nl: 'decc_rtldef' -
1416                     "''keysym';", "''keysym'[", "struct ''keysym'"/exact
1417 $               severity = '$severity'
1418 $               if severity .eq. 1
1419 $               then
1420 $                   if key64 then write tf "#ifndef __VAX"
1421 $                   write tf "#ifndef ''key2'"
1422 $                   write tf "#define ''key2' 1"
1423 $if p2 .nes. "" then write sys$output "''decc_rtldef' #define ''key2' 1"
1424 $                   write tf "#endif"
1425 $                   if key64 then write tf "#endif"
1426 $                   goto cfgh_in_loop1
1427 $               endif
1428 $!
1429 $!              Check kerberos
1430 $!--------------------------------------------
1431 $               if f$search("SYS$SYSROOT:[kerberos]include.dir") .nes. ""
1432 $               then
1433 $                   test_mit = "SYS$SYSROOT:[kerberos.include]gssapi_krb5.h"
1434 $                   if (key2 .eqs. "HAVE_GSSAPI")
1435 $                   then
1436 $                       write tf "#ifndef ''key2'"
1437 $                       write tf "#define ''key2' 1"
1438 $                       write tf "#endif"
1439 $                       goto cfgh_in_loop1
1440 $                   endif
1441 $!
1442 $!                  This is really do we have the newer MIT Kerberos
1443 $!----------------------------------------------------------------------
1444 $                   if (key2 .eqs. "HAVE_GSSMIT")
1445 $                   then
1446 $                       if f$search(test_mit) .nes. ""
1447 $                       then
1448 $                           write tf "#ifndef ''key2'"
1449 $                           write tf "#define ''key2' 1"
1450 $                       else
1451 $                           write tf "#ifdef ''key2'"
1452 $                           write tf "#undef ''key2'"
1453 $                       endif
1454 $                       write tf "#endif"
1455 $                       goto cfgh_in_loop1
1456 $                   endif
1457 $!
1458 $!                  Older MIT looks like Heimdal
1459 $!------------------------------------------------
1460 $                   if (key2 .eqs. "HAVE_HEIMDAL")
1461 $                   then
1462 $                       if f$search(test_mit) .eqs. ""
1463 $                       then
1464 $                           write tf "#ifndef ''key2'"
1465 $                           write tf "#define ''key2' 1"
1466 $                       else
1467 $                           write tf "#ifdef ''key2'"
1468 $                           write tf "#undef ''key2'"
1469 $                       endif
1470 $                       write tf "#endif"
1471 $                       goto cfgh_in_loop1
1472 $                   endif
1473 $               endif
1474 $!
1475 $           endif
1476 $           write tf "/* ", xline, " */"
1477 $           goto cfgh_in_loop1
1478 $       endif
1479 $!
1480 $!
1481 $!      Process SIZEOF directives found in SAMBA and others
1482 $!----------------------------------------------------------
1483 $       if key2a .eqs. "SIZEOF"
1484 $       then
1485 $           if key2b .eqs. "INO" .and. key2_h .eqs. "_T"
1486 $           then
1487 $               write tf "#ifndef SIZEOF_INO_T"
1488 $               write tf "#if !__USING_STD_STAT
1489 $               write tf "#define SIZEOF_INO_T 6"
1490 $               write tf "#else
1491 $               write tf "#define SIZEOF_INO_T 8"
1492 $               write tf "#endif
1493 $               write tf "#endif"
1494 $               goto cfgh_in_loop1
1495 $           endif
1496 $           if key2b .eqs. "INTMAX" .and. key2_h .eqs. "_T"
1497 $           then
1498 $               write tf "#ifndef SIZEOF_INTMAX_T"
1499 $               write tf "#ifdef __VAX"
1500 $               write tf "#define SIZEOF_INTMAX_T 4"
1501 $               write tf "#else"
1502 $               write tf "#define SIZEOF_INTMAX_T 8"
1503 $               write tf "#endif"
1504 $               write tf "#endif"
1505 $               goto cfgh_in_loop1
1506 $           endif
1507 $           if key2b .eqs. "OFF" .and. key2_h .eqs. "_T"
1508 $           then
1509 $               write tf "#ifndef SIZEOF_OFF_T"
1510 $               write tf "#if __USE_OFF64_T"
1511 $               write tf "#define SIZEOF_OFF_T 8"
1512 $               write tf "#else"
1513 $               write tf "#define SIZEOF_OFF_T 4"
1514 $               write tf "#endif"
1515 $               write tf "#endif"
1516 $               goto cfgh_in_loop1
1517 $           endif
1518 $           if key2b .eqs. "CHAR" .and. key2_h .eqs. "_P"
1519 $           then
1520 $               write tf "#ifndef SIZEOF_CHAR_P"
1521 $               write tf "#if __INITIAL_POINTER_SIZE == 64"
1522 $               write tf "#define SIZEOF_CHAR_P 8"
1523 $               write tf "#else"
1524 $               write tf "#define SIZEOF_CHAR_P 4"
1525 $               write tf "#endif"
1526 $               goto cfgh_in_loop1
1527 $           endif
1528 $           if key2b .eqs. "VOIDP"
1529 $           then
1530 $               write tf "#ifndef SIZEOF_VOIDP"
1531 $               write tf "#if __INITIAL_POINTER_SIZE == 64"
1532 $               write tf "#define SIZEOF_VOIDP 8"
1533 $               write tf "#else"
1534 $               write tf "#define SIZEOF_VOIDP 4"
1535 $               write tf "#endif"
1536 $               write tf "#endif"
1537 $               goto cfgh_in_loop1
1538 $           endif
1539 $           if key2b .eqs. "INT"
1540 $           then
1541 $               write tf "#ifndef SIZEOF_INT"
1542 $               write tf "#define SIZEOF_INT 4"
1543 $               write tf "#endif"
1544 $               goto cfgh_in_loop1
1545 $           endif
1546 $           if key2b .eqs. "SIZE" .and. key2_h .eqs. "_T"
1547 $           then
1548 $               write tf "#ifndef SIZEOF_SIZE_T"
1549 $               write tf "#define SIZEOF_SIZE_T 4"
1550 $               write tf "#endif"
1551 $               goto cfgh_in_loop1
1552 $           endif
1553 $           if key2b .eqs. "TIME" .and. key2_h .eqs. "_T"
1554 $           then
1555 $               write tf "#ifndef SIZEOF_TIME_T"
1556 $               write tf "#define SIZEOF_TIME_T 4"
1557 $               write tf "#endif"
1558 $               goto cfgh_in_loop1
1559 $           endif
1560 $           if key2b .eqs. "DOUBLE"
1561 $           then
1562 $               write tf "#ifndef SIZEOF_DOUBLE"
1563 $               write tf "#define SIZEOF_DOUBLE 8"
1564 $               write tf "#endif"
1565 $               goto cfgh_in_loop1
1566 $           endif
1567 $           if key2b .eqs. "LONG"
1568 $           then
1569 $               if key2c .eqs. ""
1570 $               then
1571 $                   write tf "#ifndef SIZEOF_LONG"
1572 $                   write tf "#define SIZEOF_LONG 4"
1573 $                   write tf "#endif"
1574 $               else
1575 $                   write tf "#ifndef SIZEOF_LONG_LONG"
1576 $                   write tf "#ifndef __VAX"
1577 $                   write tf "#define SIZEOF_LONG_LONG 8"
1578 $                   write tf "#endif"
1579 $                   write tf "#endif"
1580 $               endif
1581 $               goto cfgh_in_loop1
1582 $           endif
1583 $           if key2b .eqs. "SHORT"
1584 $           then
1585 $               write tf "#ifndef SIZEOF_SHORT"
1586 $               write tf "#define SIZEOF_SHORT 2"
1587 $               write tf "#endif"
1588 $               goto cfgh_in_loop1
1589 $           endif
1590 $           write tf "/* ", xline, " */"
1591 $           goto cfgh_in_loop1
1592 $       endif
1593 $!
1594 $!      Process NEED directives
1595 $!-------------------------------
1596 $       if key2a .eqs. "NEED"
1597 $       then
1598 $           if key2b .eqs. "STRINGS" .and. key2_h .eqs. "_H"
1599 $           then
1600 $               write tf "#ifndef NEED_STRINGS_H"
1601 $               write tf "#define NEED_STRINGS_H 1"
1602 $               write tf "#endif"
1603 $               goto cfgh_in_loop1
1604 $           endif
1605 $           write tf "/* ", xline, " */"
1606 $           goto cfgh_in_loop1
1607 $       endif
1608 $!
1609 $!      Process GETHOSTNAME directives
1610 $!-------------------------------------
1611 $       if key2 .eqs. "GETHOSTNAME_TYPE_ARG2"
1612 $       then
1613 $           write tf "#ifndef ''key2'"
1614 $           write tf "#ifdef _DECC_V4_SOURCE"
1615 $           write tf "#define ''key2' int"
1616 $           write tf "#else"
1617 $           write tf "#define ''key2' size_t"
1618 $           write tf "#endif"
1619 $           write tf "#endif"
1620 $           goto cfgh_in_loop1
1621 $       endif
1622 $!
1623 $!      Process GETNAMEINFO directives
1624 $!-------------------------------------
1625 $       if key2a .eqs. "GETNAMEINFO"
1626 $       then
1627 $           if key2 .eqs. "GETNAMEINFO_QUAL_ARG1"
1628 $           then
1629 $               write tf "#ifndef ''key2'"
1630 $               write tf "#define ''key2' const"
1631 $               write tf "#endif"
1632 $               goto cfgh_in_loop1
1633 $           endif
1634 $           if key2 .eqs. "GETNAMEINFO_TYPE_ARG1"
1635 $           then
1636 $               write tf "#ifndef ''key2'"
1637 $               write tf "#define ''key2' struct sockaddr *"
1638 $               write tf "#endif"
1639 $               goto cfgh_in_loop1
1640 $           endif
1641 $           if key2 .eqs. "GETNAMEINFO_TYPE_ARG2"
1642 $           then
1643 $               write tf "#ifndef ''key2'"
1644 $               write tf "#define ''key2' size_t"
1645 $               write tf "#endif"
1646 $               goto cfgh_in_loop1
1647 $           endif
1648 $           if key2 .eqs. "GETNAMEINFO_TYPE_ARG46"
1649 $           then
1650 $               write tf "#ifndef ''key2'"
1651 $               write tf "#define ''key2' size_t"
1652 $               write tf "#endif"
1653 $               goto cfgh_in_loop1
1654 $           endif
1655 $           if key2 .eqs. "GETNAMEINFO_TYPE_ARG7"
1656 $           then
1657 $               write tf "#ifndef ''key2'"
1658 $               write tf "#define ''key2' int"
1659 $               write tf "#endif"
1660 $               goto cfgh_in_loop1
1661 $           endif
1662 $       endif
1663 $!
1664 $!      Process RECV directives
1665 $!-------------------------------------
1666 $       if key2a .eqs. "RECV"
1667 $       then
1668 $           if key2 .eqs. "RECV_TYPE_ARG1"
1669 $           then
1670 $               write tf "#ifndef ''key2'"
1671 $               write tf "#define ''key2' int"
1672 $               write tf "#endif"
1673 $               goto cfgh_in_loop1
1674 $           endif
1675 $           if key2 .eqs. "RECV_TYPE_ARG2"
1676 $           then
1677 $               write tf "#ifndef ''key2'"
1678 $               write tf "#define ''key2' void *"
1679 $               write tf "#endif"
1680 $               goto cfgh_in_loop1
1681 $           endif
1682 $           if key2 .eqs. "RECV_TYPE_ARG3"
1683 $           then
1684 $               write tf "#ifndef ''key2'"
1685 $               write tf "#define ''key2' size_t"
1686 $               write tf "#endif"
1687 $               goto cfgh_in_loop1
1688 $           endif
1689 $           if key2 .eqs. "RECV_TYPE_ARG4"
1690 $           then
1691 $               write tf "#ifndef ''key2'"
1692 $               write tf "#define ''key2' int"
1693 $               write tf "#endif"
1694 $               goto cfgh_in_loop1
1695 $           endif
1696 $           if key2 .eqs. "RECV_TYPE_RETV"
1697 $           then
1698 $               write tf "#ifndef ''key2'"
1699 $               write tf "#define ''key2' int"
1700 $               write tf "#endif"
1701 $               goto cfgh_in_loop1
1702 $           endif
1703 $       endif
1704 $!
1705 $!
1706 $!      Process RECVFROM directives
1707 $!-------------------------------------
1708 $       if key2a .eqs. "RECVFROM"
1709 $       then
1710 $           if key2 .eqs. "RECVFROM_QUAL_ARG5"
1711 $           then
1712 $               write tf "#ifndef ''key2'"
1713 $               write tf "#define ''key2'"
1714 $               write tf "#endif"
1715 $               goto cfgh_in_loop1
1716 $           endif
1717 $           if key2 .eqs. "RECVFROM_TYPE_ARG1"
1718 $           then
1719 $               write tf "#ifndef ''key2'"
1720 $               write tf "#define ''key2' int"
1721 $               write tf "#endif"
1722 $               goto cfgh_in_loop1
1723 $           endif
1724 $           if key2 .eqs. "RECVFROM_TYPE_ARG2"
1725 $           then
1726 $               write tf "#ifndef ''key2'"
1727 $               write tf "#define ''key2' void *"
1728 $               write tf "#endif"
1729 $               goto cfgh_in_loop1
1730 $           endif
1731 $           if key2 .eqs. "RECVFROM_TYPE_ARG3"
1732 $           then
1733 $               write tf "#ifndef ''key2'"
1734 $               write tf "#define ''key2' size_t"
1735 $               write tf "#endif"
1736 $               goto cfgh_in_loop1
1737 $           endif
1738 $           if key2 .eqs. "RECVFROM_TYPE_ARG4"
1739 $           then
1740 $               write tf "#ifndef ''key2'"
1741 $               write tf "#define ''key2' int"
1742 $               write tf "#endif"
1743 $               goto cfgh_in_loop1
1744 $           endif
1745 $           if key2 .eqs. "RECVFROM_TYPE_ARG5"
1746 $           then
1747 $               write tf "#ifndef ''key2'"
1748 $               write tf "#define ''key2' struct sockaddr"
1749 $               write tf "#endif"
1750 $               goto cfgh_in_loop1
1751 $           endif
1752 $           if key2 .eqs. "RECVFROM_TYPE_ARG6"
1753 $           then
1754 $               write tf "#ifndef ''key2'"
1755 $               write tf "#define ''key2' unsigned int"
1756 $               write tf "#endif"
1757 $               goto cfgh_in_loop1
1758 $           endif
1759 $           if key2 .eqs. "RECVFROM_TYPE_RETV"
1760 $           then
1761 $               write tf "#ifndef ''key2'"
1762 $               write tf "#define ''key2' int"
1763 $               write tf "#endif"
1764 $               goto cfgh_in_loop1
1765 $           endif
1766 $       endif
1767 $!
1768 $!      Process SELECT directives
1769 $!-------------------------------------
1770 $       if key2a .eqs. "SELECT"
1771 $       then
1772 $           if key2 .eqs. "SELECT_QUAL_ARG5"
1773 $           then
1774 $               write tf "#ifndef ''key2'"
1775 $               write tf "#define ''key2' const"
1776 $               write tf "#endif"
1777 $               goto cfgh_in_loop1
1778 $           endif
1779 $           if key2 .eqs. "SELECT_TYPE_ARG1"
1780 $           then
1781 $               write tf "#ifndef ''key2'"
1782 $               write tf "#define ''key2' int"
1783 $               write tf "#endif"
1784 $               goto cfgh_in_loop1
1785 $           endif
1786 $           if key2 .eqs. "SELECT_TYPE_ARG2"
1787 $           then
1788 $               write tf "#ifndef ''key2'"
1789 $               write tf "#define ''key2' void *"
1790 $               write tf "#endif"
1791 $               goto cfgh_in_loop1
1792 $           endif
1793 $           if key2 .eqs. "SELECT_TYPE_ARG234"
1794 $           then
1795 $               write tf "#ifndef ''key2'"
1796 $               write tf "#define ''key2' fd_set *"
1797 $               write tf "#endif"
1798 $               goto cfgh_in_loop1
1799 $           endif
1800 $           if key2 .eqs. "SELECT_TYPE_ARG5"
1801 $           then
1802 $               write tf "#ifndef ''key2'"
1803 $               write tf "#define ''key2' struct timeval *"
1804 $               write tf "#endif"
1805 $               goto cfgh_in_loop1
1806 $           endif
1807 $           if key2 .eqs. "SELECT_TYPE_RETV"
1808 $           then
1809 $               write tf "#ifndef ''key2'"
1810 $               write tf "#define ''key2' int"
1811 $               write tf "#endif"
1812 $               goto cfgh_in_loop1
1813 $           endif
1814 $       endif
1815 $!
1816 $!      Process SEND directives
1817 $!-------------------------------------
1818 $       if key2a .eqs. "SEND"
1819 $       then
1820 $           if key2 .eqs. "SEND_QUAL_ARG2"
1821 $           then
1822 $               write tf "#ifndef ''key2'"
1823 $               write tf "#define ''key2' const"
1824 $               write tf "#endif"
1825 $               goto cfgh_in_loop1
1826 $           endif
1827 $           if key2 .eqs. "SEND_TYPE_ARG1"
1828 $           then
1829 $               write tf "#ifndef ''key2'"
1830 $               write tf "#define ''key2' int"
1831 $               write tf "#endif"
1832 $               goto cfgh_in_loop1
1833 $           endif
1834 $           if key2 .eqs. "SEND_TYPE_ARG2"
1835 $           then
1836 $               write tf "#ifndef ''key2'"
1837 $               write tf "#define ''key2' void *"
1838 $               write tf "#endif"
1839 $               goto cfgh_in_loop1
1840 $           endif
1841 $           if key2 .eqs. "SEND_TYPE_ARG3"
1842 $           then
1843 $               write tf "#ifndef ''key2'"
1844 $               write tf "#define ''key2' size_t"
1845 $               write tf "#endif"
1846 $               goto cfgh_in_loop1
1847 $           endif
1848 $           if key2 .eqs. "SEND_TYPE_ARG4"
1849 $           then
1850 $               write tf "#ifndef ''key2'"
1851 $               write tf "#define ''key2' int"
1852 $               write tf "#endif"
1853 $               goto cfgh_in_loop1
1854 $           endif
1855 $           if key2 .eqs. "SEND_TYPE_RETV"
1856 $           then
1857 $               write tf "#ifndef ''key2'"
1858 $               write tf "#define ''key2' int"
1859 $               write tf "#endif"
1860 $               goto cfgh_in_loop1
1861 $           endif
1862 $       endif
1863 $!
1864 $!
1865 $!      Process STATFS directives
1866 $!-------------------------------
1867 $!      if key2a .eqs. "STATFS"
1868 $!      then
1869 $!          write tf "/* ", xline, " */"
1870 $!          goto cfgh_in_loop1
1871 $!      endif
1872 $!
1873 $!      Process inline directive
1874 $!------------------------------
1875 $       if key2 .eqs. "inline"
1876 $       then
1877 $           write tf "#ifndef inline"
1878 $           write tf "#define inline __inline"
1879 $           write tf "#endif"
1880 $           goto cfgh_in_loop1
1881 $       endif
1882 $!
1883 $!      Process restrict directive
1884 $!--------------------------------
1885 $       if key2 .eqs. "restrict"
1886 $       then
1887 $           write tf "#ifndef restrict"
1888 $           write tf "#define restrict __restrict"
1889 $           write tf "#endif"
1890 $           goto cfgh_in_loop1
1891 $       endif
1892 $!
1893 $!      Process RETSIGTYPE directive
1894 $!----------------------------------
1895 $       if key2 .eqs. "RETSIGTYPE"
1896 $       then
1897 $           write tf "#ifndef RETSIGTYPE"
1898 $           write tf "#define RETSIGTYPE void"
1899 $           write tf "#endif"
1900 $           goto cfgh_in_loop1
1901 $       endif
1902 $!
1903 $!      Process STDC_HEADERS (SAMBA!)
1904 $!---------------------------
1905 $       if key2 .eqs. "STDC_HEADERS"
1906 $       then
1907 $           write tf "#ifndef STDC_HEADERS"
1908 $           write tf "#define STDC_HEADERS 1"
1909 $           write tf "#endif"
1910 $           goto cfgh_in_loop1
1911 $       endif
1912 $!
1913 $!      Process PROTOTYPES directive
1914 $!-------------------------------------
1915 $       if key2 .eqs. "PROTOTYPES"
1916 $       then
1917 $           write tf "#ifndef PROTOTYPES"
1918 $           write tf "#define PROTOTYPES 1"
1919 $           write tf "#endif"
1920 $           goto cfgh_in_loop1
1921 $       endif
1922 $!
1923 $!      Special for SEEKDIR_RETURNS_VOID
1924 $!---------------------------------------
1925 $       if key2 .eqs. "SEEKDIR_RETURNS_VOID"
1926 $       then
1927 $           write tf "#ifndef SEEKDIR_RETURNS_VOID"
1928 $           write tf "#define SEEKDIR_RETURNS_VOID 1"
1929 $           write tf "#endif"
1930 $       endif
1931 $!
1932 $!      Unknown - See if CONFIGURE can give a clue for this
1933 $!----------------------------------------------------------
1934 $       pflag = 0
1935 $       set_flag = 0
1936 $!      gproj_name = proj_name - "_VMS" - "-VMS"
1937 $       if f$search(tfile1) .nes. "" then delete 'tfile1';*
1938 $       define/user sys$output nl:
1939 $       define/user sys$error nl:
1940 $!      if f$locate("FILE", key2) .lt. key2_len then pflag = 1
1941 $!      if f$locate("DIR", key2) .eq. key2_len - 3 then pflag = 1
1942 $!      if f$locate("PATH", key2) .eq. key2_len - 4 then pflag = 1
1943 $!
1944 $       search/out='tfile1' 'configure_script' "''key2'="/exact
1945 $       search_sev = '$severity'
1946 $       if 'search_sev' .eq. 1
1947 $       then
1948 $           open/read/err=unknown_cf_rd_error sf 'tfile1'
1949 $search_file_rd_loop:
1950 $           read/end=unknown_cf_rd_err sf line_in
1951 $           line_in = f$edit(line_in, "TRIM")
1952 $           skey1 = f$element(0,"=",line_in)
1953 $           if skey1 .eqs. key2
1954 $           then
1955 $               skey2 = f$element(1,"=",line_in)
1956 $               skey2a = f$extract(0,2,skey2)
1957 $!
1958 $!
1959 $!              We can not handle assignment to shell symbols.
1960 $!              For now skip them.
1961 $!------------------------------------------------------------
1962 $               if f$locate("$", skey2) .lt. f$length(skey2)
1963 $               then
1964 $                   write tf "/* ", xline, " */"
1965 $                   set_flag = 1
1966 $                   goto found_in_configure
1967 $               endif
1968 $!
1969 $!              Keep these two cases separate to make it easier to add
1970 $!              more future intelligence to this routine
1971 $!----------------------------------------------------------------------
1972 $               if skey2a .eqs. """`"
1973 $               then
1974 $!                  if pflag .eq. 1
1975 $!                  then
1976 $!                      write tf "#ifndef ''key2'"
1977 $!                      write tf "#define ",key2," """,gproj_name,"_",key2,""""
1978 $!                      write tf "#endif"
1979 $!                  else
1980 $!                      Ignore this for now
1981 $!------------------------------------------
1982 $                       write tf "/* ", xline, " */"
1983 $!                  endif
1984 $                   set_flag = 1
1985 $                   goto found_in_configure
1986 $               endif
1987 $               if skey2a .eqs. """$"
1988 $               then
1989 $!                  if pflag .eq. 1
1990 $!                  then
1991 $!                      write tf "#ifndef ''key2'"
1992 $!                      write tf "#define ",key2," """,gproj_name,"_",key2,""""
1993 $!                      write tf "#endif"
1994 $!                  else
1995 $!                      Ignore this for now
1996 $!-------------------------------------------
1997 $                       write tf "/* ", xline, " */"
1998 $!                  endif
1999 $                   set_flag = 1
2000 $                   goto found_in_configure
2001 $               endif
2002 $!
2003 $!              Remove multiple layers of quotes if present
2004 $!----------------------------------------------------------
2005 $               if f$extract(0, 1, skey2) .eqs. "'"
2006 $               then
2007 $                   skey2 = skey2 - "'" - "'" - "'" - "'"
2008 $               endif
2009 $               if f$extract(0, 1, skey2) .eqs. """"
2010 $               then
2011 $                   skey2 = skey2 - """" - """" - """" - """"
2012 $               endif
2013 $               write tf "#ifndef ''key2'"
2014 $               if skey2 .eqs. ""
2015 $               then
2016 $                   write tf "#define ",key2
2017 $               else
2018 $!                  Only quote non-numbers
2019 $!----------------------------------------
2020 $                   if f$string(skey2+0) .eqs. skey2
2021 $                   then
2022 $                       write tf "#define ",key2," ",skey2
2023 $                   else
2024 $                       write tf "#define ",key2," """,skey2,""""
2025 $                   endif
2026 $               endif
2027 $               write tf "#endif"
2028 $               set_flag = 1
2029 $           else
2030 $               goto search_file_rd_loop
2031 $!              if pflag .eq. 1
2032 $!              then
2033 $!                  write tf "#ifndef ''key2'"
2034 $!                  write tf "#define ",key2," """,gproj_name,"_",key2,""""
2035 $!                  write tf "#endif"
2036 $!                  set_flag = 1
2037 $!              endif
2038 $           endif
2039 $found_in_configure:
2040 $unknown_cf_rd_err:
2041 $           if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. ""
2042 $           then
2043 $               close sf
2044 $           endif
2045 $           if f$search(tfile1) .nes. "" then delete 'tfile1';*
2046 $           if set_flag .eq. 1 then goto cfgh_in_loop1
2047 $       endif
2048 $   endif
2049 $!
2050 $!
2051 $!
2052 $!  If it falls through everything else, comment it out
2053 $!-----------------------------------------------------
2054 $   write tf "/* ", xline, " */"
2055 $   goto cfgh_in_loop1
2056 $cfgh_in_loop1_end:
2057 $close inf
2058 $!
2059 $!
2060 $! Write out the tail
2061 $!--------------------
2062 $write_tail:
2063 $gosub write_config_h_tail
2064 $!
2065 $! Exit and clean up
2066 $!--------------------
2067 $general_error:
2068 $status = '$status'
2069 $all_exit:
2070 $set noon
2071 $if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" then close sf
2072 $if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf
2073 $if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf
2074 $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
2075 $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
2076 $if f$trnlnm("tfcv","lnm$process",,"SUPERVISOR") .nes. "" then close tfcv
2077 $if f$type(tfile1) .eqs. "STRING"
2078 $then
2079 $   if f$search(tfile1) .nes. "" then delete 'tfile1';*
2080 $endif
2081 $if f$type(dchfile) .eqs. "STRING"
2082 $then
2083 $   if f$search(dchfile) .nes. "" then delete 'dchfile';*
2084 $endif
2085 $if f$type(starhfile) .eqs. "STRING"
2086 $then
2087 $   if f$search(starhfile) .nes. "" then delete 'starhfile';*
2088 $endif
2089 $if f$type(configure_script) .eqs. "STRING"
2090 $then
2091 $   if f$search(configure_script) .nes. "" then delete 'configure_script';*
2092 $endif
2093 $exit 'status'
2094 $!
2095 $!
2096 $control_y:
2097 $   status = ss_control_y
2098 $   goto all_exit
2099 $!
2100 $!
2101 $!
2102 $! Gosub to write a new config_vms.h
2103 $!-----------------------------------
2104 $write_config_vms:
2105 $outfile = "sys$disk:[]config_vms.h"
2106 $create 'outfile'
2107 $open/append tf 'outfile'
2108 $write tf "/* File: config_vms.h"
2109 $write tf "**"
2110 $write tf "** This file contains the manual edits needed for porting"
2111 $!write tf "** the ''proj_name' package to OpenVMS.
2112 $write tf "**"
2113 $write tf "** Edit this file as needed.  The procedure that automatically"
2114 $write tf "** generated this header stub will not overwrite or make any"
2115 $write tf "** changes to this file."
2116 $write tf "**"
2117 $write tf -
2118  "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
2119 $write tf "**"
2120 $write tf -
2121  "**========================================================================*/"
2122 $write tf ""
2123 $close tf
2124 $return
2125 $!
2126 $! gosub to write out a documentation header for config.h
2127 $!----------------------------------------------------------------
2128 $write_config_h_header:
2129 $outfile = "sys$disk:[]config.h"
2130 $create 'outfile'
2131 $open/append tf 'outfile'
2132 $write tf "#ifndef CONFIG_H"
2133 $write tf "#define CONFIG_H"
2134 $write tf "/* File: config.h"
2135 $write tf "**"
2136 $write tf -
2137   "** This file contains the options needed for porting "
2138 $write tf "** the project on a VMS system."
2139 $write tf "**"
2140 $write tf "** Try not to make any edits to this file, as it is"
2141 $write tf "** automagically generated."
2142 $write tf "**"
2143 $write tf "** Manual edits should be made to the config_vms.h file."
2144 $write tf "**"
2145 $write tf -
2146  "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
2147 $write tf "**"
2148 $write tf -
2149  "**========================================================================*/"
2150 $write tf ""
2151 $write tf "#if (__CRTL_VER >= 70200000) && !defined (__VAX)"
2152 $write tf "#define _LARGEFILE 1"
2153 $write tf "#endif"
2154 $write tf ""
2155 $write tf "#ifndef __VAX"
2156 $write tf "#ifdef __CRTL_VER"
2157 $write tf "#if __CRTL_VER >= 80200000"
2158 $write tf "#define _USE_STD_STAT 1"
2159 $write tf "#endif"
2160 $write tf "#endif"
2161 $write tf "#endif"
2162 $write tf ""
2163 $!
2164 $write tf " /* Allow compiler builtins */"
2165 $write tf "/*-------------------------*/"
2166 $write tf "#ifdef __DECC_VER"
2167 $write tf "#include <non_existant_dir:builtins.h>"
2168 $write tf "#endif"
2169 $!
2170 $write tf ""
2171 $return
2172 $!
2173 $! gosub to write out the tail for config.h and close it
2174 $!---------------------------------------------------------
2175 $write_config_h_tail:
2176 $write tf ""
2177 $write tf " /* Include the hand customized settings */"
2178 $write tf "/*--------------------------------------*/"
2179 $write tf "#include ""config_vms.h"""
2180 $write tf ""
2181 $write tf "#endif /* CONFIG_H */"
2182 $close tf
2183 $return
2184 $!