[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.9 and 1.10

version 1.9, 2022/06/05 10:19:54 version 1.10, 2022/06/05 13:54:09
Line 310  roff_escape(const char *buf, const int ln, const int a
Line 310  roff_escape(const char *buf, const int ln, const int a
         iendarg = iarg;          iendarg = iarg;
         while (maxl > 0) {          while (maxl > 0) {
                 if (buf[iendarg] == '\0') {                  if (buf[iendarg] == '\0') {
                           err = MANDOCERR_ESC_INCOMPLETE;
                           if (rval != ESCAPE_EXPAND)
                                   rval = ESCAPE_ERROR;
                         /* 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 401  roff_escape(const char *buf, const int ln, const int a
Line 400  roff_escape(const char *buf, const int ln, const int a
                  */                   */
   
                 if (term != '\0' && argl == 1 && buf[iarg] != '-') {                  if (term != '\0' && argl == 1 && buf[iarg] != '-') {
                           err = MANDOCERR_ESC_BADCHAR;
                         rval = ESCAPE_ERROR;                          rval = ESCAPE_ERROR;
                         break;                          break;
                 }                  }
Line 416  roff_escape(const char *buf, const int ln, const int a
Line 416  roff_escape(const char *buf, const int ln, const int a
                         c = 0;                          c = 0;
                         for (i = iarg; i < iendarg; i++)                          for (i = iarg; i < iendarg; i++)
                                 c = 10 * c + (buf[i] - '0');                                  c = 10 * c + (buf[i] - '0');
                         if (c < 0x21 || (c > 0x7e && c < 0xa0) || c > 0xff)                          if (c < 0x21 || (c > 0x7e && c < 0xa0) || c > 0xff) {
                                   err = MANDOCERR_ESC_BADCHAR;
                                 break;                                  break;
                           }
                         iarg += 4;                          iarg += 4;
                         rval = ESCAPE_NUMBERED;                          rval = ESCAPE_NUMBERED;
                         break;                          break;
Line 433  roff_escape(const char *buf, const int ln, const int a
Line 435  roff_escape(const char *buf, const int ln, const int a
                 if (buf[iarg] != 'u' || argl < 5 || argl > 7)                  if (buf[iarg] != 'u' || argl < 5 || argl > 7)
                         break;                          break;
                 if (argl == 7 &&                  if (argl == 7 &&
                     (buf[iarg + 1] != '1' || buf[iarg + 2] != '0'))                      (buf[iarg + 1] != '1' || buf[iarg + 2] != '0')) {
                           err = MANDOCERR_ESC_BADCHAR;
                         break;                          break;
                 if (argl == 6 && buf[iarg + 1] == '0')                  }
                   if (argl == 6 && buf[iarg + 1] == '0') {
                           err = MANDOCERR_ESC_BADCHAR;
                         break;                          break;
                   }
                 if (argl == 5 && buf[iarg + 1] == 'D' &&                  if (argl == 5 && buf[iarg + 1] == 'D' &&
                     strchr("89ABCDEF", buf[iarg + 2]) != NULL)                      strchr("89ABCDEF", buf[iarg + 2]) != NULL) {
                           err = MANDOCERR_ESC_BADCHAR;
                         break;                          break;
                   }
                 if ((int)strspn(buf + iarg + 1, "0123456789ABCDEFabcdef")                  if ((int)strspn(buf + iarg + 1, "0123456789ABCDEFabcdef")
                     + 1 == argl)                      + 1 == argl)
                         rval = ESCAPE_UNICODE;                          rval = ESCAPE_UNICODE;
Line 477  out:
Line 485  out:
         *resc = iesc;          *resc = iesc;
         switch (rval) {          switch (rval) {
         case ESCAPE_ERROR:          case ESCAPE_ERROR:
                 err = MANDOCERR_ESC_BAD;                  if (err == MANDOCERR_OK)
                           err = MANDOCERR_ESC_BAD;
                 break;                  break;
         case ESCAPE_UNSUPP:          case ESCAPE_UNSUPP:
                 err = MANDOCERR_ESC_UNSUPP;                  err = MANDOCERR_ESC_UNSUPP;
Line 487  out:
Line 496  out:
                         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)
                         err = MANDOCERR_ESC_BAD;                          err = MANDOCERR_OK;
                   else if (err == MANDOCERR_OK)
                           err = MANDOCERR_ESC_UNKCHAR;
                 break;                  break;
         default:          default:
                 break;                  break;

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

CVSweb