~ubuntu-branches/ubuntu/utopic/sip-tester/utopic

« back to all changes in this revision

Viewing changes to xp_parser.c

  • Committer: Package Import Robot
  • Author(s): Mark Purcell, Paul Belanger, Mark Purcell
  • Date: 2011-11-03 21:56:17 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20111103215617-nnxicj1oto9e8ix5
Tags: 1:3.2-1
[ Paul Belanger ]
* New Upstream Release (Closes: #623915).
* Switch to dpkg-source 3.0 (quilt) format
* Building with PCAP play.
* Switch back to Debhelper.
* debian/patches/spelling-error-in-binary: Fix lintian warning

[ Mark Purcell ]
* Drop pabs from Uploaders: at his request
* fix debhelper-overrides-need-versioned-build-depends
* fix description-synopsis-starts-with-article

Show diffs side-by-side

added added

removed removed

Lines of Context:
77
77
 * into other elements. */
78
78
char * xp_find_start_tag_end(char *ptr)
79
79
{
80
 
  char *optr = ptr;
81
80
  while(*ptr) {
82
81
    if (*ptr == '<') {
83
82
      if ((strstr(ptr,"<!--") == ptr)) {
234
233
        level--;
235
234
        if(level < 0) return NULL;
236
235
      } else {
237
 
        if(level==0) {
238
 
          if(index) {
239
 
            index--;
240
 
          } else {
241
 
            char * end = xp_find_start_tag_end(ptr + 1);
242
 
            char * p;
243
 
            if(!end) return NULL;
244
 
 
245
 
            p = strchr(ptr, ' ');
246
 
            if(p && (p < end))  { end = p; }
247
 
            p = strchr(ptr, '\t');
248
 
            if(p && (p < end))  { end = p; }
249
 
            p = strchr(ptr, '\r');
250
 
            if(p && (p < end))  { end = p; }
251
 
            p = strchr(ptr, '\n');
252
 
            if(p && (p < end))  { end = p; }
253
 
            p = strchr(ptr, '/');
254
 
            if(p && (p < end))  { end = p; }
255
 
 
256
 
            memcpy(name, ptr + 1, end-ptr-1);
257
 
            name[end-ptr-1] = 0;
258
 
            
259
 
            xp_position[++xp_stack] = end;
260
 
            return name;
261
 
          }
262
 
        }
263
 
        level ++;
 
236
        if(level==0) {
 
237
          if (index) {
 
238
            index --;
 
239
          } else {
 
240
            char * end = xp_find_start_tag_end(ptr + 1);
 
241
            char * p;
 
242
            if(!end) return NULL;
 
243
 
 
244
            p = strchr(ptr, ' ');
 
245
            if(p && (p < end))  { end = p; }
 
246
            p = strchr(ptr, '\t');
 
247
            if(p && (p < end))  { end = p; }
 
248
            p = strchr(ptr, '\r');
 
249
            if(p && (p < end))  { end = p; }
 
250
            p = strchr(ptr, '\n');
 
251
            if(p && (p < end))  { end = p; }
 
252
            p = strchr(ptr, '/');
 
253
            if(p && (p < end))  { end = p; }
 
254
 
 
255
            memcpy(name, ptr + 1, end-ptr-1);
 
256
            name[end-ptr-1] = 0;
 
257
 
 
258
            xp_position[++xp_stack] = end;
 
259
            return name;
 
260
          }
 
261
        }
 
262
 
 
263
        /* We want to skip over this particular element .*/
 
264
        ptr = xp_find_start_tag_end(ptr + 1);
 
265
        if (ptr) ptr--;
 
266
        level ++;
264
267
      }
265
268
    } else if((*ptr == '/') && (*(ptr+1) == '>')) {
266
269
      level --;