You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2007/03/22 20:33:47 UTC
svn commit: r521416 - in /tomcat/connectors/trunk/jk/native/common: jk_map.c
jk_map.h
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: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org