]> git.cameronkatri.com Git - mandoc.git/commitdiff
Cleaned up arg_width and arg_column functions.
authorKristaps Dzonsons <kristaps@bsd.lv>
Tue, 14 Jul 2009 15:49:44 +0000 (15:49 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Tue, 14 Jul 2009 15:49:44 +0000 (15:49 +0000)
Added XXn and XXm support to -offset (not documented in mdoc.samples, but used in mdoc.samples!).
Lint warnings fixed.

mdoc_term.c
term.c

index 13aad1122f063fb15021af79684e25959fb3550f..1a59a3a0257a304ee0ad5041a09a29804f950fc3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_term.c,v 1.39 2009/07/14 15:17:25 kristaps Exp $ */
+/*     $Id: mdoc_term.c,v 1.40 2009/07/14 15:49:44 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -517,28 +517,26 @@ print_head(struct termp *p, const struct mdoc_meta *meta)
 static size_t
 arg_width(const struct mdoc_argv *arg, int pos)
 {
 static size_t
 arg_width(const struct mdoc_argv *arg, int pos)
 {
-       size_t           v;
        int              i, len;
        int              i, len;
+       const char      *p;
 
        assert(pos < (int)arg->sz && pos >= 0);
        assert(arg->value[pos]);
 
 
        assert(pos < (int)arg->sz && pos >= 0);
        assert(arg->value[pos]);
 
-       if (0 == (len = (int)strlen(arg->value[pos])))
+       p = arg->value[pos];
+
+       if (0 == (len = (int)strlen(p)))
                return(0);
 
        for (i = 0; i < len - 1; i++) 
                return(0);
 
        for (i = 0; i < len - 1; i++) 
-               if ( ! isdigit((u_char)arg->value[pos][i]))
+               if ( ! isdigit((u_char)p[i]))
                        break;
 
                        break;
 
-       if (i == len - 1) {
-               if ('n' == arg->value[pos][len - 1] ||
-                               'm' == arg->value[pos][len - 1]) {
-                       v = (size_t)atoi(arg->value[pos]);
-                       return(v + 2);
-               }
+       if (i == len - 1) 
+               if ('n' == p[len - 1] || 'm' == p[len - 1])
+                       return((size_t)atoi(p) + 2);
 
 
-       }
-       return(strlen(arg->value[pos]) + 2);
+       return((size_t)len + 2);
 }
 
 
 }
 
 
@@ -586,18 +584,31 @@ arg_listtype(const struct mdoc_node *n)
 static size_t
 arg_offset(const struct mdoc_argv *arg)
 {
 static size_t
 arg_offset(const struct mdoc_argv *arg)
 {
+       int              len, i;
+       const char      *p;
 
        assert(*arg->value);
 
        assert(*arg->value);
-       if (0 == strcmp(*arg->value, "left"))
+       p = *arg->value;
+
+       if (0 == strcmp(p, "left"))
                return(0);
                return(0);
-       if (0 == strcmp(*arg->value, "indent"))
+       if (0 == strcmp(p, "indent"))
                return(INDENT + 1);
                return(INDENT + 1);
-       if (0 == strcmp(*arg->value, "indent-two"))
+       if (0 == strcmp(p, "indent-two"))
                return((INDENT + 1) * 2);
 
                return((INDENT + 1) * 2);
 
-       /* FIXME: needs to support field-widths (10n, etc.). */
+       if (0 == (len = (int)strlen(p)))
+               return(0);
+
+       for (i = 0; i < len - 1; i++) 
+               if ( ! isdigit((u_char)p[i]))
+                       break;
+
+       if (i == len - 1) 
+               if ('n' == p[len - 1] || 'm' == p[len - 1])
+                       return((size_t)atoi(p));
 
 
-       return(strlen(*arg->value));
+       return((size_t)len);
 }
 
 
 }
 
 
diff --git a/term.c b/term.c
index 973ad2c2b1c7d3f66081b614fac9048d6e5e41bc..9684cb3b0cf9b4cc1d2d6ec9749e00416ac100c7 100644 (file)
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/*     $Id: term.c,v 1.84 2009/07/14 15:16:41 kristaps Exp $ */
+/*     $Id: term.c,v 1.85 2009/07/14 15:49:44 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -315,7 +315,7 @@ term_flushln(struct termp *p)
                                putchar(' ');
                }
                if (TERMP_HANG & p->flags)
                                putchar(' ');
                }
                if (TERMP_HANG & p->flags)
-                       sv = vis - maxvis;
+                       sv = (int)(vis - maxvis);
                p->col = 0;
                return;
        }
                p->col = 0;
                return;
        }