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 2001/10/30 22:08:39 UTC

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_map.c jk_map.h jk_pool.c jk_pool.h

costin      01/10/30 13:08:39

  Modified:    jk/native/common jk_map.c jk_map.h jk_pool.c jk_pool.h
  Log:
  In jk_map:
   - expose the method that replaces properties, ant-style ( used internally to read
  worker.properties ). I need it also using http.conf only.
  
   - with some strange properties you can get an infinite loop. Fixed now.
  
  Revision  Changes    Path
  1.7       +16 -8     jakarta-tomcat-connectors/jk/native/common/jk_map.c
  
  Index: jk_map.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_map.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_map.c	2001/10/17 20:14:31	1.6
  +++ jk_map.c	2001/10/30 21:08:39	1.7
  @@ -58,7 +58,7 @@
   /***************************************************************************
    * Description: General purpose map object                                 *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.6 $                                           *
  + * Version:     $Revision: 1.7 $                                           *
    ***************************************************************************/
   
   #include "jk_global.h"
  @@ -84,7 +84,6 @@
   static void trim_prp_comment(char *prp);
   static int trim(char *s);
   static int map_realloc(jk_map_t *m);
  -static char *update_env_variables(char *value, jk_map_t *m);
   
   int map_alloc(jk_map_t **m)
   {
  @@ -310,7 +309,7 @@
                           v++;                        
                           if(strlen(v) && strlen(prp)) {
                               char *oldv = map_get_string(m, prp, NULL);
  -                            v = update_env_variables(v, m);
  +                            v = map_replace_properties(v, m);
                               if(oldv) {
                                   char *tmpv = jk_pool_alloc(&m->p, 
                                                              strlen(v) + strlen(oldv) + 3);
  @@ -433,13 +432,19 @@
       return JK_FALSE;
   }
   
  -static char *update_env_variables(char *value, jk_map_t *m)
  -{
  -    char *rc = value;
  -    char *env_start = value;
  +/**
  + *  Replace $(property) in value.
  + * 
  + */
  +char *map_replace_properties(const char *value, jk_map_t *m)
  +{
  +    char *rc = (char *)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;
  @@ -453,6 +458,7 @@
   	      env_value=getenv( env_name );
   	    }
               if(env_value) {
  +                int offset=0;
                   char *new_value = jk_pool_alloc(&m->p, 
                                                   (sizeof(char) * (strlen(rc) + strlen(env_value))));
                   if(!new_value) {
  @@ -462,8 +468,10 @@
                   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;
  -                env_start = rc;
  +		/* Avoid recursive subst */
  +                env_start = rc + offset; 
               } else {
                   env_start = env_end;
               }
  
  
  
  1.4       +8 -1      jakarta-tomcat-connectors/jk/native/common/jk_map.h
  
  Index: jk_map.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_map.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jk_map.h	2001/09/05 17:05:23	1.3
  +++ jk_map.h	2001/10/30 21:08:39	1.4
  @@ -58,7 +58,7 @@
   /***************************************************************************
    * Description: Map object header file                                     *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.3 $                                           *
  + * Version:     $Revision: 1.4 $                                           *
    ***************************************************************************/
   
   #ifndef JK_MAP_H
  @@ -117,6 +117,13 @@
   
   void *map_value_at(jk_map_t *m,
                      int idex);
  +  
  +/**
  + *  Replace $(property) in value.
  + * 
  + */
  +char *map_replace_properties(const char *value, jk_map_t *m);
  +
   
   #ifdef __cplusplus
   }
  
  
  
  1.3       +5 -1      jakarta-tomcat-connectors/jk/native/common/jk_pool.c
  
  Index: jk_pool.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_pool.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_pool.c	2001/06/18 14:16:01	1.2
  +++ jk_pool.c	2001/10/30 21:08:39	1.3
  @@ -58,13 +58,17 @@
   /***************************************************************************
    * Description: Simple memory pool                                         *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   
   #include "jk_pool.h"
   
  +#define DEFAULT_DYNAMIC 10
  +
  +
   static void *jk_pool_dyn_alloc(jk_pool_t *p, 
                                  size_t size);
  +
   
   void jk_open_pool(jk_pool_t *p,
                     jk_pool_atom_t *buf,
  
  
  
  1.3       +11 -2     jakarta-tomcat-connectors/jk/native/common/jk_pool.h
  
  Index: jk_pool.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_pool.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_pool.h	2001/06/18 14:16:02	1.2
  +++ jk_pool.h	2001/10/30 21:08:39	1.3
  @@ -58,7 +58,7 @@
   /***************************************************************************
    * Description: Memory Pool object header file                             *
    * Author:      Gal Shachor <sh...@il.ibm.com>                           *
  - * Version:     $Revision: 1.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   #ifndef _JK_POOL_H
   #define _JK_POOL_H
  @@ -69,7 +69,14 @@
   extern "C" {
   #endif /* __cplusplus */
   
  -#define DEFAULT_DYNAMIC 10
  +/**
  + * @file jk_pool.h
  + * @brief Jk memory allocation
  + *
  + * Similar with apr_pools, but completely unsynchronized.
  + * XXX use same names
  + * 
  + */
   
   /*
    * The pool atom (basic pool alocation unit) is an 8 byte long. 
  @@ -109,6 +116,8 @@
   #define BIG_POOL_SIZE   2*SMALL_POOL_SIZE   /* Bigger 1K atom pool. */
   #define HUGE_POOL_SIZE  2*BIG_POOL_SIZE     /* Huge 2K atom pool. */
   
  +  /** XXX Move it to impl, make it incomplete 
  +   */
   struct jk_pool {
       unsigned size;      
       unsigned pos;       
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>