Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Apr 2010 21:04:36 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r206504 - stable/8/usr.bin/indent
Message-ID:  <201004122104.o3CL4a2g039920@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Mon Apr 12 21:04:35 2010
New Revision: 206504
URL: http://svn.freebsd.org/changeset/base/206504

Log:
  MFC r205989: indent(1): new option, -ta, to treat all *_t identifiers as types

Modified:
  stable/8/usr.bin/indent/args.c
  stable/8/usr.bin/indent/indent.1
  stable/8/usr.bin/indent/indent_globs.h
  stable/8/usr.bin/indent/lexi.c
Directory Properties:
  stable/8/usr.bin/indent/   (props changed)

Modified: stable/8/usr.bin/indent/args.c
==============================================================================
--- stable/8/usr.bin/indent/args.c	Mon Apr 12 20:54:56 2010	(r206503)
+++ stable/8/usr.bin/indent/args.c	Mon Apr 12 21:04:35 2010	(r206504)
@@ -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},

Modified: stable/8/usr.bin/indent/indent.1
==============================================================================
--- stable/8/usr.bin/indent/indent.1	Mon Apr 12 20:54:56 2010	(r206503)
+++ stable/8/usr.bin/indent/indent.1	Mon Apr 12 21:04:35 2010	(r206504)
@@ -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

Modified: stable/8/usr.bin/indent/indent_globs.h
==============================================================================
--- stable/8/usr.bin/indent/indent_globs.h	Mon Apr 12 20:54:56 2010	(r206503)
+++ stable/8/usr.bin/indent/indent_globs.h	Mon Apr 12 21:04:35 2010	(r206504)
@@ -204,6 +204,8 @@ int	    function_brace_split;	/* split f
 					 * 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 */
 

Modified: stable/8/usr.bin/indent/lexi.c
==============================================================================
--- stable/8/usr.bin/indent/lexi.c	Mon Apr 12 20:54:56 2010	(r206503)
+++ stable/8/usr.bin/indent/lexi.c	Mon Apr 12 21:04:35 2010	(r206504)
@@ -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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004122104.o3CL4a2g039920>