costin 01/12/06 14:59:52 Modified: jk/native2/common jk_logger_file.c jk_map.c Log: Updates, use pools, etc. Revision Changes Path 1.5 +7 -6 jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c Index: jk_logger_file.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jk_logger_file.c 2001/12/04 19:11:56 1.4 +++ jk_logger_file.c 2001/12/06 22:59:52 1.5 @@ -59,7 +59,7 @@ * Description: Utility functions (mainly configuration) * * Author: Gal Shachor <[EMAIL PROTECTED]> * * Author: Henri Gomez <[EMAIL PROTECTED]> * - * Version: $Revision: 1.4 $ * + * Version: $Revision: 1.5 $ * ***************************************************************************/ #include "jk_env.h" @@ -72,8 +72,8 @@ #define HUGE_BUFFER_SIZE (8*1024) #define LOG_LINE_SIZE (1024) -int JK_METHOD jk_logger_file_factory(jk_env_t *env, void **result, - char *type, char *name); +int JK_METHOD jk_logger_file_factory(jk_env_t *env, jk_pool_t *pool, void **result, + const char *type, const char *name); /* @@ -260,11 +260,12 @@ int jk_logger_file_factory(jk_env_t *env, + jk_pool_t *pool, void **result, - char *type, - char *name) + const char *type, + const char *name) { - jk_logger_t *l = (jk_logger_t *)malloc(sizeof(jk_logger_t)); + jk_logger_t *l = (jk_logger_t *)pool->alloc(pool, sizeof(jk_logger_t)); if(l==NULL ) { return JK_FALSE; 1.5 +121 -110 jakarta-tomcat-connectors/jk/native2/common/jk_map.c Index: jk_map.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_map.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- jk_map.c 2001/12/05 20:48:20 1.4 +++ jk_map.c 2001/12/06 22:59:52 1.5 @@ -58,7 +58,7 @@ /*************************************************************************** * Description: General purpose map object * * Author: Gal Shachor <[EMAIL PROTECTED]> * - * Version: $Revision: 1.4 $ * + * Version: $Revision: 1.5 $ * ***************************************************************************/ #include "jk_global.h" @@ -70,8 +70,7 @@ #define LENGTH_OF_LINE (1024) struct jk_map { - jk_pool_t p; - jk_pool_atom_t buf[SMALL_POOL_SIZE]; + jk_pool_t *pool; const char **names; const void **values; @@ -84,53 +83,39 @@ static int trim(char *s); static int map_realloc(jk_map_t *m); -int map_alloc(jk_map_t **m) +int map_alloc(jk_map_t **m, jk_pool_t *pool ) { - if(m) { - return map_open(*m = (jk_map_t *)malloc(sizeof(jk_map_t))); - } - - return JK_FALSE; -} - -int map_free(jk_map_t **m) -{ - int rc = JK_FALSE; + jk_map_t *_this; - if(m && *m) { - map_close(*m); - free(*m); - *m = NULL; - } + if( m== NULL ) + return JK_FALSE; - return rc; -} - -int map_open(jk_map_t *m) -{ - int rc = JK_FALSE; + _this=(jk_map_t *)pool->alloc(pool, sizeof(jk_map_t)); + *m=_this; - if(m) { - jk_open_pool(&m->p, m->buf, sizeof(jk_pool_atom_t) * SMALL_POOL_SIZE); - m->capacity = 0; - m->size = 0; - m->names = NULL; - m->values = NULL; - rc = JK_TRUE; - } + if( _this == NULL ) + return JK_FALSE; - return rc; + _this->pool = pool; + + _this->capacity = 0; + _this->size = 0; + _this->names = NULL; + _this->values = NULL; + + return JK_TRUE; } -int map_close(jk_map_t *m) +int map_free(jk_map_t **m) { int rc = JK_FALSE; - if(m) { - m->p.close(&m->p); + if(m && *m) { + (*m)->pool->close((*m)->pool); rc = JK_TRUE; + /* free(*m); */ + *m = NULL; } - return rc; } @@ -204,49 +189,53 @@ } char **map_get_string_list(jk_map_t *m, + jk_pool_t *pool, const char *name, unsigned *list_len, const char *def) { - char *l = map_get_string(m, name, def); + char *listStr = map_get_string(m, name, def); char **ar = NULL; + unsigned capacity = 0; + unsigned idex = 0; + char *v; + char *l; + if( pool == NULL ) + pool=m->pool; + *list_len = 0; - if(l) { - unsigned capacity = 0; - unsigned idex = 0; - char *v = m->p.pstrdup(&m->p, l); - - if(!v) { - return NULL; - } + if(listStr==NULL) + return NULL; - /* - * GS, in addition to VG's patch, we now need to - * strtok also by a "*" - */ - - for(l = strtok(v, " \t,*") ; - l ; - l = strtok(NULL, " \t,*")) { - - if(idex == capacity) { - ar = m->p.realloc(&m->p, - sizeof(char *) * (capacity + 5), - ar, - sizeof(char *) * capacity); - if(!ar) { - return JK_FALSE; - } - capacity += 5; + v = pool->pstrdup( pool, listStr); + + if(v==NULL) { + return NULL; + } + + /* + * GS, in addition to VG's patch, we now need to + * strtok also by a "*" + */ + + for(l = strtok(v, " \t,*") ; l ; l = strtok(NULL, " \t,*")) { + if(idex == capacity) { + ar = pool->realloc(pool, + sizeof(char *) * (capacity + 5), + ar, + sizeof(char *) * capacity); + if(!ar) { + return NULL; } - ar[idex] = m->p.pstrdup(&m->p, l); - idex ++; + capacity += 5; } - - *list_len = idex; + ar[idex] = pool->pstrdup(pool, l); + idex ++; } + + *list_len = idex; return ar; } @@ -257,32 +246,33 @@ void **old) { int rc = JK_FALSE; - - if(m && name ) { - unsigned i; - for(i = 0 ; i < m->size ; i++) { - if(0 == strcmp(m->names[i], name)) { - break; - } - } + int i; - if(i < m->size) { - if( old!=NULL ) - *old = (void *) m->values[i]; /* DIRTY */ - m->values[i] = value; - rc = JK_TRUE; - } else { - map_realloc(m); + if(m==NULL || name==NULL ) + return JK_FALSE; - if(m->size < m->capacity) { - m->values[m->size] = value; - m->names[m->size] = m->p.pstrdup(&m->p, name); - m->size ++; - rc = JK_TRUE; - } - } + for(i = 0 ; i < m->size ; i++) { + if(0 == strcmp(m->names[i], name)) { + break; + } } + /* Old value found */ + if(i < m->size) { + if( old!=NULL ) + *old = (void *) m->values[i]; /* DIRTY */ + m->values[i] = value; + return JK_TRUE; + } + + map_realloc(m); + + if(m->size < m->capacity) { + m->values[m->size] = value; + m->names[m->size] = m->pool->pstrdup(m->pool, name); + m->size ++; + rc = JK_TRUE; + } return rc; } @@ -292,13 +282,13 @@ int jk_is_some_property(const char *prp_name, const char *suffix) { if (prp_name && suffix) { - size_t prp_name_len = strlen(prp_name); - size_t suffix_len = strlen(suffix); - if (prp_name_len >= suffix_len) { - const char *prp_suffix = prp_name + prp_name_len - suffix_len; - if(0 == strcmp(suffix, prp_suffix)) { - return JK_TRUE; - } + size_t prp_name_len = strlen(prp_name); + size_t suffix_len = strlen(suffix); + if (prp_name_len >= suffix_len) { + const char *prp_suffix = prp_name + prp_name_len - suffix_len; + if(0 == strcmp(suffix, prp_suffix)) { + return JK_TRUE; + } } } @@ -331,8 +321,8 @@ v = map_replace_properties(v, m); if(oldv) { - char *tmpv = m->p.alloc(&m->p, - strlen(v) + strlen(oldv) + 3); + char *tmpv = m->pool->alloc(m->pool, + strlen(v) + strlen(oldv) + 3); if(tmpv) { char sep = '*'; if(jk_is_some_property(prp, "path")) { @@ -346,8 +336,9 @@ } v = tmpv; } else { - v = m->p.pstrdup(&m->p, v); + v = m->pool->pstrdup(m->pool, v); } + if(v) { void *old = NULL; map_put(m, prp, v, &old); @@ -431,8 +422,8 @@ void **values; int capacity = m->capacity + CAPACITY_INC_SIZE; - names = (char **)m->p.alloc(&m->p, sizeof(char *) * capacity); - values = (void **)m->p.alloc(&m->p, sizeof(void *) * capacity); + names = (char **)m->pool->alloc(m->pool, sizeof(char *) * capacity); + values = (void **)m->pool->alloc(m->pool, sizeof(void *) * capacity); if(values && names) { if (m->capacity && m->names) @@ -479,8 +470,8 @@ } if(env_value) { int offset=0; - char *new_value = m->p.alloc(&m->p, - (sizeof(char) * (strlen(rc) + strlen(env_value)))); + char *new_value = m->pool->alloc(m->pool, + (sizeof(char) * (strlen(rc) + strlen(env_value)))); if(!new_value) { break; } @@ -566,10 +557,10 @@ } char **map_getListProp(jk_map_t *m, - const char *objType, - const char *objName, - const char *pname, - unsigned *size) + const char *objType, + const char *objName, + const char *pname, + unsigned *size) { char buf[1024]; @@ -581,7 +572,27 @@ } sprintf(buf, "%s.%s.%s", objType, objName, pname); + + return map_get_string_list(m, m->pool, buf, size, NULL); +} - return map_get_string_list(m, buf, size, NULL); +/** Utility - copy a map . XXX Should move to jk_map, it's generic code. + */ +int map_copy(jk_pool_t *pool, jk_map_t * src, jk_map_t * dst ) +{ + int sz = map_size(src); + int i; + for(i = 0 ; i < sz ; i++) { + void *old; + char *name = map_name_at(src, i); + if(map_get(src, name, NULL) == NULL) { + if(!map_put(dst, name, + pool->pstrdup(pool, map_get_string(src, name, NULL)), + &old)) { + return JK_FALSE; + } + } + } + return JK_TRUE; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>