From e644fc25c75e33441c0c73897fe974d2a1c31a92 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 7 Nov 2001 21:24:28 +0000
Subject: [PATCH] Prevent indenting of 'extern "C"' blocks.

---
 src/tools/pgindent/pgindent | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index faa192c94f9..913f09823df 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -61,6 +61,37 @@ do
 			if (NR >= 1)
 				print line1;
 		}' |
+# prevent indenting of code in 'extern "C"' blocks
+	awk '	BEGIN	{line1 = ""; line2 = ""; skips = 0}
+		{
+			line2 = $0;
+			if (skips > 0)
+				skips--;
+			if (line1 ~ "^extern[ 	]*\"C\"" &&
+			    line2 ~ "^{[ 	]*$")
+			{
+				# don't print first line
+				print "/* Open extern \"C\" */";
+				line2 = "";
+				skips = 2;
+			}
+			else if (line1 ~ "^#ifdef[ 	]*__cplusplus" &&
+			    line2 ~ "^}[ 	]*$")
+			{
+				print line1;
+				print "/* Close extern \"C\" */";
+				line2 = "";
+				skips = 2;
+			}
+			else
+	 			if (skips == 0 && NR >= 2)
+					print line1;
+			line1 = line2;
+		}
+		END {
+			if (NR >= 1 && skips <= 1)
+				print line1;
+		}' |
 # protect backslashes in DATA()
 	sed 's;^DATA(.*$;/*&*/;' |
 # protect wrapping in CATALOG()
@@ -1456,6 +1487,9 @@ do
 	cat /tmp/$$a |
 	sed 's;^/\*\(DATA(.*\)\*/$;\1;' |
 	sed 's;^/\*\(CATALOG(.*\)\*/$;\1;' |
+	sed 's;^/\* Open extern \"C\" \*/$;extern    "C"\
+{;' |
+	sed 's;^/\* Close extern \"C\" \*/$;};' |
 # remove tabs and retab with four spaces
 	detab -t8 -qc |
 	entab -t4 -qc |
-- 
GitLab