diff options
author | avg <avg@FreeBSD.org> | 2010-03-31 17:05:30 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2010-03-31 17:05:30 +0000 |
commit | 3bd875003c9cfb8544833da3029fc72d93c416b5 (patch) | |
tree | 6b289e0d6a757e91653bb35b31533c353c04b566 /usr.bin/indent | |
parent | 53545c03a72ae4f39a3c7357ae972c7714553462 (diff) | |
download | FreeBSD-src-3bd875003c9cfb8544833da3029fc72d93c416b5.zip FreeBSD-src-3bd875003c9cfb8544833da3029fc72d93c416b5.tar.gz |
indent(1): add a new option, -ta, to treat all *_t identifiers as types
Submitted by: Hans Petter Selasky
Discussed with: bde
MFC after: 10 days
Diffstat (limited to 'usr.bin/indent')
-rw-r--r-- | usr.bin/indent/args.c | 1 | ||||
-rw-r--r-- | usr.bin/indent/indent.1 | 4 | ||||
-rw-r--r-- | usr.bin/indent/indent_globs.h | 2 | ||||
-rw-r--r-- | usr.bin/indent/lexi.c | 12 |
4 files changed, 19 insertions, 0 deletions
diff --git a/usr.bin/indent/args.c b/usr.bin/indent/args.c index f139de5..cab0f7d 100644 --- a/usr.bin/indent/args.c +++ b/usr.bin/indent/args.c @@ -157,6 +157,7 @@ struct pro { {"sc", PRO_BOOL, true, ON, &star_comment_cont}, {"sob", PRO_BOOL, false, ON, &swallow_optional_blanklines}, {"st", PRO_SPECIAL, 0, STDIN, 0}, + {"ta", PRO_BOOL, false, ON, &auto_typedefs}, {"troff", PRO_BOOL, false, ON, &troff}, {"ut", PRO_BOOL, true, ON, &use_tabs}, {"v", PRO_BOOL, false, ON, &verbose}, diff --git a/usr.bin/indent/indent.1 b/usr.bin/indent/indent.1 index f04e13d..1a7c789 100644 --- a/usr.bin/indent/indent.1 +++ b/usr.bin/indent/indent.1 @@ -80,6 +80,7 @@ .Op Fl sob | Fl nsob .Ek .Op Fl \&st +.Op Fl \&ta .Op Fl troff .Op Fl ut | Fl nut .Op Fl v | Fl \&nv @@ -377,6 +378,9 @@ Default: Causes .Nm to take its input from stdin and put its output to stdout. +.It Fl ta +Automatically add all identifiers ending in "_t" to the list +of type keywords. .It Fl T Ns Ar typename Adds .Ar typename diff --git a/usr.bin/indent/indent_globs.h b/usr.bin/indent/indent_globs.h index 11ea239..087f41c 100644 --- a/usr.bin/indent/indent_globs.h +++ b/usr.bin/indent/indent_globs.h @@ -204,6 +204,8 @@ int function_brace_split; /* split function declaration and * brace onto separate lines */ int use_tabs; /* set true to use tabs for spacing, * false uses all spaces */ +int auto_typedefs; /* set true to recognize identifiers + * ending in "_t" like typedefs */ /* -troff font state information */ diff --git a/usr.bin/indent/lexi.c b/usr.bin/indent/lexi.c index 60fc1ae..3d415d0 100644 --- a/usr.bin/indent/lexi.c +++ b/usr.bin/indent/lexi.c @@ -249,6 +249,17 @@ lexi(void) last_code = ident; /* Remember that this is the code we will * return */ + if (auto_typedefs) { + const char *q = s_token; + /* Check if we have an "_t" in the end */ + if (q[0] && q[1] && + (strcmp(q + strlen(q) - 2, "_t") == 0)) { + ps.its_a_keyword = true; + ps.last_u_d = true; + goto found_auto_typedef; + } + } + /* * This loop will check if the token is a keyword. */ @@ -285,6 +296,7 @@ lexi(void) /* FALLTHROUGH */ case 4: /* one of the declaration keywords */ + found_auto_typedef: if (ps.p_l_follow) { ps.cast_mask |= (1 << ps.p_l_follow) & ~ps.sizeof_mask; break; /* inside parens: cast, param list or sizeof */ |