aboutsummaryrefslogtreecommitdiff
path: root/src/tools/pgindent/indent.bsd.patch
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2005-11-15 00:43:01 +0000
committerBruce Momjian <bruce@momjian.us>2005-11-15 00:43:01 +0000
commit02c43ffbecfc9baef7e44e27e792af2d6739dcd9 (patch)
tree076a09cf3224015721c3f8ff61ff194872f7c3f5 /src/tools/pgindent/indent.bsd.patch
parent1bdf124b94af3c24d3c3083c820804274df8262b (diff)
downloadpostgresql-02c43ffbecfc9baef7e44e27e792af2d6739dcd9.tar.gz
postgresql-02c43ffbecfc9baef7e44e27e792af2d6739dcd9.zip
Fix recent problems with BSD indent, including indenting past 80
columns, shifting comment to the right when more than 150 'else if' clauses were used, and update typedefs for 8.1.X. NetBSD patched updated, with documentation.
Diffstat (limited to 'src/tools/pgindent/indent.bsd.patch')
-rw-r--r--src/tools/pgindent/indent.bsd.patch203
1 files changed, 162 insertions, 41 deletions
diff --git a/src/tools/pgindent/indent.bsd.patch b/src/tools/pgindent/indent.bsd.patch
index 231ec2e8d0e..bb1ba73f772 100644
--- a/src/tools/pgindent/indent.bsd.patch
+++ b/src/tools/pgindent/indent.bsd.patch
@@ -1,53 +1,174 @@
-This increases the number of typedef's understood by BSD indent from 100
-to 4096. The second patch allows it to understand 0x7fU and 0LL constants.
+This patch contains several fixes to NetBSD's indent and should be
+applied before using pgindent.
---------------------------------------------------------------------------
-*** ./lexi.c.orig Mon Sep 8 17:55:47 1997
---- ./lexi.c Mon Sep 8 17:02:10 1997
+Index: README
+===================================================================
+RCS file: /cvsroot/src/usr.bin/indent/README,v
+retrieving revision 1.1
+diff -c -r1.1 README
+*** README 9 Apr 1993 12:59:06 -0000 1.1
+--- README 15 Nov 2005 00:25:43 -0000
***************
-*** 58,64 ****
- int rwcode;
+*** 1,3 ****
+--- 1,13 ----
++
++ This patch is from NetBSD current, 2005-11-14. It contains all the
++ patches need for its use in PostgreSQL.
++
++ bjm
++
++ ---------------------------------------------------------------------------
++
++
++
+ This is the C indenter, it originally came from the University of Illinois
+ via some distribution tape for PDP-11 Unix. It has subsequently been
+ hacked upon by James Gosling @ CMU. It isn't very pretty, and really needs
+Index: indent_globs.h
+===================================================================
+RCS file: /cvsroot/src/usr.bin/indent/indent_globs.h,v
+retrieving revision 1.8
+diff -c -r1.8 indent_globs.h
+*** indent_globs.h 7 Aug 2003 11:14:08 -0000 1.8
+--- indent_globs.h 15 Nov 2005 00:25:44 -0000
+***************
+*** 239,245 ****
+ scomf, /* Same line comment font */
+ bodyf; /* major body font */
+
+! #define STACK_SIZE 150
+
+ EXTERN struct parser_state {
+ int last_token;
+--- 239,249 ----
+ scomf, /* Same line comment font */
+ bodyf; /* major body font */
+
+! /*
+! * This controls the maximum number of 'else if' clauses supported.
+! * If it is exceeded, comments are placed in column 100.
+! */
+! #define STACK_SIZE 1000
+
+ EXTERN struct parser_state {
+ int last_token;
+Index: lexi.c
+===================================================================
+RCS file: /cvsroot/src/usr.bin/indent/lexi.c,v
+retrieving revision 1.12
+diff -c -r1.12 lexi.c
+*** lexi.c 7 Aug 2003 11:14:09 -0000 1.12
+--- lexi.c 15 Nov 2005 00:25:44 -0000
+***************
+*** 93,99 ****
+ int rwcode;
};
-! struct templ specials[100] =
+! struct templ specials[1000] =
{
- "switch", 1,
- "case", 2,
---- 58,64 ----
- int rwcode;
+ {"switch", 1},
+ {"case", 2},
+--- 93,99 ----
+ int rwcode;
};
-! struct templ specials[4096] =
+! struct templ specials[16384] =
{
- "switch", 1,
- "case", 2,
+ {"switch", 1},
+ {"case", 2},
+***************
+*** 622,629 ****
+ else
+ p++;
+ if (p >= specials + sizeof specials / sizeof specials[0])
+! return; /* For now, table overflows are silently
+! * ignored */
+ p->rwd = key;
+ p->rwcode = val;
+ p[1].rwd = 0;
+--- 622,632 ----
+ else
+ p++;
+ if (p >= specials + sizeof specials / sizeof specials[0])
+! {
+! fprintf(stderr, "indent: typedef table overflow\n");
+! exit(1);
+! }
+!
+ p->rwd = key;
+ p->rwcode = val;
+ p[1].rwd = 0;
+Index: parse.c
+===================================================================
+RCS file: /cvsroot/src/usr.bin/indent/parse.c,v
+retrieving revision 1.7
+diff -c -r1.7 parse.c
+*** parse.c 7 Aug 2003 11:14:09 -0000 1.7
+--- parse.c 15 Nov 2005 00:25:44 -0000
+***************
+*** 231,236 ****
+--- 231,241 ----
+
+ } /* end of switch */
+
++ if (ps.tos >= STACK_SIZE) {
++ fprintf(stderr, "indent: stack size overflow\n");
++ exit(1);
++ }
++
+ reduce(); /* see if any reduction can be done */
+
+ #ifdef debug
+Index: pr_comment.c
+===================================================================
+RCS file: /cvsroot/src/usr.bin/indent/pr_comment.c,v
+retrieving revision 1.9
+diff -c -r1.9 pr_comment.c
+*** pr_comment.c 7 Aug 2003 11:14:09 -0000 1.9
+--- pr_comment.c 15 Nov 2005 00:25:44 -0000
+***************
+*** 148,154 ****
+ ps.box_com = true;
+ ps.com_col = 1;
+ } else {
+! if (*buf_ptr == '-' || *buf_ptr == '*' || *buf_ptr == '\n') {
+ ps.box_com = true; /* a comment with a '-', '*'
+ * or newline immediately
+ * after the start comment is
+--- 148,158 ----
+ ps.box_com = true;
+ ps.com_col = 1;
+ } else {
+! /*
+! * Don't process '\n' or every comment is treated as a
+! * block comment, meaning there is no wrapping.
+! */
+! if (*buf_ptr == '-' || *buf_ptr == '*') {
+ ps.box_com = true; /* a comment with a '-', '*'
+ * or newline immediately
+ * after the start comment is
***************
-*** 186,192 ****
- *e_token++ = *buf_ptr++;
- }
- }
-! if (*buf_ptr == 'L' || *buf_ptr == 'l')
- *e_token++ = *buf_ptr++;
- }
- else
---- 186,203 ----
- *e_token++ = *buf_ptr++;
- }
- }
-! if (*buf_ptr == 'F' || *buf_ptr == 'f') {
-! /* float constant */
-! *e_token++ = *buf_ptr++;
-! } else {
-! /* integer constant (U, L, UL, LL, ULL) */
-! if (*buf_ptr == 'U' || *buf_ptr == 'u')
-! *e_token++ = *buf_ptr++;
-! if (*buf_ptr == 'L' || *buf_ptr == 'l')
-! *e_token++ = *buf_ptr++;
-! if (*buf_ptr == 'L' || *buf_ptr == 'l')
-! *e_token++ = *buf_ptr++;
-! }
- }
- else
- while (chartype[*buf_ptr] == alphanum) { /* copy it over */
+*** 328,333 ****
+--- 332,350 ----
+ goto end_of_comment;
+ }
+ } while (*buf_ptr == ' ' || *buf_ptr == '\t');
++
++ /*
++ * If there is a blank comment line, we need to prefix
++ * the line with the same three spaces that "/* " takes up.
++ * Without this code, blank stared lines in comments have
++ * three too-many characters on the line when wrapped.
++ */
++ if (s_com == e_com) {
++ *e_com++ = ' '; /* add blanks for continuation */
++ *e_com++ = ' ';
++ *e_com++ = ' ';
++ now_col += 3;
++ }
+ } else
+ if (++buf_ptr >= buf_end)
+ fill_buffer();