|
|
1.1 root 1: #! /bin/sh
2: #
3: # fixinc.svr4 -- Install modified versions of certain ANSI-incompatible
4: # native System V Release 4 system include files.
5: #
6: # Written by Ron Guilmette ([email protected]).
7: #
8: # This file is part of GNU CC.
9: #
10: # GNU CC is free software; you can redistribute it and/or modify
11: # it under the terms of the GNU General Public License as published by
12: # the Free Software Foundation; either version 2, or (at your option)
13: # any later version.
14: #
15: # GNU CC is distributed in the hope that it will be useful,
16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18: # GNU General Public License for more details.
19: #
20: # You should have received a copy of the GNU General Public License
21: # along with GNU CC; see the file COPYING. If not, write to
22: # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
23: #
24: # This script munges the native include files provided with System V
25: # Release 4 systems so as to remove things which are violations of the
26: # ANSI C standard. Once munged, the resulting new system include files
27: # are placed in a directory that GNU C will search *before* searching
28: # the /usr/include directory. This script should work properly for most
29: # System V Release 4 systems. For other types of systems, you should
30: # use the `fixincludes' script instead.
31: #
32: # See README-fixinc for more information.
33:
34: # Directory where gcc sources (and sometimes special include files) live.
35: SRCDIR=${3-${SRCDIR-.}}
36:
37: # Directory containing the original header files.
38: INPUT=${2-${INPUT-/usr/include}}
39:
40: # Fail if no arg to specify a directory for the output.
41: if [ x$1 = x ]
42: then echo fixincludes: no output directory specified
43: exit 1
44: fi
45:
46: # Directory in which to store the results.
47: LIB=${1?"fixincludes: output directory not specified"}
48:
49: # Make sure it exists.
50: if [ ! -d $LIB ]; then
51: mkdir $LIB || exit 1
52: fi
53:
54: ORIG_DIR=`pwd`
55:
56: # Make LIB absolute if it is relative.
57: # Don't do this if not necessary, since may screw up automounters.
58: case $LIB in
59: /*)
60: ;;
61: *)
62: LIB=$ORIG_DIR/$LIB
63: ;;
64: esac
65:
66: echo 'Building fixincludes in ' ${LIB}
67:
68: # Determine whether this filesystem has symbolic links.
69: if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
70: rm -f $LIB/ShouldNotExist
71: LINKS=true
72: else
73: LINKS=false
74: fi
75:
76: echo 'Making directories:'
77: cd ${INPUT}
78: if $LINKS; then
79: files=`ls -LR | sed -n s/:$//p`
80: else
81: files=`find . -type d -print | sed '/^.$/d'`
82: fi
83: for file in $files; do
84: rm -rf $LIB/$file
85: if [ ! -d $LIB/$file ]
86: then mkdir $LIB/$file
87: fi
88: done
89:
90: # treetops gets an alternating list
91: # of old directories to copy
92: # and the new directories to copy to.
93: treetops="${INPUT} ${LIB}"
94:
95: if $LINKS; then
96: echo 'Making internal symbolic directory links'
97: for file in $files; do
98: dest=`ls -ld $file | sed -n 's/.*-> //p'`
99: if [ "$dest" ]; then
100: cwd=`pwd`
101: # In case $dest is relative, get to $file's dir first.
102: cd ${INPUT}
103: cd `echo ./$file | sed -n 's&[^/]*$&&p'`
104: # Check that the target directory exists.
105: # Redirections changed to avoid bug in sh on Ultrix.
106: (cd $dest) > /dev/null 2>&1
107: if [ $? = 0 ]; then
108: cd $dest
109: # X gets the dir that the link actually leads to.
110: x=`pwd`
111: # If link leads back into ${INPUT},
112: # make a similar link here.
113: if expr $x : "${INPUT}/.*" > /dev/null; then
114: # Y gets the actual target dir name, relative to ${INPUT}.
115: y=`echo $x | sed -n "s&${INPUT}/&&p"`
116: # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
117: dots=`echo "$file" |
118: sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
119: echo $file '->' $dots$y ': Making link'
120: rm -fr ${LIB}/$file > /dev/null 2>&1
121: ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
122: else
123: # If the link is to outside ${INPUT},
124: # treat this directory as if it actually contained the files.
125: # This line used to have $dest instead of $x.
126: # $dest seemed to be wrong for links found in subdirectories
127: # of ${INPUT}. Does this change break anything?
128: treetops="$treetops $x ${LIB}/$file"
129: fi
130: fi
131: cd $cwd
132: fi
133: done
134: fi
135:
136: set - $treetops
137: while [ $# != 0 ]; do
138: # $1 is an old directory to copy, and $2 is the new directory to copy to.
139: echo "Finding header files in $1:"
140: cd ${INPUT}
141: cd $1
142: files=`find . -name '*.h' -type f -print`
143: echo 'Checking header files:'
144: for file in $files; do
145: if [ -r $file ]; then
146: cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file"
147: chmod +w $2/$file
148: chmod a+r $2/$file
149:
150: # The following have been removed from the sed command below
151: # because it is more useful to leave these things in.
152: # The only reason to remove them was for -pedantic,
153: # which isn't much of a reason. -- rms.
154: # /^[ ]*#[ ]*ident/d
155:
156: # This code makes Solaris SCSI fail, because it changes the
157: # alignment within some critical structures. See <sys/scsi/impl/commands.h>.
158: # s/u_char\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
159: # Disable these also, since they probably aren't safe either.
160: # s/u_short\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
161: # s/ushort\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
162: # s/evcm_t\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*[0-9][0-9]*\)/u_int\1/
163: # s/Pbyte\([ ][ ]*[a-zA-Z0-9_][a-zA-Z0-9_]*[ ]*:[ ]*SEQSIZ\)/unsigned int\1/
164:
165: # The change of u_char, etc, to u_int
166: # applies to bit fields.
167: sed -e '
168: s%^\([ ]*#[ ]*else\)[ ]*/[^*].*%\1%
169: s%^\([ ]*#[ ]*else\)[ ]*[^/ ].*%\1%
170: s%^\([ ]*#[ ]*endif\)[ ]*/[^*].*%\1%
171: s%^\([ ]*#[ ]*endif\)[ ]*[^/ ].*%\1%
172: s/#lint(on)/defined(lint)/g
173: s/#lint(off)/!defined(lint)/g
174: s/#machine(\([^)]*\))/defined(__\1__)/g
175: s/#system(\([^)]*\))/defined(__\1__)/g
176: s/#cpu(\([^)]*\))/defined(__\1__)/g
177: /#[a-z]*if.*[ (]m68k/ s/\([^_]\)m68k/\1__m68k__/g
178: /#[a-z]*if.*[ (]__i386\([^_]\)/ s/__i386/__i386__/g
179: /#[a-z]*if.*[ (]i386/ s/\([^_]\)i386/\1__i386__/g
180: /#[a-z]*if.*[ (]sparc/ s/\([^_]\)sparc/\1__sparc__/g
181: /#[a-z]*if.*[ (]mc68000/ s/\([^_]\)mc68000/\1__mc68000__/g
182: /#[a-z]*if.*[ (]vax/ s/\([^_]\)vax/\1__vax__/g
183: /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)\([^a-z0-9_]\)/\1__\2__\3/g
184: /#[a-z]*if.*[ (]sun/ s/\([^_]\)\(sun[a-z0-9]*\)$/\1__\2__/g
185: /#[a-z]*if.*[ (]ns32000/ s/\([^_]\)ns32000/\1__ns32000__/g
186: /#[a-z]*if.*[ (]pyr/ s/\([^_]\)pyr/\1__pyr__/g
187: /#[a-z]*if.*[ (]is68k/ s/\([^_]\)is68k/\1__is68k__/g
188: s/__STDC__[ ][ ]*==[ ][ ]*0/!defined (__STRICT_ANSI__)/g
189: s/__STDC__[ ][ ]*==[ ][ ]*1/defined (__STRICT_ANSI__)/g
190: s/__STDC__[ ][ ]*!=[ ][ ]*0/defined (__STRICT_ANSI__)/g
191: s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
192: ' $2/$file > $2/$file.sed
193: mv $2/$file.sed $2/$file
194: if cmp $file $2/$file >/dev/null 2>&1; then
195: rm $2/$file
196: else
197: echo Fixed $file
198: fi
199: fi
200: done
201: shift; shift
202: done
203:
204: # Fix first broken decl of getcwd present on some svr4 systems.
205:
206: file=stdlib.h
207: base=`basename $file`
208: if [ -r ${LIB}/$file ]; then
209: file_to_fix=${LIB}/$file
210: else
211: if [ -r ${INPUT}/$file ]; then
212: file_to_fix=${INPUT}/$file
213: else
214: file_to_fix=""
215: fi
216: fi
217: if [ \! -z "$file_to_fix" ]; then
218: echo Checking $file_to_fix
219: sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix > /tmp/$base
220: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
221: true
222: else
223: echo Fixed $file_to_fix
224: rm -f ${LIB}/$file
225: cp /tmp/$base ${LIB}/$file
226: chmod a+r ${LIB}/$file
227: fi
228: rm -f /tmp/$base
229: fi
230:
231: # Fix second broken decl of getcwd present on some svr4 systems. Also
232: # fix the incorrect decl of profil present on some svr4 systems.
233:
234: file=unistd.h
235: base=`basename $file`
236: if [ -r ${LIB}/$file ]; then
237: file_to_fix=${LIB}/$file
238: else
239: if [ -r ${INPUT}/$file ]; then
240: file_to_fix=${INPUT}/$file
241: else
242: file_to_fix=""
243: fi
244: fi
245: if [ \! -z "$file_to_fix" ]; then
246: echo Checking $file_to_fix
247: sed -e 's/getcwd(char \*, int)/getcwd(char *, size_t)/' $file_to_fix \
248: | sed -e 's/profil(unsigned short \*, unsigned int, unsigned int, unsigned int)/profil(unsigned short *, size_t, int, unsigned)/' > /tmp/$base
249: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
250: true
251: else
252: echo Fixed $file_to_fix
253: rm -f ${LIB}/$file
254: cp /tmp/$base ${LIB}/$file
255: chmod a+r ${LIB}/$file
256: fi
257: rm -f /tmp/$base
258: fi
259:
260: # Fix the definition of NULL in <sys/param.h> so that it is conditional
261: # and so that it is correct for both C and C++.
262:
263: file=sys/param.h
264: base=`basename $file`
265: if [ -r ${LIB}/$file ]; then
266: file_to_fix=${LIB}/$file
267: else
268: if [ -r ${INPUT}/$file ]; then
269: file_to_fix=${INPUT}/$file
270: else
271: file_to_fix=""
272: fi
273: fi
274: if [ \! -z "$file_to_fix" ]; then
275: echo Checking $file_to_fix
276: cp $file_to_fix /tmp/$base
277: chmod +w /tmp/$base
278: chmod a+r /tmp/$base
279: sed -e '/^#define[ ]*NULL[ ]*0$/c\
280: #ifndef NULL\
281: #ifdef __cplusplus\
282: #define __NULL_TYPE\
283: #else /* !defined(__cplusplus) */\
284: #define __NULL_TYPE (void *)\
285: #endif /* !defined(__cplusplus) */\
286: #define NULL (__NULL_TYPE 0)\
287: #endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
288: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
289: true
290: else
291: echo Fixed $file_to_fix
292: rm -f ${LIB}/$file
293: cp /tmp/$base.sed ${LIB}/$file
294: chmod a+r ${LIB}/$file
295: fi
296: rm -f /tmp/$base /tmp/$base.sed
297: fi
298:
299: # Likewise fix the definition of NULL in <stdio.h> so that it is conditional
300: # and so that it is correct for both C and C++.
301:
302: file=stdio.h
303: base=`basename $file`
304: if [ -r ${LIB}/$file ]; then
305: file_to_fix=${LIB}/$file
306: else
307: if [ -r ${INPUT}/$file ]; then
308: file_to_fix=${INPUT}/$file
309: else
310: file_to_fix=""
311: fi
312: fi
313: if [ \! -z "$file_to_fix" ]; then
314: echo Checking $file_to_fix
315: cp $file_to_fix /tmp/$base
316: chmod +w /tmp/$base
317: sed -e '/^#define[ ]*NULL[ ]*0$/c\
318: #ifdef __cplusplus\
319: #define __NULL_TYPE\
320: #else /* !defined(__cplusplus) */\
321: #define __NULL_TYPE (void *)\
322: #endif /* !defined(__cplusplus) */\
323: #define NULL (__NULL_TYPE 0)' /tmp/$base > /tmp/$base.sed
324: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
325: true
326: else
327: echo Fixed $file_to_fix
328: rm -f ${LIB}/$file
329: cp /tmp/$base.sed ${LIB}/$file
330: chmod a+r ${LIB}/$file
331: fi
332: rm -f /tmp/$base /tmp/$base.sed
333: fi
334:
335: # Likewise fix the definition of NULL in <dbm.h> so that it is conditional
336: # and so that it is correct for both C and C++.
337:
338: file=dbm.h
339: base=`basename $file`
340: if [ -r ${LIB}/$file ]; then
341: file_to_fix=${LIB}/$file
342: else
343: if [ -r ${INPUT}/$file ]; then
344: file_to_fix=${INPUT}/$file
345: else
346: file_to_fix=""
347: fi
348: fi
349: if [ \! -z "$file_to_fix" ]; then
350: echo Checking $file_to_fix
351: cp $file_to_fix /tmp/$base
352: chmod +w /tmp/$base
353: sed -e '/^#define[ ]*NULL[ ]*((char \*) 0)$/c\
354: #ifndef NULL\
355: #ifdef __cplusplus\
356: #define __NULL_TYPE\
357: #else /* !defined(__cplusplus) */\
358: #define __NULL_TYPE (void *)\
359: #endif /* !defined(__cplusplus) */\
360: #define NULL (__NULL_TYPE 0)\
361: #endif /* !defined(NULL) */' /tmp/$base > /tmp/$base.sed
362: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
363: true
364: else
365: echo Fixed $file_to_fix
366: rm -f ${LIB}/$file
367: cp /tmp/$base.sed ${LIB}/$file
368: chmod a+r ${LIB}/$file
369: fi
370: rm -f /tmp/$base /tmp/$base.sed
371: fi
372:
373: # Add a prototyped declaration of mmap to <sys/mman.h>.
374:
375: file=sys/mman.h
376: base=`basename $file`
377: if [ -r ${LIB}/$file ]; then
378: file_to_fix=${LIB}/$file
379: else
380: if [ -r ${INPUT}/$file ]; then
381: file_to_fix=${INPUT}/$file
382: else
383: file_to_fix=""
384: fi
385: fi
386: if [ \! -z "$file_to_fix" ]; then
387: echo Checking $file_to_fix
388: cp $file_to_fix /tmp/$base
389: chmod +w /tmp/$base
390: sed -e '/^extern caddr_t mmap();$/c\
391: #ifdef __STDC__\
392: extern caddr_t mmap (caddr_t addr, size_t len, int prot, int flags,\
393: int fd, off_t off);\
394: #else /* !defined(__STDC__) */\
395: extern caddr_t mmap ();\
396: #endif /* !defined(__STDC__) */' /tmp/$base > /tmp/$base.sed
397: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
398: true
399: else
400: echo Fixed $file_to_fix
401: rm -f ${LIB}/$file
402: cp /tmp/$base.sed ${LIB}/$file
403: chmod a+r ${LIB}/$file
404: fi
405: rm -f /tmp/$base /tmp/$base.sed
406: fi
407:
408: # Fix declarations of `ftw' and `nftw' in <ftw.h>. On some/most SVR4 systems
409: # the file <ftw.h> contains extern declarations of these functions followed
410: # by explicitly `static' definitions of these functions... and that's not
411: # allowed according to ANSI C. (Note however that on Solaris, this header
412: # file glitch has been pre-fixed by Sun. In the Solaris version of <ftw.h>
413: # there are no static definitions of any function so we don't need to do
414: # any of this stuff when on Solaris.
415:
416: file=ftw.h
417: base=`basename $file`
418: if [ -r ${LIB}/$file ]; then
419: file_to_fix=${LIB}/$file
420: else
421: if [ -r ${INPUT}/$file ]; then
422: file_to_fix=${INPUT}/$file
423: else
424: file_to_fix=""
425: fi
426: fi
427: if test -z "$file_to_fix" || grep 'define ftw' $file_to_fix > /dev/null; then
428: # Either we have no <ftw.h> file at all, or else we have the pre-fixed Solaris
429: # one. Either way, we don't have to do anything.
430: true
431: else
432: echo Checking $file_to_fix
433: cp $file_to_fix /tmp/$base
434: chmod +w /tmp/$base
435: sed -e '/^extern int ftw(const/i\
436: #if !defined(_STYPES)\
437: static\
438: #else\
439: extern\
440: #endif'\
441: -e 's/extern \(int ftw(const.*\)$/\1/' \
442: -e '/^extern int nftw/i\
443: #if defined(_STYPES)\
444: static\
445: #else\
446: extern\
447: #endif'\
448: -e 's/extern \(int nftw.*\)$/\1/' \
449: -e '/^extern int ftw(),/c\
450: #if !defined(_STYPES)\
451: static\
452: #else\
453: extern\
454: #endif\
455: int ftw();\
456: #if defined(_STYPES)\
457: static\
458: #else\
459: extern\
460: #endif\
461: int nftw();' /tmp/$base > /tmp/$base.sed
462: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
463: true
464: else
465: echo Fixed $file_to_fix
466: rm -f ${LIB}/$file
467: cp /tmp/$base.sed ${LIB}/$file
468: chmod a+r ${LIB}/$file
469: fi
470: rm -f /tmp/$base /tmp/$base.sed
471: fi
472:
473: # Add a `static' declaration of `getrnge' into <regexp.h>.
474:
475: # Don't do this if there is already a `static void getrnge' declaration
476: # present, since this would cause a redeclaration error. Solaris 2.x has
477: # such a declaration.
478:
479: file=regexp.h
480: base=`basename $file`
481: if [ -r ${LIB}/$file ]; then
482: file_to_fix=${LIB}/$file
483: else
484: if [ -r ${INPUT}/$file ]; then
485: file_to_fix=${INPUT}/$file
486: else
487: file_to_fix=""
488: fi
489: fi
490: if [ \! -z "$file_to_fix" ]; then
491: echo Checking $file_to_fix
492: if grep "static void getrnge" $file_to_fix > /dev/null; then
493: true
494: else
495: cp $file_to_fix /tmp/$base
496: chmod +w /tmp/$base
497: sed -e '/^static int[ ]*size;/c\
498: static int size ;\
499: \
500: static int getrnge ();' /tmp/$base > /tmp/$base.sed
501: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
502: true
503: else
504: echo Fixed $file_to_fix
505: rm -f ${LIB}/$file
506: cp /tmp/$base.sed ${LIB}/$file
507: chmod a+r ${LIB}/$file
508: fi
509: fi
510: rm -f /tmp/$base /tmp/$base.sed
511: fi
512:
513: # Disable apparent native compiler optimization cruft in SVR4.2 <string.h>
514: # that is visible to any ANSI compiler using this include. Simply
515: # delete the lines that #define some string functions to internal forms.
516:
517: file=string.h
518: base=`basename $file`
519: if [ -r ${LIB}/$file ]; then
520: file_to_fix=${LIB}/$file
521: else
522: if [ -r ${INPUT}/$file ]; then
523: file_to_fix=${INPUT}/$file
524: else
525: file_to_fix=""
526: fi
527: fi
528: if [ \! -z "$file_to_fix" ]; then
529: echo Checking $file_to_fix
530: cp $file_to_fix /tmp/$base
531: chmod +w /tmp/$base
532: sed -e '/#define.*__std_hdr_/d' /tmp/$base > /tmp/$base.sed
533: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
534: true
535: else
536: echo Fixed $file_to_fix
537: rm -f ${LIB}/$file
538: cp /tmp/$base.sed ${LIB}/$file
539: chmod a+r ${LIB}/$file
540: fi
541: rm -f /tmp/$base /tmp/$base.sed
542: fi
543:
544: # Delete any #defines of `__i386' which may be present in <ieeefp.h>. They
545: # tend to conflict with the compiler's own definition of this symbol. (We
546: # will use the compiler's definition.)
547: # Likewise __sparc, for Solaris, and __i860, and a few others
548: # (guessing it is necessary for all of them).
549:
550: file=ieeefp.h
551: base=`basename $file`
552: if [ -r ${LIB}/$file ]; then
553: file_to_fix=${LIB}/$file
554: else
555: if [ -r ${INPUT}/$file ]; then
556: file_to_fix=${INPUT}/$file
557: else
558: file_to_fix=""
559: fi
560: fi
561: if [ \! -z "$file_to_fix" ]; then
562: echo Checking $file_to_fix
563: cp $file_to_fix /tmp/$base
564: chmod +w /tmp/$base
565: sed -e '/#define[ ]*__i386 /d' -e '/#define[ ]*__sparc /d' \
566: -e '/#define[ ]*__i860 /d' -e '/#define[ ]*__m88k /d' \
567: -e '/#define[ ]*__mips /d' -e '/#define[ ]*__m68k /d' \
568: /tmp/$base > /tmp/$base.sed
569: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
570: true
571: else
572: echo Fixed $file_to_fix
573: rm -f ${LIB}/$file
574: cp /tmp/$base.sed ${LIB}/$file
575: chmod a+r ${LIB}/$file
576: fi
577: rm -f /tmp/$base /tmp/$base.sed
578: fi
579:
580: # Add a #define of _SIGACTION_ into <sys/signal.h>.
581: # Also fix types of SIG_DFL, SIG_ERR, SIG_IGN, and SIG_HOLD.
582:
583: file=sys/signal.h
584: base=`basename $file`
585: if [ -r ${LIB}/$file ]; then
586: file_to_fix=${LIB}/$file
587: else
588: if [ -r ${INPUT}/$file ]; then
589: file_to_fix=${INPUT}/$file
590: else
591: file_to_fix=""
592: fi
593: fi
594: if [ \! -z "$file_to_fix" ]; then
595: echo Checking $file_to_fix
596: cp $file_to_fix /tmp/$base
597: chmod +w /tmp/$base
598: sed -e '/^struct sigaction {/c\
599: #define _SIGACTION_\
600: struct sigaction {' \
601: -e '1,$s/(void *(\*)())/(void (*)(int))/' /tmp/$base > /tmp/$base.sed
602: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
603: true
604: else
605: echo Fixed $file_to_fix
606: rm -f ${LIB}/$file
607: cp /tmp/$base.sed ${LIB}/$file
608: chmod a+r ${LIB}/$file
609: fi
610: rm -f /tmp/$base /tmp/$base.sed
611: fi
612:
613: # Fix declarations of `makedev', `major', and `minor' in <sys/mkdev.h>.
614:
615: file=sys/mkdev.h
616: base=`basename $file`
617: if [ -r ${LIB}/$file ]; then
618: file_to_fix=${LIB}/$file
619: else
620: if [ -r ${INPUT}/$file ]; then
621: file_to_fix=${INPUT}/$file
622: else
623: file_to_fix=""
624: fi
625: fi
626: if [ \! -z "$file_to_fix" ]; then
627: echo Checking $file_to_fix
628: cp $file_to_fix /tmp/$base
629: chmod +w /tmp/$base
630: sed -e '/^dev_t makedev(const/c\
631: static dev_t makedev(const major_t, const minor_t);' \
632: -e '/^dev_t makedev()/c\
633: static dev_t makedev();' \
634: -e '/^major_t major(const/c\
635: static major_t major(const dev_t);' \
636: -e '/^major_t major()/c\
637: static major_t major();' \
638: -e '/^minor_t minor(const/c\
639: static minor_t minor(const dev_t);' \
640: -e '/^minor_t minor()/c\
641: static minor_t minor();' /tmp/$base > /tmp/$base.sed
642: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
643: true
644: else
645: echo Fixed $file_to_fix
646: rm -f ${LIB}/$file
647: cp /tmp/$base.sed ${LIB}/$file
648: chmod a+r ${LIB}/$file
649: fi
650: rm -f /tmp/$base /tmp/$base.sed
651: fi
652:
653: # Fix reference to NMSZ in <sys/adv.h>.
654:
655: file=sys/adv.h
656: base=`basename $file`
657: if [ -r ${LIB}/$file ]; then
658: file_to_fix=${LIB}/$file
659: else
660: if [ -r ${INPUT}/$file ]; then
661: file_to_fix=${INPUT}/$file
662: else
663: file_to_fix=""
664: fi
665: fi
666: if [ \! -z "$file_to_fix" ]; then
667: echo Checking $file_to_fix
668: sed 's/\[NMSZ\]/\[RFS_NMSZ\]/g' $file_to_fix > /tmp/$base
669: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
670: true
671: else
672: echo Fixed $file_to_fix
673: rm -f ${LIB}/$file
674: cp /tmp/$base ${LIB}/$file
675: chmod a+r ${LIB}/$file
676: fi
677: rm -f /tmp/$base
678: fi
679:
680: # Fix reference to NC_NPI_RAW in <sys/netcspace.h>. Also fix types of
681: # array initializers.
682:
683: file=sys/netcspace.h
684: base=`basename $file`
685: if [ -r ${LIB}/$file ]; then
686: file_to_fix=${LIB}/$file
687: else
688: if [ -r ${INPUT}/$file ]; then
689: file_to_fix=${INPUT}/$file
690: else
691: file_to_fix=""
692: fi
693: fi
694: if [ \! -z "$file_to_fix" ]; then
695: echo Checking $file_to_fix
696: sed 's/NC_NPI_RAW/NC_TPI_RAW/g' $file_to_fix \
697: | sed 's/NC_/(unsigned long) NC_/' > /tmp/$base
698: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
699: true
700: else
701: echo Fixed $file_to_fix
702: rm -f ${LIB}/$file
703: cp /tmp/$base ${LIB}/$file
704: chmod a+r ${LIB}/$file
705: fi
706: rm -f /tmp/$base
707: fi
708:
709: # Conditionalize all of <fs/rfs/rf_cache.h> on _KERNEL being defined.
710:
711: file=fs/rfs/rf_cache.h
712: base=`basename $file`
713: if [ -r ${LIB}/$file ]; then
714: file_to_fix=${LIB}/$file
715: else
716: if [ -r ${INPUT}/$file ]; then
717: file_to_fix=${INPUT}/$file
718: else
719: file_to_fix=""
720: fi
721: fi
722: if [ \! -z "$file_to_fix" ]; then
723: echo Checking $file_to_fix
724: if grep _KERNEL $file_to_fix > /dev/null; then
725: true
726: else
727: echo '#ifdef _KERNEL' > /tmp/$base
728: cat $file_to_fix >> /tmp/$base
729: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
730: echo Fixed $file_to_fix
731: rm -f ${LIB}/$file
732: cp /tmp/$base ${LIB}/$file
733: chmod a+r ${LIB}/$file
734: rm -f /tmp/$base
735: fi
736: fi
737:
738: # Conditionalize all of <sys/erec.h> on _KERNEL being defined.
739:
740: file=sys/erec.h
741: base=`basename $file`
742: if [ -r ${LIB}/$file ]; then
743: file_to_fix=${LIB}/$file
744: else
745: if [ -r ${INPUT}/$file ]; then
746: file_to_fix=${INPUT}/$file
747: else
748: file_to_fix=""
749: fi
750: fi
751: if [ \! -z "$file_to_fix" ]; then
752: echo Checking $file_to_fix
753: if grep _KERNEL $file_to_fix > /dev/null; then
754: true
755: else
756: echo '#ifdef _KERNEL' > /tmp/$base
757: cat $file_to_fix >> /tmp/$base
758: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
759: echo Fixed $file_to_fix
760: rm -f ${LIB}/$file
761: cp /tmp/$base ${LIB}/$file
762: chmod a+r ${LIB}/$file
763: rm -f /tmp/$base
764: fi
765: fi
766:
767: # Conditionalize all of <sys/err.h> on _KERNEL being defined.
768:
769: file=sys/err.h
770: base=`basename $file`
771: if [ -r ${LIB}/$file ]; then
772: file_to_fix=${LIB}/$file
773: else
774: if [ -r ${INPUT}/$file ]; then
775: file_to_fix=${INPUT}/$file
776: else
777: file_to_fix=""
778: fi
779: fi
780: if [ \! -z "$file_to_fix" ]; then
781: echo Checking $file_to_fix
782: if grep _KERNEL $file_to_fix > /dev/null; then
783: true
784: else
785: echo '#ifdef _KERNEL' > /tmp/$base
786: cat $file_to_fix >> /tmp/$base
787: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
788: echo Fixed $file_to_fix
789: rm -f ${LIB}/$file
790: cp /tmp/$base ${LIB}/$file
791: chmod a+r ${LIB}/$file
792: rm -f /tmp/$base
793: fi
794: fi
795:
796: # Conditionalize all of <sys/char.h> on _KERNEL being defined.
797:
798: file=sys/char.h
799: base=`basename $file`
800: if [ -r ${LIB}/$file ]; then
801: file_to_fix=${LIB}/$file
802: else
803: if [ -r ${INPUT}/$file ]; then
804: file_to_fix=${INPUT}/$file
805: else
806: file_to_fix=""
807: fi
808: fi
809: if [ \! -z "$file_to_fix" ]; then
810: echo Checking $file_to_fix
811: if grep _KERNEL $file_to_fix > /dev/null; then
812: true
813: else
814: echo '#ifdef _KERNEL' > /tmp/$base
815: cat $file_to_fix >> /tmp/$base
816: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
817: echo Fixed $file_to_fix
818: rm -f ${LIB}/$file
819: cp /tmp/$base ${LIB}/$file
820: chmod a+r ${LIB}/$file
821: rm -f /tmp/$base
822: fi
823: fi
824:
825: # Conditionalize all of <sys/getpages.h> on _KERNEL being defined.
826:
827: file=sys/getpages.h
828: base=`basename $file`
829: if [ -r ${LIB}/$file ]; then
830: file_to_fix=${LIB}/$file
831: else
832: if [ -r ${INPUT}/$file ]; then
833: file_to_fix=${INPUT}/$file
834: else
835: file_to_fix=""
836: fi
837: fi
838: if [ \! -z "$file_to_fix" ]; then
839: echo Checking $file_to_fix
840: if grep _KERNEL $file_to_fix > /dev/null; then
841: true
842: else
843: echo '#ifdef _KERNEL' > /tmp/$base
844: cat $file_to_fix >> /tmp/$base
845: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
846: echo Fixed $file_to_fix
847: rm -f ${LIB}/$file
848: cp /tmp/$base ${LIB}/$file
849: chmod a+r ${LIB}/$file
850: rm -f /tmp/$base
851: fi
852: fi
853:
854: # Conditionalize all of <sys/map.h> on _KERNEL being defined.
855:
856: file=sys/map.h
857: base=`basename $file`
858: if [ -r ${LIB}/$file ]; then
859: file_to_fix=${LIB}/$file
860: else
861: if [ -r ${INPUT}/$file ]; then
862: file_to_fix=${INPUT}/$file
863: else
864: file_to_fix=""
865: fi
866: fi
867: if [ \! -z "$file_to_fix" ]; then
868: echo Checking $file_to_fix
869: if grep _KERNEL $file_to_fix > /dev/null; then
870: true
871: else
872: echo '#ifdef _KERNEL' > /tmp/$base
873: cat $file_to_fix >> /tmp/$base
874: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
875: echo Fixed $file_to_fix
876: rm -f ${LIB}/$file
877: cp /tmp/$base ${LIB}/$file
878: chmod a+r ${LIB}/$file
879: rm -f /tmp/$base
880: fi
881: fi
882:
883: # Conditionalize all of <sys/cmn_err.h> on _KERNEL being defined.
884:
885: file=sys/cmn_err.h
886: base=`basename $file`
887: if [ -r ${LIB}/$file ]; then
888: file_to_fix=${LIB}/$file
889: else
890: if [ -r ${INPUT}/$file ]; then
891: file_to_fix=${INPUT}/$file
892: else
893: file_to_fix=""
894: fi
895: fi
896: if [ \! -z "$file_to_fix" ]; then
897: echo Checking $file_to_fix
898: if grep _KERNEL $file_to_fix > /dev/null; then
899: true
900: else
901: echo '#ifdef _KERNEL' > /tmp/$base
902: cat $file_to_fix >> /tmp/$base
903: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
904: echo Fixed $file_to_fix
905: rm -f ${LIB}/$file
906: cp /tmp/$base ${LIB}/$file
907: chmod a+r ${LIB}/$file
908: rm -f /tmp/$base
909: fi
910: fi
911:
912: # Conditionalize all of <sys/kdebugger.h> on _KERNEL being defined.
913:
914: file=sys/kdebugger.h
915: base=`basename $file`
916: if [ -r ${LIB}/$file ]; then
917: file_to_fix=${LIB}/$file
918: else
919: if [ -r ${INPUT}/$file ]; then
920: file_to_fix=${INPUT}/$file
921: else
922: file_to_fix=""
923: fi
924: fi
925: if [ \! -z "$file_to_fix" ]; then
926: echo Checking $file_to_fix
927: if grep _KERNEL $file_to_fix > /dev/null; then
928: true
929: else
930: echo '#ifdef _KERNEL' > /tmp/$base
931: cat $file_to_fix >> /tmp/$base
932: echo '#endif /* defined(_KERNEL) */' >> /tmp/$base
933: echo Fixed $file_to_fix
934: rm -f ${LIB}/$file
935: cp /tmp/$base ${LIB}/$file
936: chmod a+r ${LIB}/$file
937: rm -f /tmp/$base
938: fi
939: fi
940:
941: # Conditionalize some of <netinet/in.h> on _KERNEL being defined.
942:
943: file=netinet/in.h
944: base=`basename $file`
945: if [ -r ${LIB}/$file ]; then
946: file_to_fix=${LIB}/$file
947: else
948: if [ -r ${INPUT}/$file ]; then
949: file_to_fix=${INPUT}/$file
950: else
951: file_to_fix=""
952: fi
953: fi
954: if [ \! -z "$file_to_fix" ]; then
955: echo Checking $file_to_fix
956: if grep _KERNEL $file_to_fix > /dev/null; then
957: true
958: else
959: sed -e '/#ifdef INKERNEL/i\
960: #ifdef _KERNEL' \
961: -e '/#endif[ ]*\/\* INKERNEL \*\//a\
962: #endif /* _KERNEL */' \
963: $file_to_fix > ${LIB}/${file}.sed
964: rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
965: echo Fixed $file_to_fix
966: fi
967: fi
968:
969: # Conditionalize some of <sys/endian.h> on __GNUC__ and __GNUG__.
970:
971: file=sys/endian.h
972: base=`basename $file`
973: if [ -r ${LIB}/$file ]; then
974: file_to_fix=${LIB}/$file
975: else
976: if [ -r ${INPUT}/$file ]; then
977: file_to_fix=${INPUT}/$file
978: else
979: file_to_fix=""
980: fi
981: fi
982: if [ \! -z "$file_to_fix" ]; then
983: echo Checking $file_to_fix
984: if grep __GNUC__ $file_to_fix > /dev/null; then
985: true
986: else
987: sed -e '/# ifdef __STDC__/i\
988: # if !defined (__GNUC__) && !defined (__GNUG__)' \
989: -e '/# include <sys\/byteorder.h>/s/ / /'\
990: -e '/# include <sys\/byteorder.h>/i\
991: # endif /* !defined (__GNUC__) && !defined (__GNUG__) */'\
992: $file_to_fix > ${LIB}/${file}.sed
993: rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
994: echo Fixed $file_to_fix
995: fi
996: fi
997:
998: # Commented out because [email protected] says we don't clearly need it
999: # and the text in types.h is not erroneous.
1000: ## In sys/types.h, don't name the enum for booleans.
1001: #
1002: #file=sys/types.h
1003: #base=`basename $file`
1004: #if [ -r ${LIB}/$file ]; then
1005: # file_to_fix=${LIB}/$file
1006: #else
1007: # if [ -r ${INPUT}/$file ]; then
1008: # file_to_fix=${INPUT}/$file
1009: # else
1010: # file_to_fix=""
1011: # fi
1012: #fi
1013: #if [ \! -z "$file_to_fix" ]; then
1014: # echo Checking $file_to_fix
1015: # if grep "enum boolean" $file_to_fix > /dev/null; then
1016: # sed -e 's/enum boolean/enum/' ${LIB}/$file > ${LIB}/${file}.sed
1017: # rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
1018: # echo Fixed $file_to_fix
1019: # else
1020: # true
1021: # fi
1022: #fi
1023:
1024: # Remove useless extern keyword from struct forward declarations in
1025: # <sys/stream.h> and <sys/strsubr.h>
1026:
1027: file=sys/stream.h
1028: base=`basename $file`
1029: if [ -r ${LIB}/$file ]; then
1030: file_to_fix=${LIB}/$file
1031: else
1032: if [ -r ${INPUT}/$file ]; then
1033: file_to_fix=${INPUT}/$file
1034: else
1035: file_to_fix=""
1036: fi
1037: fi
1038: if [ \! -z "$file_to_fix" ]; then
1039: echo Checking $file_to_fix
1040: sed -e '
1041: s/extern struct stdata;/struct stdata;/g
1042: s/extern struct strevent;/struct strevent;/g
1043: ' $file_to_fix > /tmp/$base
1044: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1045: true
1046: else
1047: echo Fixed $file_to_fix
1048: rm -f ${LIB}/$file
1049: cp /tmp/$base ${LIB}/$file
1050: chmod a+r ${LIB}/$file
1051: fi
1052: rm -f /tmp/$base
1053: fi
1054:
1055: file=sys/strsubr.h
1056: base=`basename $file`
1057: if [ -r ${LIB}/$file ]; then
1058: file_to_fix=${LIB}/$file
1059: else
1060: if [ -r ${INPUT}/$file ]; then
1061: file_to_fix=${INPUT}/$file
1062: else
1063: file_to_fix=""
1064: fi
1065: fi
1066: if [ \! -z "$file_to_fix" ]; then
1067: echo Checking $file_to_fix
1068: sed -e '
1069: s/extern struct strbuf;/struct strbuf;/g
1070: s/extern struct uio;/struct uio;/g
1071: s/extern struct thread;/struct thread;/g
1072: s/extern struct proc;/struct proc;/g
1073: ' $file_to_fix > /tmp/$base
1074: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1075: true
1076: else
1077: echo Fixed $file_to_fix
1078: rm -f ${LIB}/$file
1079: cp /tmp/$base ${LIB}/$file
1080: chmod a+r ${LIB}/$file
1081: fi
1082: rm -f /tmp/$base
1083: fi
1084:
1085: # Put storage class at start of decl, to avoid warning.
1086: file=rpc/types.h
1087: base=`basename $file`
1088: if [ -r ${LIB}/$file ]; then
1089: file_to_fix=${LIB}/$file
1090: else
1091: if [ -r ${INPUT}/$file ]; then
1092: file_to_fix=${INPUT}/$file
1093: else
1094: file_to_fix=""
1095: fi
1096: fi
1097: if [ \! -z "$file_to_fix" ]; then
1098: echo Checking $file_to_fix
1099: sed -e '
1100: s/const extern/extern const/g
1101: ' $file_to_fix > /tmp/$base
1102: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1103: true
1104: else
1105: echo Fixed $file_to_fix
1106: rm -f ${LIB}/$file
1107: cp /tmp/$base ${LIB}/$file
1108: chmod a+r ${LIB}/$file
1109: fi
1110: rm -f /tmp/$base
1111: fi
1112:
1113: # Convert functions to prototype form, and fix arg names in <sys/stat.h>.
1114:
1115: file=sys/stat.h
1116: base=`basename $file`
1117: if [ -r ${LIB}/$file ]; then
1118: file_to_fix=${LIB}/$file
1119: else
1120: if [ -r ${INPUT}/$file ]; then
1121: file_to_fix=${INPUT}/$file
1122: else
1123: file_to_fix=""
1124: fi
1125: fi
1126: if [ \! -z "$file_to_fix" ]; then
1127: echo Checking $file_to_fix
1128: cp $file_to_fix /tmp/$base
1129: chmod +w /tmp/$base
1130: sed -e '/^stat([ ]*[^c]/{
1131: N
1132: N
1133: s/(.*)\n/( /
1134: s/;\n/, /
1135: s/;$/)/
1136: }' \
1137: -e '/^lstat([ ]*[^c]/{
1138: N
1139: N
1140: s/(.*)\n/( /
1141: s/;\n/, /
1142: s/;$/)/
1143: }' \
1144: -e '/^fstat([ ]*[^i]/{
1145: N
1146: N
1147: s/(.*)\n/( /
1148: s/;\n/, /
1149: s/;$/)/
1150: }' \
1151: -e '/^mknod([ ]*[^c]/{
1152: N
1153: N
1154: N
1155: s/(.*)\n/( /
1156: s/;\n/, /g
1157: s/;$/)/
1158: }' \
1159: -e '1,$s/\([^A-Za-z]\)path\([^A-Za-z]\)/\1__path\2/g' \
1160: -e '1,$s/\([^A-Za-z]\)buf\([^A-Za-z]\)/\1__buf\2/g' \
1161: -e '1,$s/\([^A-Za-z]\)fd\([^A-Za-z]\)/\1__fd\2/g' \
1162: -e '1,$s/ret\([^u]\)/__ret\1/g' \
1163: -e '1,$s/\([^_]\)mode\([^_]\)/\1__mode\2/g' \
1164: -e '1,$s/\([^_r]\)dev\([^_]\)/\1__dev\2/g' /tmp/$base > /tmp/$base.sed
1165: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then \
1166: true
1167: else
1168: echo Fixed $file_to_fix
1169: rm -f ${LIB}/$file
1170: cp /tmp/$base.sed ${LIB}/$file
1171: chmod a+r ${LIB}/$file
1172: fi
1173: rm -f /tmp/$base /tmp/$base.sed
1174: fi
1175:
1176: # Sony NEWSOS 5.0 does not support the complete ANSI C standard.
1177:
1178: if [ -x /bin/sony ]; then
1179: if /bin/sony; then
1180:
1181: # Change <stdio.h> to not define __filbuf, __flsbuf, and __iob
1182:
1183: file=stdio.h
1184: base=`basename $file`
1185: if [ -r ${LIB}/$file ]; then
1186: file_to_fix=${LIB}/$file
1187: else
1188: if [ -r ${INPUT}/$file ]; then
1189: file_to_fix=${INPUT}/$file
1190: else
1191: file_to_fix=""
1192: fi
1193: fi
1194: if [ \! -z "$file_to_fix" ]; then
1195: echo Checking $file_to_fix
1196: cp $file_to_fix /tmp/$base
1197: chmod +w /tmp/$base
1198: sed -e '
1199: s/__filbuf/_filbuf/g
1200: s/__flsbuf/_flsbuf/g
1201: s/__iob/_iob/g
1202: ' /tmp/$base > /tmp/$base.sed
1203: mv /tmp/$base.sed /tmp/$base
1204: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
1205: true
1206: else
1207: echo Fixed $file_to_fix
1208: rm -f ${LIB}/$file
1209: cp /tmp/$base ${LIB}/$file
1210: chmod a+r ${LIB}/$file
1211: fi
1212: rm -f /tmp/$base
1213: fi
1214:
1215: # Change <ctype.h> to not define __ctype
1216:
1217: file=ctype.h
1218: base=`basename $file`
1219: if [ -r ${LIB}/$file ]; then
1220: file_to_fix=${LIB}/$file
1221: else
1222: if [ -r ${INPUT}/$file ]; then
1223: file_to_fix=${INPUT}/$file
1224: else
1225: file_to_fix=""
1226: fi
1227: fi
1228: if [ \! -z "$file_to_fix" ]; then
1229: echo Checking $file_to_fix
1230: cp $file_to_fix /tmp/$base
1231: chmod +w /tmp/$base
1232: sed -e '
1233: s/__ctype/_ctype/g
1234: ' /tmp/$base > /tmp/$base.sed
1235: mv /tmp/$base.sed /tmp/$base
1236: if cmp $file_to_fix /tmp/$base.sed >/dev/null 2>&1; then
1237: true
1238: else
1239: echo Fixed $file_to_fix
1240: rm -f ${LIB}/$file
1241: cp /tmp/$base ${LIB}/$file
1242: chmod a+r ${LIB}/$file
1243: fi
1244: rm -f /tmp/$base
1245: fi
1246: fi
1247: fi
1248:
1249: # In limits.h, put #ifndefs around things that are supposed to be defined
1250: # in float.h to avoid redefinition errors if float.h is included first.
1251: # Solaris 2.1 has this problem.
1252:
1253: file=limits.h
1254: base=`basename $file`
1255: if [ -r ${LIB}/$file ]; then
1256: file_to_fix=${LIB}/$file
1257: else
1258: if [ -r ${INPUT}/$file ]; then
1259: file_to_fix=${INPUT}/$file
1260: else
1261: file_to_fix=""
1262: fi
1263: fi
1264: if [ \! -z "$file_to_fix" ]; then
1265: echo Checking $file_to_fix
1266: sed -e '/[ ]FLT_MIN[ ]/i\
1267: #ifndef FLT_MIN'\
1268: -e '/[ ]FLT_MIN[ ]/a\
1269: #endif'\
1270: -e '/[ ]FLT_MAX[ ]/i\
1271: #ifndef FLT_MAX'\
1272: -e '/[ ]FLT_MAX[ ]/a\
1273: #endif'\
1274: -e '/[ ]FLT_DIG[ ]/i\
1275: #ifndef FLT_DIG'\
1276: -e '/[ ]FLT_DIG[ ]/a\
1277: #endif'\
1278: -e '/[ ]DBL_MIN[ ]/i\
1279: #ifndef DBL_MIN'\
1280: -e '/[ ]DBL_MIN[ ]/a\
1281: #endif'\
1282: -e '/[ ]DBL_MAX[ ]/i\
1283: #ifndef DBL_MAX'\
1284: -e '/[ ]DBL_MAX[ ]/a\
1285: #endif'\
1286: -e '/[ ]DBL_DIG[ ]/i\
1287: #ifndef DBL_DIG'\
1288: -e '/[ ]DBL_DIG[ ]/a\
1289: #endif' $file_to_fix > /tmp/$base
1290: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1291: true
1292: else
1293: echo Fixed $file_to_fix
1294: rm -f ${LIB}/$file
1295: cp /tmp/$base ${LIB}/$file
1296: chmod a+r ${LIB}/$file
1297: fi
1298: rm -f /tmp/$base
1299: fi
1300:
1301: # Completely replace <sys/varargs.h> with a file that includes gcc's
1302: # stdarg.h or varargs.h files as appropriate.
1303:
1304: file=sys/varargs.h
1305: if [ -r ${INPUT}/$file ]; then
1306: echo Replacing $file
1307: cat > ${LIB}/$file << EOF
1308: /* This file was generated by fixincludes. */
1309: #ifndef _SYS_VARARGS_H
1310: #define _SYS_VARARGS_H
1311:
1312: #ifdef __STDC__
1313: #include <stdarg.h>
1314: #else
1315: #include <varargs.h>
1316: #endif
1317:
1318: #endif /* _SYS_VARARGS_H */
1319: EOF
1320: chmod a+r ${LIB}/$file
1321: fi
1322:
1323: # In math.h, put #ifndefs around things that might be defined in a gcc
1324: # specific math-*.h file.
1325:
1326: file=math.h
1327: base=`basename $file`
1328: if [ -r ${LIB}/$file ]; then
1329: file_to_fix=${LIB}/$file
1330: else
1331: if [ -r ${INPUT}/$file ]; then
1332: file_to_fix=${INPUT}/$file
1333: else
1334: file_to_fix=""
1335: fi
1336: fi
1337: if [ \! -z "$file_to_fix" ]; then
1338: echo Checking $file_to_fix
1339: sed -e '/define[ ]HUGE_VAL[ ]/i\
1340: #ifndef HUGE_VAL'\
1341: -e '/define[ ]HUGE_VAL[ ]/a\
1342: #endif' $file_to_fix > /tmp/$base
1343: if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
1344: true
1345: else
1346: echo Fixed $file_to_fix
1347: rm -f ${LIB}/$file
1348: cp /tmp/$base ${LIB}/$file
1349: chmod a+r ${LIB}/$file
1350: fi
1351: rm -f /tmp/$base
1352: fi
1353:
1354: echo 'Removing unneeded directories:'
1355: cd $LIB
1356: files=`find . -type d -print | sort -r`
1357: for file in $files; do
1358: rmdir $LIB/$file > /dev/null 2>&1
1359: done
1360:
1361: if $LINKS; then
1362: echo 'Making internal symbolic non-directory links'
1363: cd ${INPUT}
1364: files=`find . -type l -print`
1365: for file in $files; do
1366: dest=`ls -ld $file | sed -n 's/.*-> //p'`
1367: if expr "$dest" : '[^/].*' > /dev/null; then
1368: target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
1369: if [ -f $target ]; then
1370: ln -s $dest ${LIB}/$file >/dev/null 2>&1
1371: fi
1372: fi
1373: done
1374: fi
1375:
1376: cd ${ORIG_DIR}
1377:
1378: echo 'Replacing <sys/byteorder.h>'
1379: rm -f ${LIB}/sys/byteorder.h
1380: cp ${SRCDIR}/byteorder.h ${LIB}/sys/byteorder.h
1381:
1382: exit 0
1383:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.