📄 indent.bsd.patch
字号:
This patch contains several fixes to NetBSD's indent and should beapplied before using pgindent.---------------------------------------------------------------------------Index: README===================================================================RCS file: /cvsroot/src/usr.bin/indent/README,vretrieving revision 1.1diff -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 needsIndex: indent_globs.h===================================================================RCS file: /cvsroot/src/usr.bin/indent/indent_globs.h,vretrieving revision 1.8diff -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,vretrieving revision 1.12diff -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,vretrieving revision 1.7diff -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 debugIndex: pr_comment.c===================================================================RCS file: /cvsroot/src/usr.bin/indent/pr_comment.c,vretrieving revision 1.9diff -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();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -