diff options
Diffstat (limited to 'src/tools/pgindent/indent.bsd.patch')
-rw-r--r-- | src/tools/pgindent/indent.bsd.patch | 203 |
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(); |