OSDN Git Service

Add missing "do { ... } while(0)" in ODBC macros and add find_baddefs
authorBruce Momjian <bruce@momjian.us>
Thu, 25 Oct 2001 00:50:50 +0000 (00:50 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 25 Oct 2001 00:50:50 +0000 (00:50 +0000)
script.

src/interfaces/odbc/convert.c
src/tools/find_baddefs [new file with mode: 0755]

index 3e7d241..6210d03 100644 (file)
@@ -796,7 +796,7 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
  *----------
  */
 #define        CVT_INIT(size) \
-{ \
+do { \
        if (stmt->stmt_with_params) \
                free(stmt->stmt_with_params); \
        if (stmt->stmt_size_limit > 0) \
@@ -811,7 +811,8 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
        stmt->stmt_with_params = new_statement; \
        npos = 0; \
        new_statement[0] = '\0'; \
-}
+} while (0)
+
 /*----------
  *     Terminate the stmt_with_params string with NULL.
  *----------
@@ -823,55 +824,59 @@ static int enlarge_statement(StatementClass *stmt, unsigned int newsize)
  *----------
  */
 #define        CVT_APPEND_DATA(s, len) \
-{ \
+do { \
        unsigned int    newpos = npos + len; \
        ENLARGE_NEWSTATEMENT(newpos) \
        memcpy(&new_statement[npos], s, len); \
        npos = newpos; \
        new_statement[npos] = '\0'; \
-}
+} while (0)
+
 /*----------
  *     Append a string.
  *----------
  */
 #define        CVT_APPEND_STR(s) \
-{ \
+do { \
        unsigned int len = strlen(s); \
        CVT_APPEND_DATA(s, len); \
-}
+} while (0)
+
 /*----------
  *     Append a char.  
  *----------
  */
 #define        CVT_APPEND_CHAR(c) \
-{ \
+do { \
        ENLARGE_NEWSTATEMENT(npos + 1); \
        new_statement[npos++] = c; \
-}
+} while (0)
+
 /*----------
  *     Append a binary data.
  *     Newly reqeuired size may be overestimated currently. 
  *----------
  */
 #define        CVT_APPEND_BINARY(buf, used) \
-{ \
+do { \
        unsigned int    newlimit = npos + 5 * used; \
        ENLARGE_NEWSTATEMENT(newlimit); \
        npos += convert_to_pgbinary(buf, &new_statement[npos], used); \
-}
+} while (0)
+
 /*----------
  *
  *----------
  */
 #define        CVT_SPECIAL_CHARS(buf, used) \
-{ \
+do { \
        int     cnvlen = convert_special_chars(buf, NULL, used); \
        unsigned int    newlimit = npos + cnvlen; \
 \
        ENLARGE_NEWSTATEMENT(newlimit); \
        convert_special_chars(buf, &new_statement[npos], used); \
        npos += cnvlen; \
-}
+} while (0)
 
 /*----------
  *     Check if the statement is       
diff --git a/src/tools/find_baddefs b/src/tools/find_baddefs
new file mode 100755 (executable)
index 0000000..07f6fa2
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+# This script attempts to find bad ifdef's, i.e. ifdef's that use braces
+# but not the do { ... } while (0) syntax
+#
+# This is useful for running before pgindent
+
+for FILE
+do
+       awk '   BEGIN           {was_define = "N"}
+                               { if (was_define == "Y" &&
+                                     $0 ~ /^{/)
+                                       printf "%s  %d\n", FILENAME, NR
+                                 if ($0 ~ /^#define/)
+                                       was_define = "Y"
+                                 else
+                                       was_define = "N"
+                               }' $FILE
+done
+