[BACK]Return to roff.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / bsd / mdocml / dist

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/external/bsd/mdocml/dist/roff.c between version 1.18 and 1.19

version 1.18, 2016/07/15 19:40:42 version 1.19, 2017/03/18 15:24:17
Line 1 
Line 1 
 /*      Id: roff.c,v 1.284 2016/01/08 17:48:10 schwarze Exp  */  /*      Id: roff.c,v 1.289 2017/02/17 03:03:03 schwarze Exp  */
 /*  /*
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 992  roff_node_alloc(struct roff_man *man, in
Line 992  roff_node_alloc(struct roff_man *man, in
         n->sec = man->lastsec;          n->sec = man->lastsec;
   
         if (man->flags & MDOC_SYNOPSIS)          if (man->flags & MDOC_SYNOPSIS)
                 n->flags |= MDOC_SYNPRETTY;                  n->flags |= NODE_SYNPRETTY;
         else          else
                 n->flags &= ~MDOC_SYNPRETTY;                  n->flags &= ~NODE_SYNPRETTY;
         if (man->flags & MDOC_NEWLINE)          if (man->flags & MDOC_NEWLINE)
                 n->flags |= MDOC_LINE;                  n->flags |= NODE_LINE;
         man->flags &= ~MDOC_NEWLINE;          man->flags &= ~MDOC_NEWLINE;
   
         return n;          return n;
Line 1018  roff_node_append(struct roff_man *man, s
Line 1018  roff_node_append(struct roff_man *man, s
                 n->parent = man->last->parent;                  n->parent = man->last->parent;
                 break;                  break;
         case ROFF_NEXT_CHILD:          case ROFF_NEXT_CHILD:
                   if (man->last->child != NULL) {
                           n->next = man->last->child;
                           man->last->child->prev = n;
                   } else
                           man->last->last = n;
                 man->last->child = n;                  man->last->child = n;
                 n->parent = man->last;                  n->parent = man->last;
                 n->parent->last = n;  
                 break;                  break;
         default:          default:
                 abort();                  abort();
Line 1060  roff_word_alloc(struct roff_man *man, in
Line 1064  roff_word_alloc(struct roff_man *man, in
         n = roff_node_alloc(man, line, pos, ROFFT_TEXT, TOKEN_NONE);          n = roff_node_alloc(man, line, pos, ROFFT_TEXT, TOKEN_NONE);
         n->string = roff_strdup(man->roff, word);          n->string = roff_strdup(man->roff, word);
         roff_node_append(man, n);          roff_node_append(man, n);
         if (man->macroset == MACROSET_MDOC)          n->flags |= NODE_VALID | NODE_ENDED;
                 n->flags |= MDOC_VALID | MDOC_ENDED;  
         else  
                 n->flags |= MAN_VALID;  
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
   
Line 1133  roff_addeqn(struct roff_man *man, const 
Line 1134  roff_addeqn(struct roff_man *man, const 
         n = roff_node_alloc(man, eqn->ln, eqn->pos, ROFFT_EQN, TOKEN_NONE);          n = roff_node_alloc(man, eqn->ln, eqn->pos, ROFFT_EQN, TOKEN_NONE);
         n->eqn = eqn;          n->eqn = eqn;
         if (eqn->ln > man->last->line)          if (eqn->ln > man->last->line)
                 n->flags |= MDOC_LINE;                  n->flags |= NODE_LINE;
         roff_node_append(man, n);          roff_node_append(man, n);
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
Line 1148  roff_addtbl(struct roff_man *man, const 
Line 1149  roff_addtbl(struct roff_man *man, const 
         n = roff_node_alloc(man, tbl->line, 0, ROFFT_TBL, TOKEN_NONE);          n = roff_node_alloc(man, tbl->line, 0, ROFFT_TBL, TOKEN_NONE);
         n->span = tbl;          n->span = tbl;
         roff_node_append(man, n);          roff_node_append(man, n);
         if (man->macroset == MACROSET_MDOC)          n->flags |= NODE_VALID | NODE_ENDED;
                 n->flags |= MDOC_VALID | MDOC_ENDED;  
         else  
                 n->flags |= MAN_VALID;  
         man->next = ROFF_NEXT_SIBLING;          man->next = ROFF_NEXT_SIBLING;
 }  }
   
Line 1226  deroff(char **dest, const struct roff_no
Line 1224  deroff(char **dest, const struct roff_no
                 return;                  return;
         }          }
   
         /* Skip leading whitespace and escape sequences. */          /* Skip leading whitespace. */
   
         cp = n->string;          for (cp = n->string; *cp != '\0'; cp++) {
         while (*cp != '\0') {                  if (cp[0] == '\\' && cp[1] != '\0' &&
                 if ('\\' == *cp) {                      strchr(" %&0^|~", cp[1]) != NULL)
                         cp++;                          cp++;
                         mandoc_escape((void *)&cp, NULL, NULL);                  else if ( ! isspace((unsigned char)*cp))
                 } else if (isspace((unsigned char)*cp))  
                         cp++;  
                 else  
                         break;                          break;
         }          }
   
           /* Skip trailing backslash. */
   
           sz = strlen(cp);
           if (cp[sz - 1] == '\\')
                   sz--;
   
         /* Skip trailing whitespace. */          /* Skip trailing whitespace. */
   
         for (sz = strlen(cp); sz; sz--)          for (; sz; sz--)
                 if ( ! isspace((unsigned char)cp[sz-1]))                  if ( ! isspace((unsigned char)cp[sz-1]))
                         break;                          break;
   
Line 3365  roff_strdup(const struct roff *r, const 
Line 3366  roff_strdup(const struct roff *r, const 
         ssz = 0;          ssz = 0;
   
         while ('\0' != *p) {          while ('\0' != *p) {
                 if ('\\' != *p && r->xtab && r->xtab[(int)*p].p) {                  assert((unsigned int)*p < 128);
                   if ('\\' != *p && r->xtab && r->xtab[(unsigned int)*p].p) {
                         sz = r->xtab[(int)*p].sz;                          sz = r->xtab[(int)*p].sz;
                         res = mandoc_realloc(res, ssz + sz + 1);                          res = mandoc_realloc(res, ssz + sz + 1);
                         memcpy(res + ssz, r->xtab[(int)*p].p, sz);                          memcpy(res + ssz, r->xtab[(int)*p].p, sz);

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

CVSweb <webmaster@jp.NetBSD.org>