Changeset 0005b63 in mainline for uspace/lib/http/headers.c


Ignore:
Timestamp:
2013-09-21T11:22:07Z (11 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c17469e
Parents:
ff364f1
Message:

libhttp: make header api a little bit more flexible

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/http/headers.c

    rff364f1 r0005b63  
    4949}
    5050
    51 http_header_t *http_header_create(const char *name, const char *value)
     51void http_header_init(http_header_t *header)
    5252{
    53         char *dname = str_dup(name);
    54         if (dname == NULL)
    55                 return NULL;
    56        
    57         char *dvalue = str_dup(value);
    58         if (dvalue == NULL) {
    59                 free(dname);
    60                 return NULL;
    61         }
    62 
    63         return http_header_create_no_copy(dname, dvalue);
     53        link_initialize(&header->link);
     54        header->name = NULL;
     55        header->value = NULL;
    6456}
    6557
    66 http_header_t *http_header_create_no_copy(char *name, char *value)
     58http_header_t *http_header_create(const char *name, const char *value)
    6759{
    6860        http_header_t *header = malloc(sizeof(http_header_t));
    6961        if (header == NULL)
    7062                return NULL;
     63        http_header_init(header);
     64
     65        header->name = str_dup(name);
     66        if (header->name == NULL) {
     67                free(header);
     68                return NULL;
     69        }
    7170       
    72         link_initialize(&header->link);
    73         header->name = name;
    74         header->value = value;
    75        
     71        header->value = str_dup(value);
     72        if (header->value == NULL) {
     73                free(header->name);
     74                free(header);
     75                return NULL;
     76        }
     77
    7678        return header;
    7779}
     
    8486}
    8587
    86 ssize_t http_encode_header(char *buf, size_t buf_size, http_header_t *header)
     88ssize_t http_header_encode(http_header_t *header, char *buf, size_t buf_size)
    8789{
    8890        /* TODO properly split long header values */
     
    9698}
    9799
    98 int http_parse_header(const char *line, char **out_name, char **out_value)
     100int http_header_parse(const char *line, http_header_t *header)
    99101{
    100102        const char *pos = line;
     
    117119        }
    118120       
    119         *out_name = name;
    120         *out_value = value;
     121        header->name = name;
     122        header->value = value;
    121123       
    122124        return EOK;
Note: See TracChangeset for help on using the changeset viewer.