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

Diff for /mandoc/mdoc_validate.c between version 1.328 and 1.332

version 1.328, 2017/05/30 19:30:38 version 1.332, 2017/06/08 00:23:30
Line 53  typedef void (*v_post)(POST_ARGS);
Line 53  typedef void (*v_post)(POST_ARGS);
   
 static  int      build_list(struct roff_man *, int);  static  int      build_list(struct roff_man *, int);
 static  void     check_text(struct roff_man *, int, int, char *);  static  void     check_text(struct roff_man *, int, int, char *);
   static  void     check_bsd(struct roff_man *, int, int, char *);
 static  void     check_argv(struct roff_man *,  static  void     check_argv(struct roff_man *,
                         struct roff_node *, struct mdoc_argv *);                          struct roff_node *, struct mdoc_argv *);
 static  void     check_args(struct roff_man *, struct roff_node *);  static  void     check_args(struct roff_man *, struct roff_node *);
Line 302  mdoc_node_validate(struct roff_man *mdoc)
Line 303  mdoc_node_validate(struct roff_man *mdoc)
                 if (n->sec != SEC_SYNOPSIS ||                  if (n->sec != SEC_SYNOPSIS ||
                     (n->parent->tok != MDOC_Cd && n->parent->tok != MDOC_Fd))                      (n->parent->tok != MDOC_Cd && n->parent->tok != MDOC_Fd))
                         check_text(mdoc, n->line, n->pos, n->string);                          check_text(mdoc, n->line, n->pos, n->string);
                   if (n->parent->tok == MDOC_Sh ||
                       n->parent->tok == MDOC_Ss ||
                       n->parent->tok == MDOC_It)
                           check_bsd(mdoc, n->line, n->pos, n->string);
                 break;                  break;
         case ROFFT_EQN:          case ROFFT_EQN:
         case ROFFT_TBL:          case ROFFT_TBL:
Line 384  check_text(struct roff_man *mdoc, int ln, int pos, cha
Line 389  check_text(struct roff_man *mdoc, int ln, int pos, cha
 }  }
   
 static void  static void
   check_bsd(struct roff_man *mdoc, int ln, int pos, char *p)
   {
           const char      *cp;
   
           if ((cp = strstr(p, "OpenBSD")) != NULL)
                   mandoc_msg(MANDOCERR_BX, mdoc->parse,
                       ln, pos + (cp - p), "Ox");
           if ((cp = strstr(p, "NetBSD")) != NULL)
                   mandoc_msg(MANDOCERR_BX, mdoc->parse,
                       ln, pos + (cp - p), "Nx");
           if ((cp = strstr(p, "FreeBSD")) != NULL)
                   mandoc_msg(MANDOCERR_BX, mdoc->parse,
                       ln, pos + (cp - p), "Fx");
           if ((cp = strstr(p, "DragonFly")) != NULL)
                   mandoc_msg(MANDOCERR_BX, mdoc->parse,
                       ln, pos + (cp - p), "Dx");
   }
   
   static void
 post_bl_norm(POST_ARGS)  post_bl_norm(POST_ARGS)
 {  {
         struct roff_node *n;          struct roff_node *n;
Line 770  post_lb(POST_ARGS)
Line 794  post_lb(POST_ARGS)
                 return;                  return;
         }          }
   
           mandoc_vmsg(MANDOCERR_LB_BAD, mdoc->parse, n->child->line,
               n->child->pos, "Lb %s", n->child->string);
   
         roff_word_alloc(mdoc, n->line, n->pos, "library");          roff_word_alloc(mdoc, n->line, n->pos, "library");
         mdoc->last->flags = NODE_NOSRC;          mdoc->last->flags = NODE_NOSRC;
         roff_word_alloc(mdoc, n->line, n->pos, "\\(Lq");          roff_word_alloc(mdoc, n->line, n->pos, "\\(Lq");
Line 1052  static void
Line 1079  static void
 post_nd(POST_ARGS)  post_nd(POST_ARGS)
 {  {
         struct roff_node        *n;          struct roff_node        *n;
           size_t                   sz;
   
         n = mdoc->last;          n = mdoc->last;
   
Line 1065  post_nd(POST_ARGS)
Line 1093  post_nd(POST_ARGS)
         if (n->child == NULL)          if (n->child == NULL)
                 mandoc_msg(MANDOCERR_ND_EMPTY, mdoc->parse,                  mandoc_msg(MANDOCERR_ND_EMPTY, mdoc->parse,
                     n->line, n->pos, "Nd");                      n->line, n->pos, "Nd");
           else if (n->last->type == ROFFT_TEXT &&
               (sz = strlen(n->last->string)) != 0 &&
               n->last->string[sz - 1] == '.')
                   mandoc_msg(MANDOCERR_ND_DOT, mdoc->parse,
                       n->last->line, n->last->pos + sz - 1, NULL);
   
         post_hyph(mdoc);          post_hyph(mdoc);
 }  }
Line 1449  post_bl(POST_ARGS)
Line 1482  post_bl(POST_ARGS)
         struct roff_node        *nparent, *nprev; /* of the Bl block */          struct roff_node        *nparent, *nprev; /* of the Bl block */
         struct roff_node        *nblock, *nbody;  /* of the Bl */          struct roff_node        *nblock, *nbody;  /* of the Bl */
         struct roff_node        *nchild, *nnext;  /* of the Bl body */          struct roff_node        *nchild, *nnext;  /* of the Bl body */
           const char              *prev_Er;
           int                      order;
   
         nbody = mdoc->last;          nbody = mdoc->last;
         switch (nbody->type) {          switch (nbody->type) {
Line 1549  post_bl(POST_ARGS)
Line 1584  post_bl(POST_ARGS)
   
                 nchild = nnext;                  nchild = nnext;
         }          }
   
           if (mdoc->meta.os_e != MDOC_OS_NETBSD)
                   return;
   
           prev_Er = NULL;
           for (nchild = nbody->child; nchild != NULL; nchild = nchild->next) {
                   if (nchild->tok != MDOC_It)
                           continue;
                   if ((nnext = nchild->head->child) == NULL)
                           continue;
                   if (nnext->type == ROFFT_BLOCK)
                           nnext = nnext->body->child;
                   if (nnext == NULL || nnext->tok != MDOC_Er)
                           continue;
                   nnext = nnext->child;
                   if (prev_Er != NULL) {
                           order = strcmp(prev_Er, nnext->string);
                           if (order > 0)
                                   mandoc_vmsg(MANDOCERR_ER_ORDER,
                                       mdoc->parse, nnext->line, nnext->pos,
                                       "Er %s %s", prev_Er, nnext->string);
                           else if (order == 0)
                                   mandoc_vmsg(MANDOCERR_ER_REP,
                                       mdoc->parse, nnext->line, nnext->pos,
                                       "Er %s", prev_Er);
                   }
                   prev_Er = nnext->string;
           }
 }  }
   
 static void  static void
Line 2276  static void
Line 2339  static void
 post_bx(POST_ARGS)  post_bx(POST_ARGS)
 {  {
         struct roff_node        *n, *nch;          struct roff_node        *n, *nch;
           const char              *macro;
   
         n = mdoc->last;          n = mdoc->last;
         nch = n->child;          nch = n->child;
   
         if (nch != NULL) {          if (nch != NULL) {
                   macro = !strcmp(nch->string, "Open") ? "Ox" :
                       !strcmp(nch->string, "Net") ? "Nx" :
                       !strcmp(nch->string, "Free") ? "Fx" :
                       !strcmp(nch->string, "DragonFly") ? "Dx" : NULL;
                   if (macro != NULL)
                           mandoc_msg(MANDOCERR_BX, mdoc->parse,
                               n->line, n->pos, macro);
                 mdoc->last = nch;                  mdoc->last = nch;
                 nch = nch->next;                  nch = nch->next;
                 mdoc->next = ROFF_NEXT_SIBLING;                  mdoc->next = ROFF_NEXT_SIBLING;
Line 2347  post_os(POST_ARGS)
Line 2418  post_os(POST_ARGS)
         mdoc->meta.os = NULL;          mdoc->meta.os = NULL;
         deroff(&mdoc->meta.os, n);          deroff(&mdoc->meta.os, n);
         if (mdoc->meta.os)          if (mdoc->meta.os)
                 return;                  goto out;
   
         if (mdoc->defos) {          if (mdoc->defos) {
                 mdoc->meta.os = mandoc_strdup(mdoc->defos);                  mdoc->meta.os = mandoc_strdup(mdoc->defos);
                 return;                  goto out;
         }          }
   
 #ifdef OSNAME  #ifdef OSNAME
Line 2368  post_os(POST_ARGS)
Line 2439  post_os(POST_ARGS)
         }          }
         mdoc->meta.os = mandoc_strdup(defbuf);          mdoc->meta.os = mandoc_strdup(defbuf);
 #endif /*!OSNAME*/  #endif /*!OSNAME*/
   
   out:    mdoc->meta.os_e = strstr(mdoc->meta.os, "OpenBSD") != NULL ?
               MDOC_OS_OPENBSD : strstr(mdoc->meta.os, "NetBSD") != NULL ?
               MDOC_OS_NETBSD : MDOC_OS_OTHER;
 }  }
   
 enum roff_sec  enum roff_sec

Legend:
Removed from v.1.328  
changed lines
  Added in v.1.332

CVSweb