Add missing "do { ... } while(0)" in ODBC macros and add find_baddefs
authorBruce Momjian
Thu, 25 Oct 2001 00:50:50 +0000 (00:50 +0000)
committerBruce Momjian
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 3e7d24169c4a25424f0c2dac9bacb52777be134e..6210d030bf09da8e6531ce3e227475b364051c89 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
+