ap_send_http_header deprecated, revised for Apache 2.0.14

diff --git a/NEWS b/NEWS
index ea6ff65..eab5e91 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Changes in 1.0d6
+--------------------------------------------------------------------------------
+
+- ap_send_http_header no longer does anything so the command just returns TCL_OK which essentially makes it null, I'll probably get rid of it later.
+- made changes in league with Apache 2.0.14.  Handlers were moved around etc.
+
 Changes in 1.0d5
 --------------------------------------------------------------------------------
 
@@ -15,11 +21,13 @@
 5. Add filters?
 6. libapreq (doesn't appear to be ported to 2.0 completley yet...)
 7. Decide what goals need to be acheived for release 1.0
+8. Make necessary changes along with Apache 2.0 revisions.
 
 Map
 --------------------------------------------------------------------------------
 
 - 1.0d0 -| Inital port from mod_tcl* 0.26, single file split into 4
+         | (Apache 2.0a9)
          |
 - 1.0d1 -| removal of nasties, update of configuration
          |
@@ -29,9 +37,11 @@
          |
 - 1.0d4 -| Documentation, 99% of API exposed
          |
-* 1.0d5 *| constants commands in ::apache namespace, mmap checking, test script
+- 1.0d5 -| constants commands in ::apache namespace, mmap checking, test
+         | script
          |
-- 1.0d6 -|
+* 1.0d6 *| ap_send_http_header deprecated, updated to be peachy with
+         | Apache 2.0.14
          |
 - 1.0d7 -|
          |
@@ -40,4 +50,3 @@
 - 1.0d9 -|
          |
 - 1.0.0 -|
-
diff --git a/tcl_cmds.c b/tcl_cmds.c
index 32d0663..3b24632 100644
--- a/tcl_cmds.c
+++ b/tcl_cmds.c
@@ -1075,10 +1075,10 @@
 		return TCL_ERROR;
 	}
 	
-	_r->allowed_methods->method_list = apr_make_array(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
+	_r->allowed_methods->method_list = (apr_array_header_t*) apr_array_make(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
 	
 	for (i = 0; i < xxobjc; i++) {
-		char *xx = apr_push_array(_r->allowed_methods->method_list);
+		char *xx = (char*) apr_array_push(_r->allowed_methods->method_list);
 		
 		xx = apr_pstrdup(_r->allowed_methods->method_list->cont, Tcl_GetString(xxobjv[i]));
 	}
@@ -1158,10 +1158,10 @@
 		return TCL_ERROR;
 	}
 	
-	_r->content_languages = apr_make_array(_r->content_languages->cont, xxobjc, sizeof(char*));
+	_r->content_languages = apr_array_make(_r->content_languages->cont, xxobjc, sizeof(char*));
 	
 	for (i = 0; i < xxobjc; i++) {
-		char *xx = apr_push_array(_r->content_languages);
+		char *xx = apr_array_push(_r->content_languages);
 		
 		xx = apr_pstrdup(_r->content_languages->cont, Tcl_GetString(xxobjv[i]));
 	}
@@ -1773,6 +1773,7 @@
 
 int cmd_ap_send_http_header(ClientData cd, Tcl_Interp *ixx, int objc, Tcl_Obj *CONST objv[])
 {
+/*
 	Tcl_Obj *obj;
 	
 	obj = Tcl_GetVar2Ex(interp, "content_type", NULL, 0);
@@ -1782,6 +1783,7 @@
 	}
 	
 	ap_send_http_header(_r);
+*/
 	
 	return TCL_OK;
 }
diff --git a/tcl_core.c b/tcl_core.c
index c7cdec9..fc78e12 100644
--- a/tcl_core.c
+++ b/tcl_core.c
@@ -79,7 +79,7 @@
 static const char* tcl_set(cmd_parms *parms, void *mconfig, const char *one, const char *two, const char *three);
 static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two);
 static const char* tcl_raw_args(cmd_parms *parms, void *mconfig, char *arg);
-static const char *tcl_no_args(cmd_parms *parms, void *mconfig);
+static const char* tcl_no_args(cmd_parms *parms, void *mconfig);
 
 typedef const char* (*fz_t)(void);
 
@@ -108,25 +108,21 @@
 	{ NULL }
 };
 
-static handler_rec tcl_handlers[] = {
-	{ "tcl-handler",		tcl_handler },
-	{ NULL,					NULL }
-};
-
-static void register_hooks(void)
+static void register_hooks(apr_pool_t *p)
 {
-	ap_hook_pre_config(tcl_init, NULL, NULL, AP_HOOK_REALLY_FIRST);
-	ap_hook_post_config(tcl_init_handler, NULL, NULL, AP_HOOK_MIDDLE);
+	ap_hook_pre_config(tcl_init, NULL, NULL, APR_HOOK_REALLY_FIRST);
+	ap_hook_post_config(tcl_init_handler, NULL, NULL, APR_HOOK_MIDDLE);
 	
-//	ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, AP_HOOK_MIDDLE);
-//	ap_hook_translate_name(tcl_translate_name, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_header_parser(tcl_header_parser, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_access_checker(tcl_access_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_type_checker(tcl_type_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_fixups(tcl_fixups, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, AP_HOOK_MIDDLE);
+//	ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, APR_HOOK_MIDDLE);
+//	ap_hook_translate_name(tcl_translate_name, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_header_parser(tcl_header_parser, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_access_checker(tcl_access_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_type_checker(tcl_type_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_fixups(tcl_fixups, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_handler(tcl_handler, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, APR_HOOK_MIDDLE);
 }
 
 AP_DECLARE_DATA module tcl_module = {
@@ -136,7 +132,6 @@
     NULL,							/* create per-server config structure */
     NULL,							/* merge per-server config structures */
     tcl_commands,					/* command apr_table_t */
-    tcl_handlers,					/* handlers */
     register_hooks					/* register hooks */
 };
 
@@ -158,8 +153,8 @@
 	tcl_config_rec *tclr = (tcl_config_rec*) apr_pcalloc(p, sizeof(tcl_config_rec));
 	
 	tclr->fl		= 0;
-	tclr->var_list	= apr_make_array(p, 0, sizeof(var_cache));
-	tclr->raw_list	= apr_make_array(p, 0, sizeof(char*));
+	tclr->var_list	= apr_array_make(p, 0, sizeof(var_cache));
+	tclr->raw_list	= apr_array_make(p, 0, sizeof(char*));
 	
 	memset(tclr->handlers, 0, NUM_HANDLERS * sizeof(char*));
 	
@@ -195,7 +190,7 @@
 {
 	tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
 	char *ptr2, *ptr3;
-	var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+	var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
 	
 	if (three == NULL) {
 		ptr2 = NULL;
@@ -218,7 +213,7 @@
 static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two)
 {
 	tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
-	var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+	var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
 	
 	var->var1 = apr_pstrdup(parms->pool, one);
 	var->var2 = apr_pstrdup(parms->pool, two);
@@ -234,7 +229,7 @@
 	char l[MAX_STRING_LEN];
 	char **line, *script, **xx;
 	int i, j = 0, k = 0;
-	apr_array_header_t *temp = apr_make_array(parms->pool, 0, sizeof(char*));
+	apr_array_header_t *temp = apr_array_make(parms->pool, 0, sizeof(char*));
 	char **temp_elts = (char**) temp->elts;
 
 	while (!(ap_cfg_getline(l, MAX_STRING_LEN, parms->config_file))) {
@@ -242,7 +237,7 @@
 			goto cleanup;
 		}
 
-		line = (char**) apr_push_array(temp);
+		line = (char**) apr_array_push(temp);
 		j += asprintf(line, l);
 		k++;
 	}
@@ -262,7 +257,7 @@
 	
 	script[j] = '\0';
 	
-	xx = (char**) apr_push_array(tclr->raw_list);
+	xx = (char**) apr_array_push(tclr->raw_list);
 	*xx = apr_pstrdup(parms->pool, script);
 	
 	free(script);
@@ -348,7 +343,7 @@
 	char *buf;
 	
 	_pconf = pconf;
-	fcache = apr_make_array(pconf, 0, sizeof(file_cache));
+	fcache = apr_array_make(pconf, 0, sizeof(file_cache));
 	
 	interp = Tcl_CreateInterp();
 	
@@ -357,7 +352,7 @@
 		exit(1);
 	}
 	
-	apr_register_cleanup(pconf, NULL, tcl_cleanup, apr_null_cleanup);
+	apr_pool_cleanup_register(pconf, NULL, tcl_cleanup, apr_pool_cleanup_null);
 	
 	/* misc util */
 	Tcl_CreateObjCommand(interp, "apache::abort", cmd_abort, NULL, NULL);
@@ -573,7 +568,7 @@
 
 static void tcl_init_handler(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 {
-	ap_add_version_component(pconf, "mod_tcl/1.0d5");
+	ap_add_version_component(pconf, "mod_tcl/1.0d6");
 }
 
 static int run_handler(request_rec *r, int hh)
@@ -640,7 +635,7 @@
 
 		close(fd);
 		
-		fptr = (file_cache*) apr_push_array(fcache);
+		fptr = (file_cache*) apr_array_push(fcache);
 		
 		fptr->file = apr_pstrdup(fcache->cont, r->filename);
 		memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -727,7 +722,7 @@
 
 		close(fd);
 		
-		fptr = (file_cache*) apr_push_array(fcache);
+		fptr = (file_cache*) apr_array_push(fcache);
 		
 		fptr->file = apr_pstrdup(fcache->cont, r->filename);
 		memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -760,7 +755,7 @@
 			ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r->server, "Tcl_EvalObjEx(%s): %s", eptr, Tcl_GetStringResult(interp));
 			
 			r->content_type = "text/html";
-			ap_send_http_header(r);
+//			ap_send_http_header(r);
 			
 			ap_rprintf(r, "<H3>TCL Error</H3><BR><PRE>%s</PRE>", Tcl_GetString(Tcl_GetVar2Ex(interp, "errorInfo", NULL, 0)));
 			
@@ -775,6 +770,10 @@
 
 static int tcl_handler(request_rec *r)
 {
+	if (strcmp("tcl-handler", r->handler)) {
+		return DECLINED;
+	}
+	
 	return run_handler(r, 0);
 }