diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.c b/contrib/fuzzystrmatch/fuzzystrmatch.c
index 4a2d3f932e7b594aa2081a8941bdbd988e33f012..d6ec0f5c30aba23f3eae8804f26b82612ea2ced5 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.c
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.c
@@ -280,9 +280,9 @@ char Lookahead(char * word, int how_far) {
 
 
 /* phonize one letter */
-#define Phonize(c)	{(*phoned_word)[p_idx++] = c;}
+#define Phonize(c)	do {(*phoned_word)[p_idx++] = c;} while (0)
 /* Slap a null character on the end of the phoned word */
-#define End_Phoned_Word	{(*phoned_word)[p_idx] = '\0';}
+#define End_Phoned_Word	do {(*phoned_word)[p_idx] = '\0';} while (0)
 /* How long is the phoned word? */
 #define Phone_Len	(p_idx)
 
diff --git a/contrib/pgcrypto/md5.c b/contrib/pgcrypto/md5.c
index 3ae9d099824839fcfb4281441befac379a745b20..d022d61627fe380ecafe3a0cee956885279d4268 100644
--- a/contrib/pgcrypto/md5.c
+++ b/contrib/pgcrypto/md5.c
@@ -1,4 +1,4 @@
-/*	$Id: md5.c,v 1.6 2001/08/21 00:42:41 momjian Exp $	*/
+/*	$Id: md5.c,v 1.7 2001/10/25 01:29:37 momjian Exp $	*/
 /*	   $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $	   */
 
 /*
@@ -41,29 +41,33 @@
 #define H(X, Y, Z) ((X) ^ (Y) ^ (Z))
 #define I(X, Y, Z) ((Y) ^ ((X) | (~Z)))
 
-#define ROUND1(a, b, c, d, k, s, i) { \
+#define ROUND1(a, b, c, d, k, s, i) \
+do { \
 	(a) = (a) + F((b), (c), (d)) + X[(k)] + T[(i)]; \
 	(a) = SHIFT((a), (s)); \
 	(a) = (b) + (a); \
-}
+} while (0)
 
-#define ROUND2(a, b, c, d, k, s, i) { \
+#define ROUND2(a, b, c, d, k, s, i) \
+do { \
 	(a) = (a) + G((b), (c), (d)) + X[(k)] + T[(i)]; \
 	(a) = SHIFT((a), (s)); \
 	(a) = (b) + (a); \
-}
+} while (0)
 
-#define ROUND3(a, b, c, d, k, s, i) { \
+#define ROUND3(a, b, c, d, k, s, i) \
+do { \
 	(a) = (a) + H((b), (c), (d)) + X[(k)] + T[(i)]; \
 	(a) = SHIFT((a), (s)); \
 	(a) = (b) + (a); \
-}
+} while (0)
 
-#define ROUND4(a, b, c, d, k, s, i) { \
+#define ROUND4(a, b, c, d, k, s, i) \
+do { \
 	(a) = (a) + I((b), (c), (d)) + X[(k)] + T[(i)]; \
 	(a) = SHIFT((a), (s)); \
 	(a) = (b) + (a); \
-}
+} while (0)
 
 #define Sa	 7
 #define Sb	12
diff --git a/contrib/pgcrypto/sha1.c b/contrib/pgcrypto/sha1.c
index 98ad552182f29ebfb1457b12d37da3cc2ce6f848..20c6230540bbe835478182a752c6e4939ad6b7ee 100644
--- a/contrib/pgcrypto/sha1.c
+++ b/contrib/pgcrypto/sha1.c
@@ -1,4 +1,4 @@
-/*	$Id: sha1.c,v 1.6 2001/08/21 00:42:41 momjian Exp $ */
+/*	$Id: sha1.c,v 1.7 2001/10/25 01:29:37 momjian Exp $ */
 /*	   $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $    */
 
 /*
@@ -65,22 +65,24 @@ static uint32 _K[] = {0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6};
 #define BCOUNT	(ctxt->c.b64[0] / 8)
 #define W(n)	(ctxt->m.b32[(n)])
 
-#define PUTBYTE(x)	{ \
+#define PUTBYTE(x) \
+do { \
 	ctxt->m.b8[(COUNT % 64)] = (x);		\
 	COUNT++;				\
 	COUNT %= 64;				\
 	ctxt->c.b64[0] += 8;			\
 	if (COUNT % 64 == 0)			\
 		sha1_step(ctxt);		\
-	 }
+} while (0)
 
-#define PUTPAD(x)	{ \
+#define PUTPAD(x) \
+do { \
 	ctxt->m.b8[(COUNT % 64)] = (x);		\
 	COUNT++;				\
 	COUNT %= 64;				\
 	if (COUNT % 64 == 0)			\
 		sha1_step(ctxt);		\
-	 }
+} while (0)
 
 static void sha1_step(struct sha1_ctxt *);
 
diff --git a/contrib/tsearch/query.c b/contrib/tsearch/query.c
index fe312ef0f52aa8588bcb8358fd689b41db57038f..238432ea43b94df6d0d70a1629c854ebcf106035 100644
--- a/contrib/tsearch/query.c
+++ b/contrib/tsearch/query.c
@@ -555,7 +555,9 @@ typedef struct {
 	int4 buflen;
 } INFIX;
 
-#define RESIZEBUF(inf,addsize) while( ( inf->cur - inf->buf ) + addsize + 1 >= inf->buflen ) { \
+#define RESIZEBUF(inf,addsize) \
+while( ( inf->cur - inf->buf ) + addsize + 1 >= inf->buflen ) \
+{ \
 	int4 len = inf->cur - inf->buf; \
 	inf->buflen *= 2; \
 	inf->buf = (char*) repalloc( (void*)inf->buf, inf->buflen ); \
diff --git a/contrib/tsearch/txtidx.c b/contrib/tsearch/txtidx.c
index 39a64437c5fd32d5e40d9cff80ee9c8b9290588b..e1abd54d3bd214a77d3b30997416428f0bed8d24 100644
--- a/contrib/tsearch/txtidx.c
+++ b/contrib/tsearch/txtidx.c
@@ -88,12 +88,16 @@ uniqueentry( WordEntry* a, int4 l, char *buf, int4 *outbuflen ) {
 #define WAITNEXTCHAR	3
 #define WAITENDCMPLX	4
 
-#define RESIZEPRSBUF if ( state->curpos - state->word == state->len ) { \
+#define RESIZEPRSBUF \
+do { \
+	if ( state->curpos - state->word == state->len ) \
+	{ \
         int4 clen = state->curpos - state->word; \
         state->len *= 2; \
         state->word = (char*)repalloc( (void*)state->word, state->len ); \
         state->curpos = state->word + clen; \
-}
+    } \
+} while (0)
 
 int4
 gettoken_txtidx( TI_IN_STATE *state ) {
diff --git a/src/backend/port/dynloader/bsdi.h b/src/backend/port/dynloader/bsdi.h
index 834dff0d70554081f831188a1fe592deadd78d78..2ea466317cccc600d6483f343a5985cd9cc9dddc 100644
--- a/src/backend/port/dynloader/bsdi.h
+++ b/src/backend/port/dynloader/bsdi.h
@@ -27,7 +27,11 @@
 #else /* not HAVE_DLOPEN */
 
 #define pg_dlsym(handle, funcname)	  ((PGFunction) dld_get_func((funcname)))
-#define pg_dlclose(handle)			  ({ dld_unlink_by_file(handle, 1); free(handle); })
+#define pg_dlclose(handle) \
+do { \
+	dld_unlink_by_file(handle, 1); \
+	free(handle); \
+} while (0)
 
 #endif /* not HAVE_DLOPEN */
 
diff --git a/src/backend/port/dynloader/linux.h b/src/backend/port/dynloader/linux.h
index d6873763b4b42941c5bdfd12a1c87786267dfa16..290771cfc052cdc0856318d4c4677dd97f4f276b 100644
--- a/src/backend/port/dynloader/linux.h
+++ b/src/backend/port/dynloader/linux.h
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: linux.h,v 1.12 2001/05/14 21:45:53 petere Exp $
+ * $Id: linux.h,v 1.13 2001/10/25 01:29:37 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,10 +23,15 @@
 
 #ifndef HAVE_DLD_H
 #define pg_dlsym(handle, funcname)		(NULL)
-#define pg_dlclose(handle)			   ({})
+#define pg_dlclose(handle)			   {}
 #else
 #define pg_dlsym(handle, funcname)		((PGFunction) dld_get_func((funcname)))
-#define pg_dlclose(handle)			   ({ dld_unlink_by_file(handle, 1); free(handle); })
+#define pg_dlclose(handle) \
+do { \
+	dld_unlink_by_file(handle, 1); \
+	free(handle); \
+} while (0)
+
 #endif
 
 #else /* HAVE_DLOPEN */
diff --git a/src/backend/regex/engine.c b/src/backend/regex/engine.c
index 8bf0ee68954102fce720e985f6e29af5eded944e..2d7f4ee92d07391743e26dfa3a05d188a417c7e8 100644
--- a/src/backend/regex/engine.c
+++ b/src/backend/regex/engine.c
@@ -129,7 +129,12 @@ static int	pg_isprint(int c);
 #ifdef REDEBUG
 #define SP(t, s, c)		print(m, t, s, c, stdout)
 #define AT(t, p1, p2, s1, s2)	at(m, t, p1, p2, s1, s2)
-#define NOTE(str)		{ if (m->eflags&REG_TRACE) printf("=%s\n", (str)); }
+#define NOTE(str) \
+do { \
+	if (m->eflags&REG_TRACE) \
+		printf("=%s\n", (str)); \
+} while (0)
+
 #else
 #define SP(t, s, c)				/* nothing */
 #define AT(t, p1, p2, s1, s2)	/* nothing */
diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c
index cb52ad9afe472440bbd1570e17fbc1d70f19b6e4..b1733a9d40d3f96ee3381389b30ce07f9ad3d97b 100644
--- a/src/backend/regex/regexec.c
+++ b/src/backend/regex/regexec.c
@@ -114,10 +114,19 @@ static int	nope = 0;			/* for use in asserts; shuts lint up */
 #define ASSIGN(d, s)	memcpy(d, s, m->g->nstates)
 #define EQ(a, b)		(memcmp(a, b, m->g->nstates) == 0)
 #define STATEVARS		int vn; char *space
-#define STATESETUP(m, nv)		{ (m)->space = malloc((nv)*(m)->g->nstates); \
-								if ((m)->space == NULL) return(REG_ESPACE); \
-								(m)->vn = 0; }
-#define STATETEARDOWN(m)		{ free((m)->space); }
+#define STATESETUP(m, nv) \
+do { \
+	(m)->space = malloc((nv)*(m)->g->nstates); \
+	if ((m)->space == NULL) \
+		return(REG_ESPACE); \
+	(m)->vn = 0; \
+} while (0)
+
+#define STATETEARDOWN(m) \
+do { \
+	free((m)->space); \
+} while (0)
+	
 #define SETUP(v)		((v) = &m->space[m->vn++ * m->g->nstates])
 #define onestate		int
 #define INIT(o, n)		((o) = (n))
diff --git a/src/backend/utils/adt/pg_lzcompress.c b/src/backend/utils/adt/pg_lzcompress.c
index d92d969d40e7ee40534ced2bf9409947fea0a0dd..5c6cc6e1e4a244afbf37960c6f3e46fd22e13a65 100644
--- a/src/backend/utils/adt/pg_lzcompress.c
+++ b/src/backend/utils/adt/pg_lzcompress.c
@@ -1,7 +1,7 @@
 /* ----------
  * pg_lzcompress.c -
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.11 2001/03/22 06:16:17 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.12 2001/10/25 01:29:37 momjian Exp $
  *
  *		This is an implementation of LZ compression for PostgreSQL.
  *		It uses a simple history table and generates 2-3 byte tags
@@ -283,7 +283,8 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
  *		Adds a new entry to the history table.
  * ----------
  */
-#define pglz_hist_add(_hs,_he,_hn,_s,_e) {									\
+#define pglz_hist_add(_hs,_he,_hn,_s,_e) \
+do {									\
 			int __hindex = pglz_hist_idx((_s),(_e));						\
 			if ((_he)[(_hn)].prev == NULL) {								\
 				(_hs)[__hindex] = (_he)[(_hn)].next;						\
@@ -303,7 +304,7 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
 			if (++(_hn) >= PGLZ_HISTORY_SIZE) {								\
 				(_hn) = 0;													\
 			}																\
-		}
+} while (0)
 
 
 /* ----------
@@ -312,7 +313,8 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
  *		Outputs the last and allocates a new control byte if needed.
  * ----------
  */
-#define pglz_out_ctrl(__ctrlp,__ctrlb,__ctrl,__buf) {						\
+#define pglz_out_ctrl(__ctrlp,__ctrlb,__ctrl,__buf) \
+do { \
 	if ((__ctrl & 0xff) == 0)												\
 	{																		\
 		*__ctrlp = __ctrlb;													\
@@ -320,7 +322,7 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
 		__ctrlb = 0;														\
 		__ctrl = 1;															\
 	}																		\
-}
+} while (0)
 
 
 /* ----------
@@ -330,11 +332,12 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
  *		appropriate control bit.
  * ----------
  */
-#define pglz_out_literal(_ctrlp,_ctrlb,_ctrl,_buf,_byte) {					\
+#define pglz_out_literal(_ctrlp,_ctrlb,_ctrl,_buf,_byte) \
+do { \
 	pglz_out_ctrl(_ctrlp,_ctrlb,_ctrl,_buf);								\
 	*_buf++ = (unsigned char)(_byte);										\
 	_ctrl <<= 1;															\
-}
+} while (0)
 
 
 /* ----------
@@ -345,7 +348,8 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
  *		appropriate control bit.
  * ----------
  */
-#define pglz_out_tag(_ctrlp,_ctrlb,_ctrl,_buf,_len,_off) {					\
+#define pglz_out_tag(_ctrlp,_ctrlb,_ctrl,_buf,_len,_off) \
+do { \
 	pglz_out_ctrl(_ctrlp,_ctrlb,_ctrl,_buf);								\
 	_ctrlb |= _ctrl;														\
 	_ctrl <<= 1;															\
@@ -360,7 +364,7 @@ static PGLZ_HistEntry hist_entries[PGLZ_HISTORY_SIZE];
 		_buf[1] = (unsigned char)((_off) & 0xff);							\
 		_buf += 2;															\
 	}																		\
-}
+} while (0)
 
 
 /* ----------
diff --git a/src/interfaces/odbc/convert.c b/src/interfaces/odbc/convert.c
index 6210d030bf09da8e6531ce3e227475b364051c89..2afc079dfd83bf616bbce524cdedc73b837b5e7e 100644
--- a/src/interfaces/odbc/convert.c
+++ b/src/interfaces/odbc/convert.c
@@ -817,7 +817,10 @@ do { \
  *	Terminate the stmt_with_params string with NULL.
  *----------
  */
-#define	CVT_TERMINATE { new_statement[npos] = '\0'; }
+#define	CVT_TERMINATE \
+do { \
+	new_statement[npos] = '\0'; \
+} while (0)
 
 /*----------
  *	Append a data.
@@ -1434,7 +1437,7 @@ copy_statement_with_parameters(StatementClass *stmt)
 				/* error */
 				stmt->errormsg = "Unrecognized C_parameter type in copy_statement_with_parameters";
 				stmt->errornumber = STMT_NOT_IMPLEMENTED_ERROR;
-				CVT_TERMINATE	/* just in case */
+				CVT_TERMINATE;	/* just in case */
 				SC_log_error(func, "", stmt);
 				return SQL_ERROR;
 		}
@@ -1684,7 +1687,7 @@ copy_statement_with_parameters(StatementClass *stmt)
 	}							/* end, for */
 
 	/* make sure new_statement is always null-terminated */
-	CVT_TERMINATE
+	CVT_TERMINATE;
 
 	if (conn->DriverToDataSource != NULL)
 	{
diff --git a/src/interfaces/odbc/iodbc.h b/src/interfaces/odbc/iodbc.h
index 21091de90f93dc95a308d3c1bf7fbb62bcc569bb..99ed5520550b1524afee1dd6b984e165f69310b4 100644
--- a/src/interfaces/odbc/iodbc.h
+++ b/src/interfaces/odbc/iodbc.h
@@ -8,7 +8,11 @@
 #include  <sys/types.h>
 
 #define   MEM_ALLOC(size)	(malloc((size_t)(size)))
-#define   MEM_FREE(ptr)		{if(ptr) free(ptr);}
+#define   MEM_FREE(ptr)	\
+do { \
+	if(ptr) \
+		free(ptr); \
+} while (0)
 
 #define   STRCPY(t, s)		(strcpy((char*)(t), (char*)(s)))
 #define   STRNCPY(t,s,n)	(strncpy((char*)(t), (char*)(s), (size_t)(n)))
diff --git a/src/tools/find_baddefs b/src/tools/find_baddefs
index 07f6fa2c614bcee85f2f8ea993709724c76d747f..8a12b59becf14fa8f622c8fd23ef4084a4ab9c84 100755
--- a/src/tools/find_baddefs
+++ b/src/tools/find_baddefs
@@ -14,6 +14,7 @@ do
 					was_define = "Y"
 				  else
 					was_define = "N"
-				}' $FILE
+				}' "$FILE"
+	grep -on '^#define.*{' "$FILE" | grep -v 'do[ 	]*{'
 done