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

Diff for /mandoc/man.c between version 1.167 and 1.170

version 1.167, 2017/01/10 13:47:00 version 1.170, 2017/04/29 12:45:41
Line 35 
Line 35 
 #include "roff_int.h"  #include "roff_int.h"
 #include "libman.h"  #include "libman.h"
   
 const   char *const __man_macronames[MAN_MAX] = {  
         "br",           "TH",           "SH",           "SS",  
         "TP",           "LP",           "PP",           "P",  
         "IP",           "HP",           "SM",           "SB",  
         "BI",           "IB",           "BR",           "RB",  
         "R",            "B",            "I",            "IR",  
         "RI",           "sp",           "nf",  
         "fi",           "RE",           "RS",           "DT",  
         "UC",           "PD",           "AT",           "in",  
         "ft",           "OP",           "EX",           "EE",  
         "UR",           "UE",           "ll"  
         };  
   
 const   char * const *man_macronames = __man_macronames;  
   
 static  void             man_descope(struct roff_man *, int, int);  static  void             man_descope(struct roff_man *, int, int);
 static  int              man_ptext(struct roff_man *, int, char *, int);  static  int              man_ptext(struct roff_man *, int, char *, int);
 static  int              man_pmacro(struct roff_man *, int, char *, int);  static  int              man_pmacro(struct roff_man *, int, char *, int);
Line 160  man_pmacro(struct roff_man *man, int ln, char *buf, in
Line 145  man_pmacro(struct roff_man *man, int ln, char *buf, in
 {  {
         struct roff_node *n;          struct roff_node *n;
         const char      *cp;          const char      *cp;
         int              tok;          size_t           sz;
         int              i, ppos;          enum roff_tok    tok;
           int              ppos;
         int              bline;          int              bline;
         char             mac[5];  
   
         ppos = offs;          /* Determine the line macro. */
   
         /*          ppos = offs;
          * Copy the first word into a nil-terminated buffer.          tok = TOKEN_NONE;
          * Stop when a space, tab, escape, or eoln is encountered.          for (sz = 0; sz < 4 && strchr(" \t\\", buf[offs]) == NULL; sz++)
          */                  offs++;
           if (sz > 0 && sz < 4)
         i = 0;                  tok = roffhash_find(man->manmac, buf + ppos, sz);
         while (i < 4 && strchr(" \t\\", buf[offs]) == NULL)  
                 mac[i++] = buf[offs++];  
   
         mac[i] = '\0';  
   
         tok = (i > 0 && i < 4) ? man_hash_find(mac) : TOKEN_NONE;  
   
         if (tok == TOKEN_NONE) {          if (tok == TOKEN_NONE) {
                 mandoc_msg(MANDOCERR_MACRO, man->parse,                  mandoc_msg(MANDOCERR_MACRO, man->parse,
                     ln, ppos, buf + ppos - 1);                      ln, ppos, buf + ppos - 1);
Line 203  man_pmacro(struct roff_man *man, int ln, char *buf, in
Line 181  man_pmacro(struct roff_man *man, int ln, char *buf, in
   
         /* Jump to the next non-whitespace word. */          /* Jump to the next non-whitespace word. */
   
         while (buf[offs] && buf[offs] == ' ')          while (buf[offs] == ' ')
                 offs++;                  offs++;
   
         /*          /*
Line 275  man_breakscope(struct roff_man *man, int tok)
Line 253  man_breakscope(struct roff_man *man, int tok)
   
                 mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse,                  mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse,
                     n->line, n->pos, "%s breaks %s",                      n->line, n->pos, "%s breaks %s",
                     tok == TOKEN_NONE ? "TS" : man_macronames[tok],                      tok == TOKEN_NONE ? "TS" : roff_name[tok],
                     man_macronames[n->tok]);                      roff_name[n->tok]);
   
                 roff_node_delete(man, n);                  roff_node_delete(man, n);
                 man->flags &= ~MAN_ELINE;                  man->flags &= ~MAN_ELINE;
Line 317  man_breakscope(struct roff_man *man, int tok)
Line 295  man_breakscope(struct roff_man *man, int tok)
   
                 mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse,                  mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse,
                     n->line, n->pos, "%s breaks %s",                      n->line, n->pos, "%s breaks %s",
                     tok == TOKEN_NONE ? "TS" : man_macronames[tok],                      tok == TOKEN_NONE ? "TS" : roff_name[tok],
                     man_macronames[n->tok]);                      roff_name[n->tok]);
   
                 roff_node_delete(man, n);                  roff_node_delete(man, n);
                 man->flags &= ~MAN_BLINE;                  man->flags &= ~MAN_BLINE;

Legend:
Removed from v.1.167  
changed lines
  Added in v.1.170

CVSweb