[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.4 and 1.5

version 1.4, 2022/05/31 18:09:57 version 1.5, 2022/05/31 20:23:05
Line 73  roff_escape(const char *buf, const int ln, const int a
Line 73  roff_escape(const char *buf, const int ln, const int a
         int              maxl;          /* expected length of the argument */          int              maxl;          /* expected length of the argument */
         int              argl;          /* actual length of the argument */          int              argl;          /* actual length of the argument */
         int              c, i;          /* for \[char...] parsing */          int              c, i;          /* for \[char...] parsing */
           int              valid_A;       /* for \A parsing */
         enum mandoc_esc  rval;          /* return value */          enum mandoc_esc  rval;          /* return value */
         enum mandocerr   err;           /* diagnostic code */          enum mandocerr   err;           /* diagnostic code */
         char             esc_name;          char             esc_name;
Line 181  roff_escape(const char *buf, const int ln, const int a
Line 182  roff_escape(const char *buf, const int ln, const int a
   
         /* Quoted arguments */          /* Quoted arguments */
   
           case 'A':
         case 'B':          case 'B':
         case 'w':          case 'w':
                 rval = ESCAPE_EXPAND;                  rval = ESCAPE_EXPAND;
                 term = '\b';                  term = '\b';
                 break;                  break;
         case 'A':  
         case 'D':          case 'D':
         case 'H':          case 'H':
         case 'L':          case 'L':
Line 301  roff_escape(const char *buf, const int ln, const int a
Line 302  roff_escape(const char *buf, const int ln, const int a
   
         /* Advance to the end of the argument. */          /* Advance to the end of the argument. */
   
           valid_A = 1;
         iendarg = iarg;          iendarg = iarg;
         while (maxl > 0) {          while (maxl > 0) {
                 if (buf[iendarg] == '\0') {                  if (buf[iendarg] == '\0') {
Line 319  roff_escape(const char *buf, const int ln, const int a
Line 321  roff_escape(const char *buf, const int ln, const int a
                         break;                          break;
                 }                  }
                 if (buf[iendarg] == buf[iesc]) {                  if (buf[iendarg] == buf[iesc]) {
                         if (roff_escape(buf, ln, iendarg,                          switch (roff_escape(buf, ln, iendarg,
                             &sesc, &sarg, &sendarg, &send) == ESCAPE_EXPAND)                              &sesc, &sarg, &sendarg, &send)) {
                           case ESCAPE_EXPAND:
                                 goto out_sub;                                  goto out_sub;
                           case ESCAPE_UNDEF:
                                   break;
                           default:
                                   valid_A = 0;
                                   break;
                           }
                         iendarg = iend = send;                          iendarg = iend = send;
                 } else {                  } else {
                           if (buf[iendarg] == ' ' || buf[iendarg] == '\t')
                                   valid_A = 0;
                         if (maxl != INT_MAX)                          if (maxl != INT_MAX)
                                 maxl--;                                  maxl--;
                         iend = ++iendarg;                          iend = ++iendarg;
Line 341  roff_escape(const char *buf, const int ln, const int a
Line 352  roff_escape(const char *buf, const int ln, const int a
                 if (resc == NULL && argl == 2 &&                  if (resc == NULL && argl == 2 &&
                     buf[iarg] == '.' && buf[iarg + 1] == 'T')                      buf[iarg] == '.' && buf[iarg + 1] == 'T')
                         rval = ESCAPE_DEVICE;                          rval = ESCAPE_DEVICE;
                   break;
           case 'A':
                   if (valid_A == 0)
                           iendarg = iarg;
                 break;                  break;
         case 'O':          case 'O':
                 switch (buf[iarg]) {                  switch (buf[iarg]) {

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

CVSweb