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

Diff for /mandoc/roff.c between version 1.310 and 1.311

version 1.310, 2017/06/14 14:02:39 version 1.311, 2017/06/14 19:39:18
Line 146  static void   roffnode_cleanscope(struct roff *);
Line 146  static void   roffnode_cleanscope(struct roff *);
 static  void             roffnode_pop(struct roff *);  static  void             roffnode_pop(struct roff *);
 static  void             roffnode_push(struct roff *, enum roff_tok,  static  void             roffnode_push(struct roff *, enum roff_tok,
                                 const char *, int, int);                                  const char *, int, int);
   static  enum rofferr     roff_als(ROFF_ARGS);
 static  enum rofferr     roff_block(ROFF_ARGS);  static  enum rofferr     roff_block(ROFF_ARGS);
 static  enum rofferr     roff_block_text(ROFF_ARGS);  static  enum rofferr     roff_block_text(ROFF_ARGS);
 static  enum rofferr     roff_block_sub(ROFF_ARGS);  static  enum rofferr     roff_block_sub(ROFF_ARGS);
Line 343  static struct roffmac  roffs[TOKEN_NONE] = {
Line 344  static struct roffmac  roffs[TOKEN_NONE] = {
         { roff_line_ignore, NULL, NULL, 0 },  /* ad */          { roff_line_ignore, NULL, NULL, 0 },  /* ad */
         { roff_line_ignore, NULL, NULL, 0 },  /* af */          { roff_line_ignore, NULL, NULL, 0 },  /* af */
         { roff_unsupp, NULL, NULL, 0 },  /* aln */          { roff_unsupp, NULL, NULL, 0 },  /* aln */
         { roff_unsupp, NULL, NULL, 0 },  /* als */          { roff_als, NULL, NULL, 0 },  /* als */
         { roff_block, roff_block_text, roff_block_sub, 0 },  /* am */          { roff_block, roff_block_text, roff_block_sub, 0 },  /* am */
         { roff_block, roff_block_text, roff_block_sub, 0 },  /* am1 */          { roff_block, roff_block_text, roff_block_sub, 0 },  /* am1 */
         { roff_block, roff_block_text, roff_block_sub, 0 },  /* ami */          { roff_block, roff_block_text, roff_block_sub, 0 },  /* ami */
Line 1779  roff_block(ROFF_ARGS)
Line 1780  roff_block(ROFF_ARGS)
          * appended from roff_block_text() in multiline mode.           * appended from roff_block_text() in multiline mode.
          */           */
   
         if (tok == ROFF_de || tok == ROFF_dei)          if (tok == ROFF_de || tok == ROFF_dei) {
                 roff_setstrn(&r->strtab, name, namesz, "", 0, 0);                  roff_setstrn(&r->strtab, name, namesz, "", 0, 0);
                   roff_setstrn(&r->rentab, name, namesz, NULL, 0, 0);
           }
   
         if (*cp == '\0')          if (*cp == '\0')
                 return ROFF_IGN;                  return ROFF_IGN;
Line 2249  roff_ds(ROFF_ARGS)
Line 2252  roff_ds(ROFF_ARGS)
         /* The rest is the value. */          /* The rest is the value. */
         roff_setstrn(&r->strtab, name, namesz, string, strlen(string),          roff_setstrn(&r->strtab, name, namesz, string, strlen(string),
             ROFF_as == tok);              ROFF_as == tok);
           roff_setstrn(&r->rentab, name, namesz, NULL, 0, 0);
         return ROFF_IGN;          return ROFF_IGN;
 }  }
   
Line 2660  roff_rm(ROFF_ARGS)
Line 2664  roff_rm(ROFF_ARGS)
                 name = cp;                  name = cp;
                 namesz = roff_getname(r, &cp, ln, (int)(cp - buf->buf));                  namesz = roff_getname(r, &cp, ln, (int)(cp - buf->buf));
                 roff_setstrn(&r->strtab, name, namesz, NULL, 0, 0);                  roff_setstrn(&r->strtab, name, namesz, NULL, 0, 0);
                   roff_setstrn(&r->rentab, name, namesz, NULL, 0, 0);
                 if (name[namesz] == '\\')                  if (name[namesz] == '\\')
                         break;                          break;
         }          }
Line 2958  roff_manyarg(ROFF_ARGS)
Line 2963  roff_manyarg(ROFF_ARGS)
 }  }
   
 static enum rofferr  static enum rofferr
   roff_als(ROFF_ARGS)
   {
           char            *oldn, *newn, *end, *value;
           size_t           oldsz, newsz, valsz;
   
           newn = oldn = buf->buf + pos;
           if (*newn == '\0')
                   return ROFF_IGN;
   
           newsz = roff_getname(r, &oldn, ln, pos);
           if (newn[newsz] == '\\' || *oldn == '\0')
                   return ROFF_IGN;
   
           end = oldn;
           oldsz = roff_getname(r, &end, ln, oldn - buf->buf);
           if (oldsz == 0)
                   return ROFF_IGN;
   
           valsz = mandoc_asprintf(&value, ".%.*s \\$*\n", (int)oldsz, oldn);
           roff_setstrn(&r->strtab, newn, newsz, value, valsz, 0);
           roff_setstrn(&r->rentab, newn, newsz, NULL, 0, 0);
           free(value);
           return ROFF_IGN;
   }
   
   static enum rofferr
 roff_br(ROFF_ARGS)  roff_br(ROFF_ARGS)
 {  {
         if (r->man->flags & (MAN_BLINE | MAN_ELINE))          if (r->man->flags & (MAN_BLINE | MAN_ELINE))
Line 3162  roff_so(ROFF_ARGS)
Line 3193  roff_so(ROFF_ARGS)
 static enum rofferr  static enum rofferr
 roff_userdef(ROFF_ARGS)  roff_userdef(ROFF_ARGS)
 {  {
         const char       *arg[9], *ap;          const char       *arg[16], *ap;
         char             *cp, *n1, *n2;          char             *cp, *n1, *n2;
         int               expand_count, i, ib, ie;          int               expand_count, i, ib, ie;
         size_t            asz, rsz;          size_t            asz, rsz;
Line 3174  roff_userdef(ROFF_ARGS)
Line 3205  roff_userdef(ROFF_ARGS)
   
         r->argc = 0;          r->argc = 0;
         cp = buf->buf + pos;          cp = buf->buf + pos;
         for (i = 0; i < 9; i++) {          for (i = 0; i < 16; i++) {
                 if (*cp == '\0')                  if (*cp == '\0')
                         arg[i] = "";                          arg[i] = "";
                 else {                  else {

Legend:
Removed from v.1.310  
changed lines
  Added in v.1.311

CVSweb