| src/tools/pgindent/indent.bsd.patch |
| |
| This patch contains several fixes to NetBSD's indent and should be |
| applied before using pgindent. |
| |
| --------------------------------------------------------------------------- |
| |
| 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 |
| *************** |
| *** 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[1000] = |
| { |
| {"switch", 1}, |
| {"case", 2}, |
| --- 93,99 ---- |
| int rwcode; |
| }; |
| |
| ! struct templ specials[16384] = |
| { |
| {"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 |
| *************** |
| *** 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(); |