/[debian]/mimetic/branches/upstream/current/mimetic/parser/itparser.h
ViewVC logotype

Diff of /mimetic/branches/upstream/current/mimetic/parser/itparser.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1728 by gregoa, Wed Oct 8 16:15:50 2008 UTC revision 1729 by gregoa, Fri May 15 15:30:29 2009 UTC
# Line 306  protected: Line 306  protected:
306                  status = (isnl(c) ? sNewline : sName);                  status = (isnl(c) ? sNewline : sName);
307                  continue;                  continue;
308              case sWaitingValue:              case sWaitingValue:
309                  if(isblank(c) || isnl(c))                  if(isblank(c))
310                      break; // eat leading blanks                      break; // eat leading blanks
311                  status = sValue;                  status = sValue;
312                  continue;                  continue;
# Line 318  protected: Line 318  protected:
318                  continue;                  continue;
319              case sName:              case sName:
320                  if(c > 32 && c < 127 && c != ':') {                  if(c > 32 && c < 127 && c != ':') {
321                        if(nPos > 0 && isblank(name[nPos-1]))
322                        {
323                            /* "FIELDNAME BLANK+ c" found, consider that the first
324                               body line */
325                            onBlock(name, nPos, peBody);
326                            goto out;
327                        }
328                      append(name, nBufSz, c, nPos);                      append(name, nBufSz, c, nPos);
329                  } else if(c == ':') {                  } else if(c == ':') {
330                        if(nPos == 0)
331                        {
332                            /* header line starting with ':', ignore the line */
333                            status = sIgnoreLine;
334                            continue;
335                        }
336    
337                        /* malformed fix: remove any trailing blanks of the field
338                           name */
339                        while(nPos > 0 && isblank(name[nPos-1]))
340                            nPos--;
341    
342                      status = sWaitingValue;                      status = sWaitingValue;
343                    } else if(isblank(c)) {
344                        /* blank after the field name -> malformed; it may be a
345                           malformed field with trailing blank or
346                           the start of the body; save the char so we can try to
347                           recover later trimming the field name or push the
348                           whole line to the body part with onBlock() */
349                        append(name, nBufSz, c, nPos);
350                  } else {                  } else {
351                      nPos = 0;                      /* bad header line or blank line between header and body is
352                      status = sIgnoreLine;                         missing; consider we're in the first line of the body */
353                      continue;                      onBlock(name, nPos, peBody);
354                        goto out;
355                  }                  }
356                  break;                  break;
357              case sValue:              case sValue:

Legend:
Removed from v.1728  
changed lines
  Added in v.1729

  ViewVC Help
Powered by ViewVC 1.1.26