indent(1): Sync with FreeBSD (brings in -ta).
authorSascha Wildner <saw@online.de>
Sat, 5 Jun 2010 01:03:42 +0000 (03:03 +0200)
committerSascha Wildner <saw@online.de>
Sat, 5 Jun 2010 01:03:42 +0000 (03:03 +0200)
usr.bin/indent/Makefile
usr.bin/indent/args.c
usr.bin/indent/indent.1
usr.bin/indent/indent.c
usr.bin/indent/indent.h
usr.bin/indent/indent_codes.h
usr.bin/indent/indent_globs.h
usr.bin/indent/io.c
usr.bin/indent/lexi.c
usr.bin/indent/parse.c
usr.bin/indent/pr_comment.c

index 373b53a..8d9ff94 100644 (file)
@@ -1,5 +1,4 @@
 #      @(#)Makefile    8.1 (Berkeley) 6/6/93
-# $DragonFly: src/usr.bin/indent/Makefile,v 1.2 2007/08/27 16:50:54 pavalos Exp $
 
 PROG=  indent
 SRCS=  indent.c io.c lexi.c parse.c pr_comment.c args.c
index fe400db..e3863aa 100644 (file)
@@ -33,8 +33,7 @@
  * SUCH DAMAGE.
  *
  * @(#)args.c  8.1 (Berkeley) 6/6/93
- * $FreeBSD: src/usr.bin/indent/args.c,v 1.15 2004/09/19 20:34:30 das Exp $
- * $DragonFly: src/usr.bin/indent/args.c,v 1.3 2005/04/10 20:55:38 drhodus Exp $
+ * $FreeBSD: src/usr.bin/indent/args.c,v 1.16 2010/03/31 17:05:30 avg Exp $
  */
 
 /*
@@ -152,6 +151,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},
@@ -186,7 +186,7 @@ static void
 scan_profile(FILE *f)
 {
     int                comment, i;
-    char *p;
+    char       *p;
     char        buf[BUFSIZ];
 
     while (1) {
index eab1b9c..cd8d1bf 100644 (file)
 .\" SUCH DAMAGE.
 .\"
 .\"    @(#)indent.1    8.1 (Berkeley) 7/1/93
-.\" $FreeBSD: src/usr.bin/indent/indent.1,v 1.27 2005/07/31 03:30:45 keramida Exp $
-.\" $DragonFly: src/usr.bin/indent/indent.1,v 1.3 2006/03/26 22:56:57 swildner Exp $
+.\" $FreeBSD: src/usr.bin/indent/indent.1,v 1.28 2010/03/31 17:05:30 avg Exp $
 .\"
-.Dd December 5, 2009
+.Dd May 6, 2010
 .Dt INDENT 1
 .Os
 .Sh NAME
@@ -81,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
@@ -98,9 +98,9 @@ according to the switches.
 The switches which can be specified are described below.
 They may appear before or after the file names.
 .Pp
-.Sy NOTE  :
+.Sy NOTE :
 If you only specify an
-.Ar input-file  ,
+.Ar input-file ,
 the formatting is
 done `in-place', that is, the formatted file is written back into
 .Ar input-file
@@ -119,7 +119,7 @@ If
 is specified,
 .Nm
 checks to make sure that it is different from
-.Ar input-file  .
+.Ar input-file .
 .Pp
 The options listed below control the formatting style imposed by
 .Nm .
@@ -130,7 +130,7 @@ If
 is specified, a blank line is forced after every block of
 declarations.
 Default:
-.Fl nbad  .
+.Fl nbad .
 .It Fl bap , nbap
 If
 .Fl bap
@@ -150,7 +150,7 @@ is specified, then a newline is forced after each comma in a declaration.
 .Fl nbc
 turns off this option.
 Default:
-.Fl \&nbc  .
+.Fl \&nbc .
 .It Fl \&br , \&bl
 Specifying
 .Fl \&bl
@@ -193,15 +193,15 @@ Rather than like this:
 .Pp
 This only affects block comments, not comments to the right of code.
 The default is
-.Fl cdb  .
+.Fl cdb .
 .It Fl ce , nce
 Enables (disables) forcing of `else's to cuddle up to the immediately preceding
 `}'.
 The default is
-.Fl \&ce  .
+.Fl \&ce .
 .It Fl \&ci Ns Ar n
 Sets the continuation indent to be
-.Ar n  .
+.Ar n .
 Continuation
 lines will be indented that far from the beginning of the first line of the
 statement.
@@ -211,7 +211,7 @@ indicate the nesting, unless
 is in effect or the continuation indent is exactly half of the main indent.
 .Fl \&ci
 defaults to the same value as
-.Fl i  .
+.Fl i .
 .It Fl cli Ns Ar n
 Causes case labels to be indented
 .Ar n
@@ -221,7 +221,7 @@ statement.
 .Fl cli0.5
 causes case labels to be indented half a tab stop.
 The default is
-.Fl cli0  .
+.Fl cli0 .
 .It Fl d Ns Ar n
 Controls the placement of comments which are not to the right of code.
 For example,
@@ -236,14 +236,14 @@ Specifies the indentation, in character positions,
 of global variable names and all struct/union member names
 relative to the beginning of their type declaration.
 The default is
-.Fl di16  .
+.Fl di16 .
 .It Fl dj , ndj
 .Fl \&dj
 left justifies declarations.
 .Fl ndj
 indents declarations the same as code.
 The default is
-.Fl ndj  .
+.Fl ndj .
 .It Fl \&ei , nei
 Enables (disables) special
 .Ic else-if
@@ -270,7 +270,7 @@ In such cases,
 .Fl nfc1
 should be used.
 The default is
-.Fl fc1  .
+.Fl fc1 .
 .It Fl fcb , nfcb
 Enables (disables) the formatting of block comments (ones that begin
 with `/*\\n').
@@ -282,7 +282,7 @@ In such cases,
 should be used.
 Block comments are then handled like box comments.
 The default is
-.Fl fcb  .
+.Fl fcb .
 .It Fl i Ns Ar n
 The number of spaces for one indentation level.
 The default is 8.
@@ -290,7 +290,7 @@ The default is 8.
 Enables (disables) the indentation of parameter declarations from the left
 margin.
 The default is
-.Fl \&ip  .
+.Fl \&ip .
 .It Fl l Ns Ar n
 Maximum length of an output line.
 The default is 78.
@@ -340,30 +340,33 @@ If true
 .Pq Fl pcs
 all procedure calls will have a space inserted between the name and the `('.
 The default is
-.Fl npcs  .
+.Fl npcs .
 .It Fl psl , npsl
 If true
 .Pq Fl psl
 the names of procedures being defined are placed in
 column 1 \- their types, if any, will be left on the previous lines.
 The default is
-.Fl psl  .
+.Fl psl .
 .It Fl \&sc , nsc
 Enables (disables) the placement of asterisks (`*'s) at the left edge of all
 comments.
 The default is
-.Fl sc  .
+.Fl sc .
 .It Fl sob , nsob
 If
 .Fl sob
 is specified, indent will swallow optional blank lines.
 You can use this to get rid of blank lines after declarations.
 Default:
-.Fl nsob  .
+.Fl nsob .
 .It Fl \&st
 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
@@ -411,7 +414,7 @@ When in verbose mode,
 reports when it splits one line of input into two or more lines of output,
 and gives some size statistics at completion.
 The default is
-.Fl \&nv  .
+.Fl \&nv .
 .El
 .Pp
 You may set up your own `profile' of defaults to
index 9c3c210..f06a292 100644 (file)
@@ -36,8 +36,7 @@
  * @(#) Copyright (c) 1976 Board of Trustees of the University of Illinois.
  * @(#) Copyright (c) 1980, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)indent.c        5.17 (Berkeley) 6/7/93
- * $FreeBSD: src/usr.bin/indent/indent.c,v 1.25 2006/09/13 05:06:12 charnier Exp $
- * $DragonFly: src/usr.bin/indent/indent.c,v 1.4 2007/05/13 18:33:58 swildner Exp $
+ * $FreeBSD: src/usr.bin/indent/indent.c,v 1.26 2010/03/31 16:55:47 avg Exp $
  */
 
 #include <sys/param.h>
@@ -71,7 +70,7 @@ main(int argc, char **argv)
     int         force_nl;      /* when true, code must be broken */
     int         hd_type = 0;   /* used to store type of stmt for if (...),
                                 * for (...), etc */
-    int i;                     /* local loop counter */
+    int                i;              /* local loop counter */
     int         scase;         /* set to true when we see a case, so we will
                                 * know what to do with the following colon */
     int         sp_sw;         /* when true, we are in the expression of
@@ -665,7 +664,7 @@ check_type:
                ps.want_blank = true;
                break;
            }
-           if (ps.in_decl) {
+           if (ps.in_or_st) {
                *e_code++ = ':';
                ps.want_blank = false;
                break;
@@ -756,8 +755,8 @@ check_type:
                    ps.i_l_follow = 0;
                    if (function_brace_split) { /* dump the line prior to the
                                                 * brace ... */
-                   dump_line();
-                   ps.want_blank = false;
+                       dump_line();
+                       ps.want_blank = false;
                    } else      /* add a space between the decl and brace */
                        ps.want_blank = true;
                }
@@ -906,7 +905,7 @@ check_type:
 
            if (ps.ind_level == 0 || ps.dec_nest > 0) {
                /* global variable or struct member in local variable */
-           dec_ind = ps.decl_indent > 0 ? ps.decl_indent : i;
+               dec_ind = ps.decl_indent > 0 ? ps.decl_indent : i;
                tabs_to_var = (use_tabs ? ps.decl_indent > 0 : 0);
            } else {
                /* local variable */
index f1793b6..b329ec9 100644 (file)
@@ -24,7 +24,6 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/usr.bin/indent/indent.h,v 1.2 2002/03/30 17:10:20 dwmalone Exp $
- * $DragonFly: src/usr.bin/indent/indent.h,v 1.2 2003/06/17 04:29:27 dillon Exp $
  */
 
 void   addkey(char *, int);
index bc45e91..008bf2b 100644 (file)
@@ -34,7 +34,6 @@
  *
  *     @(#)indent_codes.h      8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/indent/indent_codes.h,v 1.2 2000/12/09 09:52:51 obrien Exp $
- * $DragonFly: src/usr.bin/indent/indent_codes.h,v 1.2 2003/06/17 04:29:27 dillon Exp $
  */
 
 #define newline                1
index ca68fef..3ff82fa 100644 (file)
@@ -33,8 +33,7 @@
  * SUCH DAMAGE.
  *
  *     @(#)indent_globs.h      8.1 (Berkeley) 6/6/93
- * $FreeBSD: src/usr.bin/indent/indent_globs.h,v 1.11 2005/11/13 20:37:25 dwmalone Exp $
- * $DragonFly: src/usr.bin/indent/indent_globs.h,v 1.3 2005/04/10 20:55:38 drhodus Exp $
+ * $FreeBSD: src/usr.bin/indent/indent_globs.h,v 1.12 2010/03/31 17:05:30 avg Exp $
  */
 
 #define BACKSLASH '\\'
@@ -205,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 */
 
index 08d8f42..a0f4f81 100644 (file)
@@ -34,7 +34,6 @@
  *
  * @(#)io.c    8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/indent/io.c,v 1.15 2005/11/13 20:37:25 dwmalone Exp $
- * $DragonFly: src/usr.bin/indent/io.c,v 1.3 2005/04/10 20:55:38 drhodus Exp $
  */
 
 #include <ctype.h>
@@ -468,12 +467,12 @@ pad_output(int current, int target)
            return (current);   /* line is already long enough */
        curr = current;
         if (use_tabs) {
-       while ((tcur = ((curr - 1) & tabmask) + tabsize + 1) <= target) {
-           putc('\t', output);
-           curr = tcur;
-       }
+            while ((tcur = ((curr - 1) & tabmask) + tabsize + 1) <= target) {
+                putc('\t', output);
+                curr = tcur;
+            }
         }
-       while (curr++ < target)
+        while (curr++ < target)
            putc(' ', output);  /* pad with final blanks */
     }
     return (target);
index ecbfa16..c7b970a 100644 (file)
@@ -33,8 +33,7 @@
  * SUCH DAMAGE.
  *
  * @(#)lexi.c  8.1 (Berkeley) 6/6/93
- * $FreeBSD: src/usr.bin/indent/lexi.c,v 1.19 2005/11/20 13:48:15 dds Exp $
- * $DragonFly: src/usr.bin/indent/lexi.c,v 1.3 2005/04/10 20:55:38 drhodus Exp $
+ * $FreeBSD: src/usr.bin/indent/lexi.c,v 1.21 2010/04/15 21:41:07 avg Exp $
  */
 
 /*
@@ -245,6 +244,18 @@ lexi(void)
        last_code = ident;      /* Remember that this is the code we will
                                 * return */
 
+       if (auto_typedefs) {
+           const char *q = s_token;
+           size_t q_len = strlen(q);
+           /* Check if we have an "_t" in the end */
+           if (q_len > 2 &&
+               (strcmp(q + q_len - 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.
         */
@@ -281,6 +292,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 */
index 2f5c014..ea875c6 100644 (file)
@@ -34,7 +34,6 @@
  *
  * @(#)parse.c 8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/indent/parse.c,v 1.10 2003/06/15 09:28:17 charnier Exp $
- * $DragonFly: src/usr.bin/indent/parse.c,v 1.3 2005/04/10 20:55:38 drhodus Exp $
  */
 
 #include <stdio.h>
index a23a06f..69fd2ca 100644 (file)
@@ -34,7 +34,6 @@
  *
  * @(#)pr_comment.c    8.1 (Berkeley) 6/6/93
  * $FreeBSD: src/usr.bin/indent/pr_comment.c,v 1.8 2003/06/15 09:28:17 charnier Exp $
- * $DragonFly: src/usr.bin/indent/pr_comment.c,v 1.3 2005/04/10 20:55:38 drhodus Exp $
  */
 
 #include <err.h>