Changeset 14 for temp

Show
Ignore:
Timestamp:
11/14/06 15:58:59 (2 years ago)
Author:
inz
Message:

Fixed this.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • temp/parse.c

    r4 r14  
    2222        DQUOT = 1 << 5, 
    2323        COMM = 1 << 6, 
    24         FINISHED = 1 << 7, 
     24        STYLE = 1 << 7, 
     25        FINISHED = 1 << 8, 
    2526}; 
    2627 
     
    101102                } 
    102103 
    103                 memcpy(req->buffer + req->offset, ptr, bytes); 
     104                memcpy(req->buffer + req->offset, ptr + bytes_used, bytes); 
    104105                bytes_used += bytes; 
    105106 
     
    121122                                } 
    122123                                continue; 
     124                        } else if (req->state & STYLE) { 
     125                                if (req->buffer[i] == '<') { 
     126                                        req->start_tag = &req->buffer[i]; 
     127                                } else if (req->buffer[i] == '>' && 
     128                                                req->start_tag) { 
     129                                        if (strncmp("</style>", 
     130                                                                req->start_tag, 
     131                                                                7) == 0) { 
     132                                                req->state &= ~STYLE; 
     133                                        } 
     134                                        req->start_tag = NULL; 
     135                                } else if (!strchr("/style", req->buffer[i])) { 
     136                                        req->start_tag = NULL; 
     137                                } 
    123138                        } else if (req->state & DQUOT) { 
    124139                                if (req->buffer[i] == '"') { 
     
    201216                                                        req->state |= LINK; 
    202217                                                } 
     218                                                else if (strncmp(req->start_tag, "<style ", 7) == 0) { 
     219                                                        req->state |= STYLE; 
     220                                                } 
    203221                                        } 
    204222                                        req->last_space = &req->buffer[i]; 
     
    233251                } 
    234252                if (req->start_tag && (req->start_tag != req->buffer || req->offset + bytes >= 1000)) { 
    235                         req->offset = bytes - (req->start_tag - req->buffer); 
     253                        req->offset = (bytes + req->offset) - (req->start_tag - req->buffer); 
     254                        printf("Offset: %u, %u, %p, %p\n", req->offset, bytes, req->start_tag, req->buffer); 
    236255                        memmove(req->buffer, req->start_tag, req->offset); 
    237256                        if (req->start_rel) { 
     
    247266                } else { 
    248267                        req->offset = 0; 
     268                        printf("Offset: %u\n", req->offset); 
    249269                        req->start_tag = NULL; 
    250270                        req->start_rel = NULL;