[BACK]Return to mdoc_term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mdoc_term.c between version 1.9 and 1.12

version 1.9, 2009/06/11 12:07:49 version 1.12, 2009/06/12 09:18:00
Line 86  struct termpair {
Line 86  struct termpair {
         struct termpair  *ppair;          struct termpair  *ppair;
         int               type;          int               type;
 #define TERMPAIR_FLAG    (1 << 0)  #define TERMPAIR_FLAG    (1 << 0)
         int               flag;          int               flag;         /* Whether being used. */
         size_t            offset;          size_t            offset;       /* Left margin. */
         size_t            rmargin;          size_t            rmargin;      /* Right margin. */
         int               count;          int               count;        /* Enum count. */
 };  };
   
 #define TERMPAIR_SETFLAG(termp, p, fl) \  #define TERMPAIR_SETFLAG(termp, p, fl) \
Line 592  arg_listtype(const struct mdoc_node *n)
Line 592  arg_listtype(const struct mdoc_node *n)
                         break;                          break;
                 }                  }
   
           /* FIXME: mandated by parser. */
   
         errx(1, "list type not supported");          errx(1, "list type not supported");
         /* NOTREACHED */          /* NOTREACHED */
 }  }
Line 602  arg_offset(const struct mdoc_argv *arg)
Line 604  arg_offset(const struct mdoc_argv *arg)
 {  {
   
         assert(*arg->value);          assert(*arg->value);
           if (0 == strcmp(*arg->value, "left"))
                   return(0);
         if (0 == strcmp(*arg->value, "indent"))          if (0 == strcmp(*arg->value, "indent"))
                 return(INDENT);                  return(INDENT);
         if (0 == strcmp(*arg->value, "indent-two"))          if (0 == strcmp(*arg->value, "indent-two"))
                 return(INDENT * 2);                  return(INDENT * 2);
   
           /* FIXME: needs to support field-widths (10n, etc.). */
   
         return(strlen(*arg->value));          return(strlen(*arg->value));
 }  }
   
Line 1067  termp_rv_pre(DECL_ARGS)
Line 1074  termp_rv_pre(DECL_ARGS)
 {  {
         int              i;          int              i;
   
           /* FIXME: mandated by parser. */
   
         if (-1 == (i = arg_getattr(MDOC_Std, node)))          if (-1 == (i = arg_getattr(MDOC_Std, node)))
                 errx(1, "expected -std argument");                  errx(1, "expected -std argument");
         if (1 != node->args->argv[i].sz)          if (1 != node->args->argv[i].sz)
Line 1100  termp_ex_pre(DECL_ARGS)
Line 1109  termp_ex_pre(DECL_ARGS)
 {  {
         int              i;          int              i;
   
           /* FIXME: mandated by parser? */
   
         if (-1 == (i = arg_getattr(MDOC_Std, node)))          if (-1 == (i = arg_getattr(MDOC_Std, node)))
                 errx(1, "expected -std argument");                  errx(1, "expected -std argument");
         if (1 != node->args->argv[i].sz)          if (1 != node->args->argv[i].sz)
Line 1153  termp_xr_pre(DECL_ARGS)
Line 1164  termp_xr_pre(DECL_ARGS)
 {  {
         const struct mdoc_node *n;          const struct mdoc_node *n;
   
         if (NULL == (n = node->child))          assert(node->child && MDOC_TEXT == node->child->type);
                 errx(1, "expected text line argument");          n = node->child;
   
         term_word(p, n->string);          term_word(p, n->string);
         if (NULL == (n = n->next))          if (NULL == (n = n->next))
                 return(0);                  return(0);
Line 1288  termp_lb_pre(DECL_ARGS)
Line 1300  termp_lb_pre(DECL_ARGS)
 {  {
         const char      *lb;          const char      *lb;
   
         if (NULL == node->child)          assert(node->child && MDOC_TEXT == node->child->type);
                 errx(1, "expected text line argument");  
         if ((lb = mdoc_a2lib(node->child->string))) {          if ((lb = mdoc_a2lib(node->child->string))) {
                 term_word(p, lb);                  term_word(p, lb);
                 return(0);                  return(0);
Line 1397  termp_fn_pre(DECL_ARGS)
Line 1408  termp_fn_pre(DECL_ARGS)
 {  {
         const struct mdoc_node *n;          const struct mdoc_node *n;
   
         if (NULL == node->child)          assert(node->child && MDOC_TEXT == node->child->type);
                 errx(1, "expected text line arguments");  
   
         /* FIXME: can be "type funcname" "type varname"... */          /* FIXME: can be "type funcname" "type varname"... */
   
Line 1505  termp_bd_pre(DECL_ARGS)
Line 1515  termp_bd_pre(DECL_ARGS)
         else if (MDOC_BODY != node->type)          else if (MDOC_BODY != node->type)
                 return(1);                  return(1);
   
           /* FIXME: display type should be mandated by parser. */
   
         if (NULL == node->parent->args)          if (NULL == node->parent->args)
                 errx(1, "missing display type");                  errx(1, "missing display type");
   
Line 1953  termp_fo_pre(DECL_ARGS)
Line 1965  termp_fo_pre(DECL_ARGS)
   
         p->flags |= ttypes[TTYPE_FUNC_NAME];          p->flags |= ttypes[TTYPE_FUNC_NAME];
         for (n = node->child; n; n = n->next) {          for (n = node->child; n; n = n->next) {
                 if (MDOC_TEXT != n->type)                  assert(MDOC_TEXT == n->type);
                         errx(1, "expected text line argument");  
                 term_word(p, n->string);                  term_word(p, n->string);
         }          }
         p->flags &= ~ttypes[TTYPE_FUNC_NAME];          p->flags &= ~ttypes[TTYPE_FUNC_NAME];
Line 1998  termp_bf_pre(DECL_ARGS)
Line 2009  termp_bf_pre(DECL_ARGS)
                 return(1);                  return(1);
         }          }
   
         if (MDOC_TEXT != n->type)          assert(MDOC_TEXT == n->type);
                 errx(1, "expected text line arguments");  
   
         if (0 == strcmp("Em", n->string))          if (0 == strcmp("Em", n->string))
                 TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_EMPH]);                  TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_EMPH]);
         else if (0 == strcmp("Sy", n->string))          else if (0 == strcmp("Sy", n->string))
Line 2036  static int
Line 2045  static int
 termp_sm_pre(DECL_ARGS)  termp_sm_pre(DECL_ARGS)
 {  {
   
         if (NULL == node->child || MDOC_TEXT != node->child->type)          assert(node->child && MDOC_TEXT == node->child->type);
                 errx(1, "expected boolean line argument");  
   
         if (0 == strcmp("on", node->child->string)) {          if (0 == strcmp("on", node->child->string)) {
                 p->flags &= ~TERMP_NONOSPACE;                  p->flags &= ~TERMP_NONOSPACE;
                 p->flags &= ~TERMP_NOSPACE;                  p->flags &= ~TERMP_NOSPACE;
Line 2109  termp_lk_pre(DECL_ARGS)
Line 2116  termp_lk_pre(DECL_ARGS)
 {  {
         const struct mdoc_node *n;          const struct mdoc_node *n;
   
         if (NULL == (n = node->child))          assert(node->child);
                 errx(1, "expected line argument");          n = node->child;
   
           if (NULL == n->next) {
                   TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_LINK_ANCHOR]);
                   return(1);
           }
   
         p->flags |= ttypes[TTYPE_LINK_ANCHOR];          p->flags |= ttypes[TTYPE_LINK_ANCHOR];
         term_word(p, n->string);          term_word(p, n->string);
         p->flags &= ~ttypes[TTYPE_LINK_ANCHOR];  
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         term_word(p, ":");          term_word(p, ":");
           p->flags &= ~ttypes[TTYPE_LINK_ANCHOR];
   
         p->flags |= ttypes[TTYPE_LINK_TEXT];          p->flags |= ttypes[TTYPE_LINK_TEXT];
         for ( ; n; n = n->next) {          for (n = n->next; n; n = n->next)
                 term_word(p, n->string);                  term_word(p, n->string);
         }  
         p->flags &= ~ttypes[TTYPE_LINK_TEXT];  
   
           p->flags &= ~ttypes[TTYPE_LINK_TEXT];
         return(0);          return(0);
 }  }
   

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.12

CVSweb