diff -r 99a34860c105 -r d938228c382e src/server/safs/cgi.c --- a/src/server/safs/cgi.c Wed Nov 02 19:19:01 2022 +0100 +++ b/src/server/safs/cgi.c Sun Nov 06 15:53:32 2022 +0100 @@ -36,7 +36,7 @@ #include #include -#include +#include #include "../util/util.h" #include "../util/pblock.h" @@ -216,13 +216,13 @@ // child // get script directory and script name - sstr_t script = sstr(path); - sstr_t parent; + cxstring script = cx_str(path); + cxmutstr parent; int len = strlen(path); for(int i=len-1;i>=0;i--) { if(path[i] == '/') { - script = sstrn(path + i + 1, len - i); - parent = sstrdup(sstrn(path, i)); + script = cx_strn(path + i + 1, len - i); + parent = cx_strdup(cx_strn(path, i)); if(chdir(parent.ptr)) { perror("cgi_start: chdir"); free(parent.ptr); @@ -281,15 +281,15 @@ CGIResponseParser* parser = pool_malloc(sn->pool, sizeof(CGIResponseParser)); parser->sn = sn; parser->rq = rq; - parser->tmp = ucx_buffer_new(NULL, 64, UCX_BUFFER_AUTOEXTEND); parser->status = 0; parser->msg = NULL; + cxBufferInit(&parser->tmp, NULL, 64, pool_allocator(sn->pool), CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS); return parser; } void cgi_parser_free(CGIResponseParser *parser) { - if(parser->tmp) { - ucx_buffer_free(parser->tmp); + if(parser->tmp.space) { + cxBufferDestroy(&parser->tmp); } pool_free(parser->sn->pool, parser); } @@ -302,9 +302,9 @@ * -1: error */ static int parse_lines(CGIResponseParser *parser, char *buf, size_t len, int *pos) { - UcxAllocator a = util_pool_allocator(parser->sn->pool); - sstr_t name; - sstr_t value; + CxAllocator *a = pool_allocator(parser->sn->pool); + cxmutstr name; + cxmutstr value; WSBool space = TRUE; int i; @@ -313,7 +313,7 @@ for(i=0;istatus = (int)s; - sstr_t msg = sstrtrim(sstrsubs(value, j + 1)); + cxmutstr msg = cx_strtrim_m(cx_strsubs_m(value, j + 1)); if(msg.length > 0) { - parser->msg = sstrdup_pool(parser->sn->pool, msg).ptr; + parser->msg = cx_strdup_pool(parser->sn->pool, msg).ptr; } } else { pblock_nvlinsert( @@ -388,7 +389,7 @@ int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos) { *bpos = 0; int pos = 0; - if(parser->tmp->pos > 0) { + if(parser->tmp.pos > 0) { // the tmp buffer contains an unfinished line // fill up the buffer until the line is complete WSBool nb = FALSE; @@ -398,12 +399,12 @@ break; } } - ucx_buffer_write(buf, 1, pos, parser->tmp); + cxBufferWrite(buf, 1, pos, &parser->tmp); if(nb) { // line complete int npos; - int r = parse_lines(parser, parser->tmp->space, parser->tmp->pos, &npos); + int r = parse_lines(parser, parser->tmp.space, parser->tmp.pos, &npos); switch(r) { case -1: return -1; case 0: return -1; @@ -414,9 +415,9 @@ } } // reset tmp buffer - parser->tmp->pos = 0; + parser->tmp.pos = 0; } else { - if(parser->tmp->pos > CGI_RESPONSE_MAX_LINE_LENGTH) { + if(parser->tmp.pos > CGI_RESPONSE_MAX_LINE_LENGTH) { return -1; } } @@ -430,7 +431,7 @@ case 1: { int newlen = len - npos; if(npos > 0) { - ucx_buffer_write(buf + npos, 1, newlen, parser->tmp); + cxBufferWrite(buf + npos, 1, newlen, &parser->tmp); } return 0; }