aboutsummaryrefslogtreecommitdiff
path: root/src/tools/pgindent/indent.bsd.patch
diff options
context:
space:
mode:
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();