Author: avg
Date: Wed Mar 31 17:05:30 2010
New Revision: 205989
URL: http://svn.freebsd.org/changeset/base/205989

Log:
  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

Modified:
  head/usr.bin/indent/args.c
  head/usr.bin/indent/indent.1
  head/usr.bin/indent/indent_globs.h
  head/usr.bin/indent/lexi.c

Modified: head/usr.bin/indent/args.c
==============================================================================
--- head/usr.bin/indent/args.c  Wed Mar 31 16:55:47 2010        (r205988)
+++ head/usr.bin/indent/args.c  Wed Mar 31 17:05:30 2010        (r205989)
@@ -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: head/usr.bin/indent/indent.1
==============================================================================
--- head/usr.bin/indent/indent.1        Wed Mar 31 16:55:47 2010        
(r205988)
+++ head/usr.bin/indent/indent.1        Wed Mar 31 17:05:30 2010        
(r205989)
@@ -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: head/usr.bin/indent/indent_globs.h
==============================================================================
--- head/usr.bin/indent/indent_globs.h  Wed Mar 31 16:55:47 2010        
(r205988)
+++ head/usr.bin/indent/indent_globs.h  Wed Mar 31 17:05:30 2010        
(r205989)
@@ -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: head/usr.bin/indent/lexi.c
==============================================================================
--- head/usr.bin/indent/lexi.c  Wed Mar 31 16:55:47 2010        (r205988)
+++ head/usr.bin/indent/lexi.c  Wed Mar 31 17:05:30 2010        (r205989)
@@ -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 */
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to