📄 fixincludes
字号:
dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# Turning // comments into /* */ comments trashes this IRIX 4.0.1# header file, which embeds // comments inside multi-line /* */# comments. If this looks like the IRIX header file, we refix it by# just throwing away the // comments.file=fam.hif [ -r ${LIB}/$file ]; then if egrep indigo.esd ${LIB}/$file > /dev/null; then echo Fixing $file, overeager sed script rm ${LIB}/$file sed -e 's|//.*$||g' $file > ${LIB}/$file chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/null fifi# There is a similar problem with the VxWorks drv/netif/if_med.h file.file=drv/netif/if_med.hif [ -r ${LIB}/$file ]; then if egrep 'Wind River' ${LIB}/$file > /dev/null; then echo Fixing $file, overeager sed script rm ${LIB}/$file sed -e 's|//.*$||g' $file > ${LIB}/$file chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/null fifi# And also with the HP-UX 10 sys/pci.h filefile=sys/pci.hif [ -r ${LIB}/$file ]; then if egrep 'System Private Structures' ${LIB}/$file > /dev/null; then echo Fixing $file, overeager sed script rm ${LIB}/$file sed -e 's|//.*$||g' $file > ${LIB}/$file chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/null fifi# Some IRIX header files contains the string "//"for file in elf_abi.h elf.h; do if [ -r ${LIB}/$file ]; then echo Fixing $file, overeager sed script sed -e 's|"/\*"\*/|"//"|' ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fi fidone# IRIX 4.0.5 <rpc/auth.h> uses struct sockaddr in prototype without# previous definition.file=rpc/auth.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/rpc 2>/dev/null cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then echo Fixing $file, undefined type sed -e '/authdes_create.*struct sockaddr/i\struct sockaddr;' \ ${LIB}/$file > ${LIB}/$file.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# IRIX 4.0.5 <rpc/xdr.h> uses struct __file_s in prototype without previous# definition.file=rpc/xdr.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/rpc 2>/dev/null cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then echo Fixing $file, undefined type sed -e '/xdrstdio_create.*struct __file_s/i\struct __file_s;' \ ${LIB}/$file > ${LIB}/$file.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# Same problem with a file from SunOS 4.1.3 : a header file containing# the string "//" embedded in "/**/"file=sbusdev/audiovar.hif [ -r ${LIB}/$file ]; then echo Fixing $file, overeager sed script rm ${LIB}/$file sed -e 's|//.*$||g' $file > ${LIB}/$file chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfi# Fix non-ANSI memcpy declaration that conflicts with gcc's builtin# declaration on Sun OS 4.x. We must only fix this on Sun OS 4.x, because# many other systems have similar text but correct versions of the file.# To ensure only Sun's is fixed, we grep for a likely unique string.# Fix also on sysV68 R3V7.1 (head/memory.h\t50.1\t )file=memory.hif [ -r $file ] && egrep '/\* @\(#\)(head/memory.h 50.1 |memory\.h 1\.[2-4] 8./../.. SMI; from S5R2 1\.2 )\*/' $file > /dev/null; then if [ ! -r ${LIB}/$file ]; then cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/null fi if [ -r ${LIB}/$file ]; then echo Replacing $file cat > ${LIB}/$file << EOF/* This file was generated by fixincludes */#ifndef __memory_h__#define __memory_h__#ifdef __STDC__extern void *memccpy();extern void *memchr();extern void *memcpy();extern void *memset();#elseextern char *memccpy();extern char *memchr();extern char *memcpy();extern char *memset();#endif /* __STDC__ */extern int memcmp();#endif /* __memory_h__ */EOF fifi# Fix return type of fread and fwrite on sysV68file=stdio.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then echo Fixing $file, fread and fwrite return type sed -e 's/^\(extern int fclose(), fflush()\), \(fread(), fwrite()\)\(.*\)$/extern unsigned int \2;\\1\3/' \ ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# parameters not const on DECstation Ultrix V4.0 and OSF/1.file=stdio.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then echo Fixing $file, non-const arg sed -e 's@perror( char \*__s );@perror( const char *__s );@' \ -e 's@fputs( char \*__s,@fputs( const char *__s,@' \ -e 's@fopen( char \*__filename, char \*__type );@fopen( const char *__filename, const char *__type );@' \ -e 's@fwrite( void \*__ptr,@fwrite( const void *__ptr,@' \ -e 's@fscanf( FILE \*__stream, char \*__format,@fscanf( FILE *__stream, const char *__format,@' \ -e 's@scanf( char \*__format,@scanf( const char *__format,@' \ -e 's@sscanf( char \*__s, char \*__format,@sscanf( const char *__s, const char *__format,@' \ -e 's@popen(char \*, char \*);@popen(const char *, const char *);@' \ -e 's@tempnam(char\*,char\*);@tempnam(const char*,const char*);@' \ ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# parameters conflict with C++ new on rs/6000 for file in stdio.h unistd.h ; do if [ -r $file ] && [ ! -r ${LIB}/$file ]; then cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null fi if [ -r ${LIB}/$file ]; then echo Fixing $file, parameter name conflicts sed -e 's@rename(const char \*old, const char \*new)@rename(const char *_old, const char *_new)@' \ ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fi fidone# function class(double x) conflicts with C++ keyword on rs/6000 file=math.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then if grep '[^a-zA-Z_]class[(]' ${LIB}/$file >/dev/null; then echo Fixing $file sed -e '/class[(]/i\#ifndef __cplusplus' \ -e '/class[(]/a\#endif' ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fi fifi# Wrong fchmod prototype on RS/6000.file=sys/stat.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/sys 2>/dev/null cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then echo Fixing $file, fchmod prototype sed -e 's/fchmod(char \*/fchmod(int/' \ ${LIB}/$file > ${LIB}/$file.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# There are several name conflicts with C++ reserved words in X11# header files. These are fixed in some versions, so don't do the# fixes if we find __cplusplus in the file. These were found on the# RS/6000.# class in X11/ShellP.hfile=X11/ShellP.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/sys 2>/dev/null cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then if grep __cplusplus ${LIB}/$file >/dev/null 2>/dev/null; then true; else echo Fixing $file, field class sed -e '/char [*]class;/i\#ifdef __cplusplus\ char *c_class;\#else' \ -e '/char [*]class;/a\#endif' ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file fi if cmp $file ${LIB}/$file >/dev/null 2>&1; then rm -f ${LIB}/$file else # Find any include directives that use "file". for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' ${LIB}/$file | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do dir=`echo $file | sed -e s'|/[^/]*$||'` required="$required ${INPUT} $dir/$include ${LIB}/$dir/$include" done fifi# new in Xm/Traversal.hfile=Xm/Traversal.hif [ -r $file ] && [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/sys 2>/dev/null cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file" chmod +w ${LIB}/$file 2>/dev/null chmod a+r ${LIB}/$file 2>/dev/nullfiif [ -r ${LIB}/$file ]; then if grep __cplusplus ${LIB}/$file >/dev/null 2>/dev/null; then true; else echo Fixing $file, uses of new sed -e '/Widget old, new;/i\#ifdef __cplusplus\ Widget old, c_new;\#else' \ -e '/Widget old, new;/a\#endif' \ -e 's/Widget new,/Widget c_new,/g' ${LIB}/$file > ${LIB}/${file}.sed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -