diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2002-02-24 03:02:52 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2002-02-24 03:02:52 +0000 |
commit | 39961710099c70d1e942079f61769754bb852912 (patch) | |
tree | 024b8289f10580b10acbabe34d62ac1aa6fe5079 /usr.bin/ctags | |
parent | 526c28fb445d90a04097316643a654ad37cbc00a (diff) | |
download | FreeBSD-src-39961710099c70d1e942079f61769754bb852912.zip FreeBSD-src-39961710099c70d1e942079f61769754bb852912.tar.gz |
ctags would create a corrupt tags file if the source C file used '//' style
comments such as:
// The main() function
Teach ctags about this style of commenting.
Submitted by: Eric Allman <eric@Sendmail.ORG>
MFC after: 1 week
Diffstat (limited to 'usr.bin/ctags')
-rw-r--r-- | usr.bin/ctags/C.c | 23 | ||||
-rw-r--r-- | usr.bin/ctags/ctags.h | 2 | ||||
-rw-r--r-- | usr.bin/ctags/yacc.c | 4 |
3 files changed, 16 insertions, 13 deletions
diff --git a/usr.bin/ctags/C.c b/usr.bin/ctags/C.c index b1f162d..ad79254 100644 --- a/usr.bin/ctags/C.c +++ b/usr.bin/ctags/C.c @@ -122,8 +122,8 @@ c_entries() * "foo() XX comment XX { int bar; }" */ case '/': - if (GETC(==, '*')) { - skip_comment(); + if (GETC(==, '*') || c == '/') { + skip_comment(c); continue; } (void)ungetc(c, inf); @@ -273,8 +273,8 @@ func_entry() break; case '/': /* skip comments */ - if (GETC(==, '*')) - skip_comment(); + if (GETC(==, '*') || c == '/') + skip_comment(c); break; case '(': level++; @@ -301,8 +301,8 @@ fnd: SETLINE; if (intoken(c) || c == '{') break; - if (c == '/' && GETC(==, '*')) - skip_comment(); + if (c == '/' && (GETC(==, '*') || c == '/')) + skip_comment(c); else { /* don't ever "read" '/' */ (void)ungetc(c, inf); return (NO); @@ -422,7 +422,8 @@ str_entry(c) * skip over comment */ void -skip_comment() +skip_comment(t) + int t; /* comment character */ { int c; /* character read */ int star; /* '*' flag */ @@ -434,10 +435,12 @@ skip_comment() star = YES; break; case '/': - if (star) + if (star && t == '*') return; break; case '\n': + if (t == '/') + return; SETLINE; /*FALLTHROUGH*/ default: @@ -500,8 +503,8 @@ skip_key(key) break; case '/': /* skip comments */ - if (GETC(==, '*')) { - skip_comment(); + if (GETC(==, '*') || c == '/') { + skip_comment(c); break; } (void)ungetc(c, inf); diff --git a/usr.bin/ctags/ctags.h b/usr.bin/ctags/ctags.h index 1fc948b..a778029 100644 --- a/usr.bin/ctags/ctags.h +++ b/usr.bin/ctags/ctags.h @@ -97,4 +97,4 @@ extern void l_entries __P((void)); extern void y_entries __P((void)); extern int PF_funcs __P((void)); extern void c_entries __P((void)); -extern void skip_comment __P((void)); +extern void skip_comment __P((int)); diff --git a/usr.bin/ctags/yacc.c b/usr.bin/ctags/yacc.c index 025a623..9a1d946 100644 --- a/usr.bin/ctags/yacc.c +++ b/usr.bin/ctags/yacc.c @@ -85,8 +85,8 @@ y_entries() (void)ungetc(c, inf); break; case '/': - if (GETC(==, '*')) - skip_comment(); + if (GETC(==, '*') || c == '/') + skip_comment(c); else (void)ungetc(c, inf); break; |