]> granicus.if.org Git - postgresql/commitdiff
Prevent indenting of 'extern "C"' blocks.
authorBruce Momjian <bruce@momjian.us>
Wed, 7 Nov 2001 21:24:28 +0000 (21:24 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 7 Nov 2001 21:24:28 +0000 (21:24 +0000)
src/tools/pgindent/pgindent

index faa192c94f9064b209b3a20c9da1a93e1180cc56..913f09823dff73316ffde9feebc62f0b8fcac006 100755 (executable)
@@ -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 |