OSDN Git Service

When wrapping files, guard with both the fix name and the file name
authorkorbb <korbb@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Jan 2003 21:17:01 +0000 (21:17 +0000)
committerkorbb <korbb@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 4 Jan 2003 21:17:01 +0000 (21:17 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60893 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fixinc/fixfixes.c
gcc/fixinc/tests/base/assert.h
gcc/fixinc/tests/base/math.h
gcc/fixinc/tests/base/stdio.h
gcc/fixinc/tests/base/strings.h
gcc/fixinc/tests/base/sys/mman.h

index 4fe99f7..3de1fc8 100644 (file)
@@ -1,3 +1,8 @@
+2003-01-04  Bruce Korb  <bkorb@gnu.org>
+
+       * fixinc/fixfixes.c(wrap_fix): the wrapper guard must be a function
+       of *both* the file name and the fix name.
+
 2002-01-04  John David Anglin  <dave.anglin@nrc.ca>
 
        * config.gcc (hppa*64*-*-hpux11*): Define extra_parts.  Don't use
index ad54960..9c775b5 100644 (file)
@@ -597,47 +597,44 @@ FIX_PROC_HEAD( wrap_fix )
   tSCC   z_no_wrap_pat[] = "^#if.*__need_";
   static regex_t no_wrapping_re; /* assume zeroed data */
 
-  char   z_fixname[ 64 ];
-  tCC*   pz_src  = p_fixd->fix_name;
-  tCC*   pz_name = z_fixname;
-  char*  pz_dst  = z_fixname;
-  int    do_end  = 0;
-  size_t len     = 0;
-  IGNORE_ARG(filname);
+  tCC*   pz_name = NULL;
 
   if (no_wrapping_re.allocated == 0)
     compile_re( z_no_wrap_pat, &no_wrapping_re, 0, "no-wrap pattern",
                 "wrap-fix" );
 
-  for (;;) {
-    char ch = *pz_src++;
-
-    if (ch == NUL) {
-      *pz_dst++ = ch;
-      break;
-    } else if (! ISALNUM (ch)) {
-      *pz_dst++ = '_';
-    } else {
-      *pz_dst++ = TOUPPER (ch);
-    }
-
-    if (++len >= sizeof( z_fixname )) {
-      void* p = xmalloc( len + strlen( pz_src ) + 1 );
-      memcpy( p, (void*)z_fixname, len );
-      pz_name = (tCC*)p;
-      pz_dst  = (char*)pz_name + len;
-    }
-  }
-
   /*
    *  IF we do *not* match the no-wrap re, then we have a double negative.
    *  A double negative means YES.
    */
-  if (regexec (&no_wrapping_re, text, 0, NULL, 0) != 0)
+  if (regexec( &no_wrapping_re, text, 0, NULL, 0 ) != 0)
     {
-      printf( "#ifndef FIXINC_%s_CHECK\n", pz_name );
-      printf( "#define FIXINC_%s_CHECK 1\n\n", pz_name );
-      do_end = 1;
+      /*
+       *  A single file can get wrapped more than once by different fixes.
+       *  A single fix can wrap multiple files.  Therefore, guard with
+       *  *both* the fix name and the file name.
+       */
+      size_t ln = strlen( filname ) + strlen( p_fixd->fix_name ) + 14;
+      char*  pz = xmalloc( ln );
+      pz_name = pz;
+      sprintf( pz, "FIXINC_WRAP_%s-%s", filname, p_fixd->fix_name );
+
+      for (pz += 12; 1; pz++) {
+        char ch = *pz;
+
+        if (ch == NUL)
+          break;
+
+        if (! ISALNUM( ch )) {
+          *pz = '_';
+        }
+        else {
+          *pz = TOUPPER( ch );
+        }
+      }
+
+      printf( "#ifndef %s\n", pz_name );
+      printf( "#define %s 1\n\n", pz_name );
     }
 
   if (p_fixd->patch_args[1] == (tCC*)NULL)
@@ -650,11 +647,10 @@ FIX_PROC_HEAD( wrap_fix )
       fputs( p_fixd->patch_args[2], stdout );
   }
 
-  if (do_end != 0)
-    printf( "\n#endif  /* FIXINC_%s_CHECK */\n", pz_name );
-
-  if (pz_name != z_fixname)
+  if (pz_name != NULL) {
+    printf( "\n#endif  /* %s */\n", pz_name );
     free( (void*)pz_name );
+  }
 }
 
 
index 5140e89..2642cbe 100644 (file)
@@ -7,14 +7,14 @@
     This had to be done to correct non-standard usages in the
     original, manufacturer supplied header file.  */
 
-#ifndef FIXINC_BROKEN_ASSERT_STDLIB_CHECK
-#define FIXINC_BROKEN_ASSERT_STDLIB_CHECK 1
+#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB
+#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB 1
 
 #ifdef __cplusplus
 #include <stdlib.h>
 #endif
-#ifndef FIXINC_BROKEN_ASSERT_STDIO_CHECK
-#define FIXINC_BROKEN_ASSERT_STDIO_CHECK 1
+#ifndef FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO
+#define FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO 1
 
 #include <stdio.h>
 
@@ -38,6 +38,6 @@ extern FILE* stderr;
 extern void exit ( int );
 #endif  /* BROKEN_ASSERT_STDLIB_CHECK */
 
-#endif  /* FIXINC_BROKEN_ASSERT_STDIO_CHECK */
+#endif  /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDIO */
 
-#endif  /* FIXINC_BROKEN_ASSERT_STDLIB_CHECK */
+#endif  /* FIXINC_WRAP_ASSERT_H_BROKEN_ASSERT_STDLIB */
index 292e567..dd29057 100644 (file)
@@ -7,12 +7,12 @@
     This had to be done to correct non-standard usages in the
     original, manufacturer supplied header file.  */
 
-#ifndef FIXINC_SUNOS_MATHERR_DECL_CHECK
-#define FIXINC_SUNOS_MATHERR_DECL_CHECK 1
+#ifndef FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL
+#define FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL 1
 
 struct exception;
-#ifndef FIXINC_MATH_EXCEPTION_CHECK
-#define FIXINC_MATH_EXCEPTION_CHECK 1
+#ifndef FIXINC_WRAP_MATH_H_MATH_EXCEPTION
+#define FIXINC_WRAP_MATH_H_MATH_EXCEPTION 1
 
 #ifdef __cplusplus
 #define exception __math_exception
@@ -122,6 +122,6 @@ extern double atof(const char *__nptr);
 #undef exception
 #endif
 
-#endif  /* FIXINC_MATH_EXCEPTION_CHECK */
+#endif  /* FIXINC_WRAP_MATH_H_MATH_EXCEPTION */
 
-#endif  /* FIXINC_SUNOS_MATHERR_DECL_CHECK */
+#endif  /* FIXINC_WRAP_MATH_H_SUNOS_MATHERR_DECL */
index 00d3c83..bfa929f 100644 (file)
@@ -7,8 +7,8 @@
     This had to be done to correct non-standard usages in the
     original, manufacturer supplied header file.  */
 
-#ifndef FIXINC_STDIO_STDARG_H_CHECK
-#define FIXINC_STDIO_STDARG_H_CHECK 1
+#ifndef FIXINC_WRAP_STDIO_H_STDIO_STDARG_H
+#define FIXINC_WRAP_STDIO_H_STDIO_STDARG_H 1
 
 #define __need___va_list
 #include <stdarg.h>
@@ -80,4 +80,4 @@ extern char *tempnam( const char *, const char *);
 void f (char * __restrict__ x);
 #endif  /* UNICOSMK_RESTRICT_CHECK */
 
-#endif  /* FIXINC_STDIO_STDARG_H_CHECK */
+#endif  /* FIXINC_WRAP_STDIO_H_STDIO_STDARG_H */
index 23f0d00..36ca0b4 100644 (file)
@@ -7,8 +7,8 @@
     This had to be done to correct non-standard usages in the
     original, manufacturer supplied header file.  */
 
-#ifndef FIXINC_ULTRIX_STRINGS_CHECK
-#define FIXINC_ULTRIX_STRINGS_CHECK 1
+#ifndef FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS
+#define FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS 1
 
 
 
@@ -22,4 +22,4 @@
 
 #endif  /* ULTRIX_STRINGS_CHECK */
 
-#endif  /* FIXINC_ULTRIX_STRINGS_CHECK */
+#endif  /* FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS */
index 90b10f4..8fa2fb1 100644 (file)
@@ -7,8 +7,8 @@
     This had to be done to correct non-standard usages in the
     original, manufacturer supplied header file.  */
 
-#ifndef FIXINC_CXX_UNREADY_CHECK
-#define FIXINC_CXX_UNREADY_CHECK 1
+#ifndef FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY
+#define FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY 1
 
 #ifdef __cplusplus
 extern "C" {
@@ -22,4 +22,4 @@ extern void* malloc( size_t );
 }
 #endif
 
-#endif  /* FIXINC_CXX_UNREADY_CHECK */
+#endif  /* FIXINC_WRAP_SYS_MMAN_H_CXX_UNREADY */