[BACK]Return to mdoc_term.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mandoc

Diff for /src/usr.bin/mandoc/mdoc_term.c between version 1.61 and 1.62

version 1.61, 2009/10/21 19:13:50 version 1.62, 2009/10/27 21:40:07
Line 48 
Line 48 
         void    (*post)(DECL_ARGS);          void    (*post)(DECL_ARGS);
 };  };
   
   static  size_t    a2width(const struct mdoc_argv *, int);
   static  size_t    a2height(const struct mdoc_node *);
   static  size_t    a2offs(const struct mdoc_argv *);
   
   static  int       arg_hasattr(int, const struct mdoc_node *);
   static  int       arg_getattrs(const int *, int *, size_t,
                           const struct mdoc_node *);
   static  int       arg_getattr(int, const struct mdoc_node *);
   static  int       arg_listtype(const struct mdoc_node *);
   static  void      print_bvspace(struct termp *,
                           const struct mdoc_node *,
                           const struct mdoc_node *);
   static  void      print_node(DECL_ARGS);
   static  void      print_head(DECL_ARGS);
   static  void      print_body(DECL_ARGS);
   static  void      print_foot(DECL_ARGS);
   
 static  void      termp____post(DECL_ARGS);  static  void      termp____post(DECL_ARGS);
 static  void      termp_an_post(DECL_ARGS);  static  void      termp_an_post(DECL_ARGS);
 static  void      termp_aq_post(DECL_ARGS);  static  void      termp_aq_post(DECL_ARGS);
Line 236 
Line 253 
         { NULL, termp____post }, /* %Q */          { NULL, termp____post }, /* %Q */
         { termp_sp_pre, NULL }, /* br */          { termp_sp_pre, NULL }, /* br */
         { termp_sp_pre, NULL }, /* sp */          { termp_sp_pre, NULL }, /* sp */
           { termp_under_pre, termp____post }, /* %U */
 };  };
   
 static  size_t    arg2width(const struct mdoc_argv *, int);  
 static  size_t    arg2height(const struct mdoc_node *);  
 static  size_t    arg2offs(const struct mdoc_argv *);  
   
 static  int       arg_hasattr(int, const struct mdoc_node *);  
 static  int       arg_getattrs(const int *, int *, size_t,  
                         const struct mdoc_node *);  
 static  int       arg_getattr(int, const struct mdoc_node *);  
 static  int       arg_listtype(const struct mdoc_node *);  
 static  void      print_bvspace(struct termp *,  
                         const struct mdoc_node *,  
                         const struct mdoc_node *);  
 static  void      print_node(DECL_ARGS);  
 static  void      print_head(DECL_ARGS);  
 static  void      print_body(DECL_ARGS);  
 static  void      print_foot(DECL_ARGS);  
   
   
 void  void
 terminal_mdoc(void *arg, const struct mdoc *mdoc)  terminal_mdoc(void *arg, const struct mdoc *mdoc)
 {  {
Line 342 
Line 343 
 static void  static void
 print_foot(DECL_ARGS)  print_foot(DECL_ARGS)
 {  {
         struct tm       *tm;          char             buf[DATESIZ];
         char            *buf, *os;          char            *os;
   
         /*          /*
          * Output the footer in new-groff style, that is, three columns           * Output the footer in new-groff style, that is, three columns
Line 353 
Line 354 
          * SYSTEM                  DATE                    SYSTEM           * SYSTEM                  DATE                    SYSTEM
          */           */
   
         if (NULL == (buf = malloc(p->rmargin)))  
                 err(EXIT_FAILURE, "malloc");  
         if (NULL == (os = malloc(p->rmargin)))          if (NULL == (os = malloc(p->rmargin)))
                 err(EXIT_FAILURE, "malloc");                  err(EXIT_FAILURE, "malloc");
   
         tm = localtime(&m->date);          time2a(m->date, buf, DATESIZ);
   
         if (0 == strftime(buf, p->rmargin, "%B %e, %Y", tm))  
                 err(EXIT_FAILURE, "strftime");  
   
         (void)strlcpy(os, m->os, p->rmargin);          (void)strlcpy(os, m->os, p->rmargin);
   
         term_vspace(p);          term_vspace(p);
Line 393 
Line 389 
         p->rmargin = p->maxrmargin;          p->rmargin = p->maxrmargin;
         p->flags = 0;          p->flags = 0;
   
         free(buf);  
         free(os);          free(os);
 }  }
   
Line 469 
Line 464 
   
   
 static size_t  static size_t
 arg2height(const struct mdoc_node *n)  a2height(const struct mdoc_node *n)
 {  {
         struct roffsu    su;          struct roffsu    su;
   
Line 483 
Line 478 
   
   
 static size_t  static size_t
 arg2width(const struct mdoc_argv *arg, int pos)  a2width(const struct mdoc_argv *arg, int pos)
 {  {
         struct roffsu    su;          struct roffsu    su;
   
Line 538 
Line 533 
   
   
 static size_t  static size_t
 arg2offs(const struct mdoc_argv *arg)  a2offs(const struct mdoc_argv *arg)
 {  {
         struct roffsu    su;          struct roffsu    su;
   
Line 717 
Line 712 
                 for (i = 0, nn = n->prev; nn &&                  for (i = 0, nn = n->prev; nn &&
                                 i < (int)bl->args->argv[vals[2]].sz;                                  i < (int)bl->args->argv[vals[2]].sz;
                                 nn = nn->prev, i++)                                  nn = nn->prev, i++)
                         offset += arg2width                          offset += a2width
                                 (&bl->args->argv[vals[2]], i);                                  (&bl->args->argv[vals[2]], i);
   
                 /* Whether exceeds maximum column. */                  /* Whether exceeds maximum column. */
                 if (i < (int)bl->args->argv[vals[2]].sz)                  if (i < (int)bl->args->argv[vals[2]].sz)
                         width = arg2width(&bl->args->argv[vals[2]], i);                          width = a2width(&bl->args->argv[vals[2]], i);
                 else                  else
                         width = 0;                          width = 0;
   
                 if (vals[1] >= 0)                  if (vals[1] >= 0)
                         offset += arg2offs(&bl->args->argv[vals[1]]);                          offset += a2offs(&bl->args->argv[vals[1]]);
                 break;                  break;
         default:          default:
                 if (vals[0] >= 0)                  if (vals[0] >= 0)
                         width = arg2width(&bl->args->argv[vals[0]], 0);                          width = a2width(&bl->args->argv[vals[0]], 0);
                 if (vals[1] >= 0)                  if (vals[1] >= 0)
                         offset += arg2offs(&bl->args->argv[vals[1]]);                          offset += a2offs(&bl->args->argv[vals[1]]);
                 break;                  break;
         }          }
   
Line 1556 
Line 1551 
                         type = nn->args->argv[i].arg;                          type = nn->args->argv[i].arg;
                         break;                          break;
                 case (MDOC_Offset):                  case (MDOC_Offset):
                         p->offset += arg2offs(&nn->args->argv[i]);                          p->offset += a2offs(&nn->args->argv[i]);
                         break;                          break;
                 default:                  default:
                         break;                          break;
Line 1811 
Line 1806 
   
         switch (n->tok) {          switch (n->tok) {
         case (MDOC_sp):          case (MDOC_sp):
                 len = n->child ? arg2height(n->child) : 1;                  len = n->child ? a2height(n->child) : 1;
                 break;                  break;
         case (MDOC_br):          case (MDOC_br):
                 len = 0;                  len = 0;
Line 2007 
Line 2002 
 termp____post(DECL_ARGS)  termp____post(DECL_ARGS)
 {  {
   
           /* TODO: %U. */
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         switch (n->tok) {          switch (n->tok) {
         case (MDOC__T):          case (MDOC__T):
Line 2026 
Line 2023 
 {  {
         const struct mdoc_node *nn;          const struct mdoc_node *nn;
   
         if (NULL == (nn = n->child->next)) {          p->under++;
                 p->under++;          nn = n->child;
   
           if (NULL == nn->next)
                 return(1);                  return(1);
         }  
   
         p->under++;  
         term_word(p, nn->string);          term_word(p, nn->string);
           p->under--;
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         term_word(p, ":");          term_word(p, ":");
         p->under--;  
   
         p->bold++;          p->bold++;
         for (nn = nn->next; nn; nn = nn->next)          for (nn = nn->next; nn; nn = nn->next)

Legend:
Removed from v.1.61  
changed lines
  Added in v.1.62