You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2002/03/18 19:42:50 UTC
cvs commit: jakarta-tomcat-connectors/jk/native2/common jk_map.c
costin 02/03/18 10:42:50
Modified: jk/native2/common jk_map.c
Log:
Remove the config-related methods. This is just a map now
Revision Changes Path
1.15 +2 -429 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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- jk_map.c 21 Feb 2002 11:11:15 -0000 1.14
+++ jk_map.c 18 Mar 2002 18:42:50 -0000 1.15
@@ -58,7 +58,7 @@
/***************************************************************************
* Description: General purpose map object *
* Author: Gal Shachor <sh...@il.ibm.com> *
- * Version: $Revision: 1.14 $ *
+ * Version: $Revision: 1.15 $ *
***************************************************************************/
#include "jk_global.h"
@@ -78,8 +78,6 @@
} jk_map_private_t;
static int jk2_map_default_realloc(jk_env_t *env, jk_map_t *m);
-static void jk2_trim_prp_comment(char *prp);
-static int jk2_trim(char *s);
static void *jk2_map_default_get(jk_env_t *env, jk_map_t *m,
const char *name)
@@ -225,7 +223,7 @@
}
-int jk2_map_append(jk_env_t *env, jk_map_t * dst, jk_map_t * src )
+static int jk2_map_append(jk_env_t *env, jk_map_t * dst, jk_map_t * src )
{
/* This was badly broken in the original ! */
int sz = src->size(env, src);
@@ -242,398 +240,7 @@
}
return JK_TRUE;
}
-
-
-/* ==================== */
-/* General purpose map utils - independent of the map impl */
-
-
-char *jk2_map_getString(jk_env_t *env, jk_map_t *m,
- const char *name, char *def)
-{
- char *val= m->get( env, m, name );
- if( val==NULL )
- return def;
- return val;
-}
-
-int jk2_map_getBool(jk_env_t *env, jk_map_t *m,
- const char *prop, const char *def)
-{
- char *val=jk2_map_getString( env, m, prop, (char *)def );
-
- if( val==NULL )
- return JK_FALSE;
-
- if( strcmp( val, "1" ) == 0 ||
- strcasecmp( val, "TRUE" ) == 0 ||
- strcasecmp( val, "ON" ) == 0 ) {
- return JK_TRUE;
- }
- return JK_FALSE;
-}
-
-/** Get a string property, using the worker's style
- for properties.
- Example worker.ajp13.host=localhost.
-*/
-char *jk2_map_getStrProp(jk_env_t *env, jk_map_t *m,
- const char *objType, const char *objName,
- const char *pname,
- char *def)
-{
- char buf[1024];
- char *res;
-
- if( m==NULL || objName==NULL || pname==NULL ) {
- return def;
- }
- if( objType==NULL )
- sprintf(buf, "%s.%s", objName, pname);
- else
- sprintf(buf, "%s.%s.%s", objType, objName, pname);
- res = m->get(env, m, buf );
- if (res==NULL)
- return(def);
- return res;
-}
-
-int jk2_map_getIntProp(jk_env_t *env, jk_map_t *m,
- const char *objType, const char *objName,
- const char *pname,
- int def)
-{
- char *val=jk2_map_getStrProp( env, m, objType, objName, pname, NULL );
-
- if( val==NULL )
- return def;
-
- return jk2_map_str2int( env, val );
-}
-
-/* ==================== */
-/* Conversions */
-
-/* Convert a string to int, using 'M', 'K' suffixes
- */
-int jk2_map_str2int(jk_env_t *env, char *val )
-{ /* map2int:
- char *v=getString();
- return (c==NULL) ? def : str2int( v );
- */
- int len;
- int int_res;
- char org='\0';
- int multit = 1;
- char *lastchar;
-
- if( val==NULL ) return 0;
-
- /* sprintf(buf, "%d", def); */
- /* rc = map_get_string(m, name, buf); */
-
- len = strlen(val);
- if(len==0)
- return 0;
-
- lastchar = val + len - 1;
- if('m' == *lastchar || 'M' == *lastchar) {
- org=*lastchar;
- *lastchar = '\0';
- multit = 1024 * 1024;
- } else if('k' == *lastchar || 'K' == *lastchar) {
- org=*lastchar;
- *lastchar = '\0';
- multit = 1024;
- }
-
- int_res = atoi(val);
- if( org!='\0' )
- *lastchar=org;
-
- return int_res * multit;
-}
-
-char **jk2_map_split(jk_env_t *env, jk_map_t *m,
- jk_pool_t *pool,
- const char *listStr,
- const char *sep,
- unsigned *list_len )
-{
- char **ar = NULL;
- unsigned capacity = 0;
- unsigned idex = 0;
- char *v;
- char *l;
-
- if( sep==NULL )
- sep=" \t,*";
-
- if( pool == NULL && m!=NULL )
- pool=m->pool;
-
- if( list_len != NULL )
- *list_len = 0;
-
- if(listStr==NULL)
- return NULL;
-
- v = pool->pstrdup( env, 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, sep) ; l ; l = strtok(NULL, sep)) {
- /* We want at least one space after idex for the null*/
- if(idex+1 >= capacity) {
- ar = pool->realloc(env, pool,
- sizeof(char *) * (capacity + 5),
- ar,
- sizeof(char *) * capacity);
- if(!ar) {
- return NULL;
- }
- capacity += 5;
- }
- ar[idex] = pool->pstrdup(env, pool, l);
- idex ++;
- }
-
- /* Append a NULL, we have space */
- ar[idex]=NULL;
-
- if( list_len != NULL )
- *list_len = idex;
-
- return ar;
-}
-
-
-/* ==================== */
-/* Reading / parsing */
-
-int jk2_map_readFileProperties(jk_env_t *env, jk_map_t *m,
- const char *f)
-{
- int rc = JK_FALSE;
- FILE *fp;
- char buf[LENGTH_OF_LINE + 1];
- char *prp;
- char *v;
-
- if(m==NULL || f==NULL )
- return JK_FALSE;
-
- fp= fopen(f, "r");
-
- if(fp==NULL)
- return JK_FALSE;
-
- rc = JK_TRUE;
-
- while(NULL != (prp = fgets(buf, LENGTH_OF_LINE, fp))) {
- char *oldv;
-
- jk2_trim_prp_comment(prp);
-
- if( jk2_trim(prp)==0 )
- continue;
-
- v = strchr(prp, '=');
- if(v==NULL)
- continue;
-
- *v = '\0';
- v++;
-
- if(strlen(v)==0 || strlen(prp)==0)
- continue;
-
- v = jk2_map_replaceProperties(env, m, m->pool, v);
-
- /* We don't contatenate the values - but use multi-value
- fields. This eliminates the ugly hack where readProperties
- tried to 'guess' the separator, and the code is much
- cleaner. If we have multi-valued props, it's better
- to deal with that instead of forcing a single-valued
- model.
- */
- m->add( env, m, m->pool->pstrdup(env, m->pool, prp),
- m->pool->pstrdup(env, m->pool, v));
- }
-
- fclose(fp);
- return rc;
-}
-
-/** For multi-value properties, return the concatenation
- * of all values.
- *
- * @param sep Separators used to separate multi-values and
- * when concatenating the values, NULL for none. The first
- * char will be used on the result, the other will be
- * used to split. ( i.e. the map may either have multiple
- * values or values separated by one of the sep's chars )
- *
- */
-char *jk2_map_getValuesString(jk_env_t *env, jk_map_t *m,
- struct jk_pool *resultPool,
- char *name,
- char *sep )
-{
- char **values;
- int valuesCount;
- int i;
- int len=0;
- int pos=0;
- int sepLen=0;
- char *result;
- char sepStr[2];
-
- if(sep==NULL)
- values=jk2_map_getValues( env, m, resultPool, name," \t,*", &valuesCount );
- else
- values=jk2_map_getValues( env, m, resultPool, name, sep, &valuesCount );
-
- if( values==NULL ) return NULL;
- if( valuesCount<=0 ) return NULL;
-
- if( sep!= NULL )
- sepLen=strlen( sep );
-
- for( i=0; i< valuesCount; i++ ) {
- len+=strlen( values[i] );
- if( sep!= NULL )
- len+=1; /* Separator */
- }
-
- result=(char *)resultPool->alloc( env, resultPool, len + 1 );
-
- result[0]='\0';
- if( sep!=NULL ) {
- sepStr[0]=sep[0];
- sepStr[1]='\0';
- }
-
- for( i=0; i< valuesCount; i++ ) {
- strcat( values[i], result );
- if( sep!=NULL )
- strcat( sepStr, result );
- }
- return result;
-}
-
-/** For multi-value properties, return the array containing
- * all values.
- *
- * @param sep Optional separator, it'll be used to split existing values.
- * Curently only single-char separators are supported.
- */
-char **jk2_map_getValues(jk_env_t *env, jk_map_t *m,
- struct jk_pool *resultPool,
- char *name,
- char *sep,
- int *countP)
-{
- char **result;
- int count=0;
- int capacity=8;
- int mapSz= m->size(env, m );
- int i;
- char *l;
-
- *countP=0;
- result=(char **)resultPool->alloc( env, resultPool,
- capacity * sizeof( char *));
- for(i=0; i<mapSz; i++ ) {
- char *cName= m->nameAt( env, m, i );
- char *cVal= m->valueAt( env, m, i );
-
- if(0 == strcmp(cName, name)) {
- /* Split the value by sep, and add it to the result list
- */
- for(l = strtok(cVal, sep) ; l ; l = strtok(NULL, sep)) {
- if(count == capacity) {
- result = resultPool->realloc(env, resultPool,
- sizeof(char *) * (capacity + 5),
- result,
- sizeof(char *) * capacity);
- if(result==NULL)
- return NULL;
- capacity += 5;
- }
- result[count] = resultPool->pstrdup(env, resultPool, l);
- count++;
- }
- }
- }
- *countP=count;
- return result;
-}
-
-/**
- * Replace $(property) in value.
- *
- */
-char *jk2_map_replaceProperties(jk_env_t *env, jk_map_t *m,
- struct jk_pool *resultPool,
- char *value)
-{
- char *rc = value;
- char *env_start = rc;
- int rec = 0;
-
- while(env_start = strstr(env_start, "$(")) {
- char *env_end = strstr(env_start, ")");
- if( rec++ > 20 ) return rc;
- if(env_end) {
- char env_name[LENGTH_OF_LINE + 1] = "";
- char *env_value;
-
- *env_end = '\0';
- strcpy(env_name, env_start + 2);
- *env_end = ')';
-
- env_value = m->get(env, m, env_name);
- if(env_value == NULL ) {
- env_value=getenv( env_name );
- }
- /* fprintf(stderr, "XXXjk_map %s %s \n", env_name, env_value ); */
-
- if(env_value != NULL ) {
- int offset=0;
- char *new_value = resultPool->alloc(env, resultPool,
- (strlen(rc) + strlen(env_value)));
- if(!new_value) {
- break;
- }
- *env_start = '\0';
- strcpy(new_value, rc);
- strcat(new_value, env_value);
- strcat(new_value, env_end + 1);
- offset= env_start - rc + strlen( env_value );
- rc = new_value;
- /* Avoid recursive subst */
- env_start = rc + offset;
- } else {
- env_start = env_end;
- }
- } else {
- break;
- }
- }
-
- return rc;
-}
-
-
/* ==================== */
/* Internal utils */
@@ -687,33 +294,6 @@
/* } */
-static void jk2_trim_prp_comment(char *prp)
-{
- char *comment = strchr(prp, '#');
- if(comment) {
- *comment = '\0';
- }
-}
-
-static int jk2_trim(char *s)
-{
- int i;
-
- for(i = strlen(s) - 1 ; (i >= 0) && isspace(s[i]) ; i--)
- ;
-
- s[i + 1] = '\0';
-
- for(i = 0 ; ('\0' != s[i]) && isspace(s[i]) ; i++)
- ;
-
- if(i > 0) {
- strcpy(s, &s[i]);
- }
-
- return strlen(s);
-}
-
static int jk2_map_default_realloc(jk_env_t *env, jk_map_t *m)
{
jk_map_private_t *mPriv=m->_private;
@@ -745,10 +325,3 @@
return JK_FALSE;
}
-
-
-
-
-
-
-
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>