Author: mturk Date: Thu Mar 22 12:33:46 2007 New Revision: 521416 URL: http://svn.apache.org/viewvc?view=rev&rev=521416 Log: Added function to read a simple name=value property file without the syntax checks.
Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c tomcat/connectors/trunk/jk/native/common/jk_map.h Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.c?view=diff&rev=521416&r1=521415&r2=521416 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_map.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_map.c Thu Mar 22 12:33:46 2007 @@ -674,7 +674,7 @@ strncpy(to, m->names[i], remain); *(to+remain) = '.'; *(to+remain+1) = '\0'; - + rc = jk_map_resolve_references(m, m->values[i], 0, depth+1, l); if (rc == JK_FALSE) { break; @@ -757,3 +757,78 @@ } return rc; } + +int jk_map_load_property(jk_map_t *m, const char *str, jk_logger_t *l) +{ + int rc = JK_TRUE; + char buf[LENGTH_OF_LINE + 1]; + char *prp = &buf[0]; + + if (strlen(str) > LENGTH_OF_LINE) { + jk_log(l, JK_LOG_WARNING, + "Line to long (%d > %d), ignoring entry", + strlen(str), LENGTH_OF_LINE); + return JK_FALSE; + } + + strcpy(prp, str); + if (trim(prp)) { + char *v = strchr(prp, '='); + if (v) { + *v = '\0'; + v++; + trim(prp); + trim(v); + if (strlen(v) && strlen(prp)) { + v = jk_pool_strdup(&m->p, v); + if (v) { + jk_map_put(m, prp, v, NULL); + } + else { + JK_LOG_NULL_PARAMS(l); + rc = JK_FALSE; + } + } + } + } + return rc; +} + + +int jk_map_load_properties(jk_map_t *m, const char *f, time_t *modified, jk_logger_t *l) +{ + int rc = JK_FALSE; + + if (m && f) { + struct stat statbuf; + FILE *fp; + if ((rc = stat(f, &statbuf)) == -1) + return JK_FALSE; +#ifdef AS400 + fp = fopen(f, "r, o_ccsid=0"); +#else + fp = fopen(f, "r"); +#endif + + if (fp) { + char buf[LENGTH_OF_LINE + 1]; + char *prp; + + rc = JK_TRUE; + + while (NULL != (prp = fgets(buf, LENGTH_OF_LINE, fp))) { + trim_prp_comment(prp); + if (*prp) { + if ((rc = jk_map_load_property(m, prp, l)) == JK_FALSE) + break; + } + } + fclose(fp); + if (modified) + *modified = statbuf.st_mtime; + } + } + + return rc; +} + Modified: tomcat/connectors/trunk/jk/native/common/jk_map.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.h?view=diff&rev=521416&r1=521415&r2=521416 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_map.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_map.h Thu Mar 22 12:33:46 2007 @@ -72,9 +72,13 @@ void *jk_map_value_at(jk_map_t *m, int idex); +int jk_map_load_property(jk_map_t *m, const char *str, jk_logger_t *l); + +int jk_map_load_properties(jk_map_t *m, const char *f, time_t *modified, jk_logger_t *l); + /** * Replace $(property) in value. - * + * */ char *jk_map_replace_properties(jk_map_t *m, const char *value); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]