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

Diff for /mandoc/roff_escape.c between version 1.8 and 1.9

version 1.8, 2022/06/02 14:51:41 version 1.9, 2022/06/05 10:19:54
Line 98  roff_escape(const char *buf, const int ln, const int a
Line 98  roff_escape(const char *buf, const int ln, const int a
         iarg = iendarg = iend = inam + 1;          iarg = iendarg = iend = inam + 1;
         maxl = INT_MAX;          maxl = INT_MAX;
         term = '\0';          term = '\0';
           err = MANDOCERR_OK;
         switch (buf[inam]) {          switch (buf[inam]) {
   
         /* Escape sequences taking no arguments at all. */          /* Escape sequences taking no arguments at all. */
Line 312  roff_escape(const char *buf, const int ln, const int a
Line 313  roff_escape(const char *buf, const int ln, const int a
                         /* Ignore an incomplete argument except for \w. */                          /* Ignore an incomplete argument except for \w. */
                         if (buf[inam] != 'w')                          if (buf[inam] != 'w')
                                 iendarg = iarg;                                  iendarg = iarg;
                           if (rval == ESCAPE_EXPAND)
                                   err = MANDOCERR_ESC_BAD;
                           else
                                   rval = ESCAPE_ERROR;
                         break;                          break;
                 }                  }
                 if (buf[iendarg] == term) {                  if (buf[iendarg] == term) {
Line 343  roff_escape(const char *buf, const int ln, const int a
Line 348  roff_escape(const char *buf, const int ln, const int a
                         iend = ++iendarg;                          iend = ++iendarg;
                 }                  }
         }          }
         if (resc != NULL && ((maxl != INT_MAX && maxl != 0) ||  
             (term != '\0' && buf[iendarg] != term)))  
                 mandoc_msg(MANDOCERR_ESC_BAD, ln, iesc, "%s", buf + iesc);  
   
         /* Post-process depending on the content of the argument. */          /* Post-process depending on the content of the argument. */
   
Line 481  out:
Line 483  out:
                 err = MANDOCERR_ESC_UNSUPP;                  err = MANDOCERR_ESC_UNSUPP;
                 break;                  break;
         case ESCAPE_UNDEF:          case ESCAPE_UNDEF:
                 if (buf[inam] == '\\' || buf[inam] == '.')                  if (buf[inam] != '\\' && buf[inam] != '.')
                         return rval;                          err = MANDOCERR_ESC_UNDEF;
                 err = MANDOCERR_ESC_UNDEF;  
                 break;                  break;
         case ESCAPE_SPECIAL:          case ESCAPE_SPECIAL:
                 if (mchars_spec2cp(buf + iarg, argl) >= 0)                  if (mchars_spec2cp(buf + iarg, argl) < 0)
                         return rval;                          err = MANDOCERR_ESC_BAD;
                 err = MANDOCERR_ESC_BAD;  
                 break;                  break;
         default:          default:
                 return rval;                  break;
         }          }
         mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc);          if (err != MANDOCERR_OK)
                   mandoc_msg(err, ln, iesc, "%.*s", iend - iesc, buf + iesc);
         return rval;          return rval;
 }  }

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

CVSweb