version 1.2, 2019/03/29 18:09:43 |
version 1.3, 2019/04/03 08:39:53 |
|
|
parse_file(int fd, char *fname) |
parse_file(int fd, char *fname) |
{ |
{ |
char b[4096]; |
char b[4096]; |
|
char *cp; |
ssize_t rsz; /* Return value from read(2). */ |
ssize_t rsz; /* Return value from read(2). */ |
size_t rlen; /* Number of bytes in b[]. */ |
size_t rlen; /* Number of bytes in b[]. */ |
size_t poff; /* Parse offset in b[]. */ |
size_t poff; /* Parse offset in b[]. */ |
Line 232 parse_file(int fd, char *fname) |
|
Line 233 parse_file(int fd, char *fname) |
|
} else if (b[poff] == '<') { |
} else if (b[poff] == '<') { |
if (advance(b, rlen, &pend, " >") && rsz > 0) |
if (advance(b, rlen, &pend, " >") && rsz > 0) |
break; |
break; |
|
if (pend > poff + 3 && |
|
strncmp(b + poff, "<!--", 4) == 0) { |
|
/* Skip a comment. */ |
|
cp = strstr(b + pend - 2, "-->"); |
|
if (cp == NULL) { |
|
pend = rlen; |
|
if (rsz > 0) |
|
break; |
|
} else |
|
pend = cp + 3 - b; |
|
continue; |
|
} |
elem_end = 0; |
elem_end = 0; |
if (b[pend] != '>') |
if (b[pend] != '>') |
in_tag = 1; |
in_tag = 1; |