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

Diff for /mandoc/mdoc_argv.c between version 1.85 and 1.87

version 1.85, 2012/11/17 00:26:33 version 1.87, 2013/12/15 23:56:42
Line 161  static const struct mdocarg mdocargs[MDOC_MAX] = {
Line 161  static const struct mdocarg mdocargs[MDOC_MAX] = {
         { ARGSFL_DELIM, NULL }, /* Ad */          { ARGSFL_DELIM, NULL }, /* Ad */
         { ARGSFL_DELIM, args_An }, /* An */          { ARGSFL_DELIM, args_An }, /* An */
         { ARGSFL_DELIM, NULL }, /* Ar */          { ARGSFL_DELIM, NULL }, /* Ar */
         { ARGSFL_NONE, NULL }, /* Cd */          { ARGSFL_DELIM, NULL }, /* Cd */
         { ARGSFL_DELIM, NULL }, /* Cm */          { ARGSFL_DELIM, NULL }, /* Cm */
         { ARGSFL_DELIM, NULL }, /* Dv */          { ARGSFL_DELIM, NULL }, /* Dv */
         { ARGSFL_DELIM, NULL }, /* Er */          { ARGSFL_DELIM, NULL }, /* Er */
Line 241  static const struct mdocarg mdocargs[MDOC_MAX] = {
Line 241  static const struct mdocarg mdocargs[MDOC_MAX] = {
         { ARGSFL_DELIM, NULL }, /* Xc */          { ARGSFL_DELIM, NULL }, /* Xc */
         { ARGSFL_NONE, NULL }, /* Xo */          { ARGSFL_NONE, NULL }, /* Xo */
         { ARGSFL_NONE, NULL }, /* Fo */          { ARGSFL_NONE, NULL }, /* Fo */
         { ARGSFL_NONE, NULL }, /* Fc */          { ARGSFL_DELIM, NULL }, /* Fc */
         { ARGSFL_NONE, NULL }, /* Oo */          { ARGSFL_NONE, NULL }, /* Oo */
         { ARGSFL_DELIM, NULL }, /* Oc */          { ARGSFL_DELIM, NULL }, /* Oc */
         { ARGSFL_NONE, args_Bk }, /* Bk */          { ARGSFL_NONE, args_Bk }, /* Bk */
Line 250  static const struct mdocarg mdocargs[MDOC_MAX] = {
Line 250  static const struct mdocarg mdocargs[MDOC_MAX] = {
         { ARGSFL_NONE, NULL }, /* Hf */          { ARGSFL_NONE, NULL }, /* Hf */
         { ARGSFL_NONE, NULL }, /* Fr */          { ARGSFL_NONE, NULL }, /* Fr */
         { ARGSFL_NONE, NULL }, /* Ud */          { ARGSFL_NONE, NULL }, /* Ud */
         { ARGSFL_NONE, NULL }, /* Lb */          { ARGSFL_DELIM, NULL }, /* Lb */
         { ARGSFL_NONE, NULL }, /* Lp */          { ARGSFL_NONE, NULL }, /* Lp */
         { ARGSFL_DELIM, NULL }, /* Lk */          { ARGSFL_DELIM, NULL }, /* Lk */
         { ARGSFL_DELIM, NULL }, /* Mt */          { ARGSFL_DELIM, NULL }, /* Mt */
Line 447  args(struct mdoc *mdoc, int line, int *pos, 
Line 447  args(struct mdoc *mdoc, int line, int *pos, 
                 char *buf, enum argsflag fl, char **v)                  char *buf, enum argsflag fl, char **v)
 {  {
         char            *p, *pp;          char            *p, *pp;
           int              pairs;
         enum margserr    rc;          enum margserr    rc;
   
         if ('\0' == buf[*pos]) {          if ('\0' == buf[*pos]) {
Line 540  args(struct mdoc *mdoc, int line, int *pos, 
Line 541  args(struct mdoc *mdoc, int line, int *pos, 
         /*          /*
          * Process a quoted literal.  A quote begins with a double-quote           * Process a quoted literal.  A quote begins with a double-quote
          * and ends with a double-quote NOT preceded by a double-quote.           * and ends with a double-quote NOT preceded by a double-quote.
            * Null-terminate the literal in place.
            * Collapse pairs of quotes inside quoted literals.
          * Whitespace is NOT involved in literal termination.           * Whitespace is NOT involved in literal termination.
          */           */
   
Line 550  args(struct mdoc *mdoc, int line, int *pos, 
Line 553  args(struct mdoc *mdoc, int line, int *pos, 
                 if (MDOC_PPHRASE & mdoc->flags)                  if (MDOC_PPHRASE & mdoc->flags)
                         mdoc->flags |= MDOC_PHRASELIT;                          mdoc->flags |= MDOC_PHRASELIT;
   
                   pairs = 0;
                 for ( ; buf[*pos]; (*pos)++) {                  for ( ; buf[*pos]; (*pos)++) {
                           /* Move following text left after quoted quotes. */
                           if (pairs)
                                   buf[*pos - pairs] = buf[*pos];
                         if ('\"' != buf[*pos])                          if ('\"' != buf[*pos])
                                 continue;                                  continue;
                           /* Unquoted quotes end quoted args. */
                         if ('\"' != buf[*pos + 1])                          if ('\"' != buf[*pos + 1])
                                 break;                                  break;
                           /* Quoted quotes collapse. */
                           pairs++;
                         (*pos)++;                          (*pos)++;
                 }                  }
                   if (pairs)
                           buf[*pos - pairs] = '\0';
   
                 if ('\0' == buf[*pos]) {                  if ('\0' == buf[*pos]) {
                         if (MDOC_PPHRASE & mdoc->flags)                          if (MDOC_PPHRASE & mdoc->flags)

Legend:
Removed from v.1.85  
changed lines
  Added in v.1.87

CVSweb