hausner Posted October 22, 2006 Share Posted October 22, 2006 Hi GuysIm trying to compile a fairly simple apache module but i cant seem to get it to work.Heres the module time-cookie.c:[code]#include "httpd.h"#include "util_filter.h"#include "http_config.h"#include "http_log.h"/* The string which is to be replaced by the time stamp */static char TIME_COOKIE[] = "***TIME-COOKIE***";/* Declare the module name */module AP_MODULE_DECLARE_DATA time_cookie;typedef struct tc_context_ {apr_bucket_brigade *bb;apr_time_t timestamp;} tc_context;/*This function passes in the system filter information (f)and the bucket brigade representing content to be filtered (bb)*/static int time_cookie_filter(ap_filter_t *f, apr_bucket_brigade *bb){tc_context *ctx = f->ctx; /* The filter context */apr_bucket *curr_bucket;apr_pool_t *pool = f->r->pool; /* The pool for all memory requests *//* The buffer where we shall place the time stamp string.APR_RFC822_DATE_LEN the fixed length of such strings */char time_str[APR_RFC822_DATE_LEN+1];apr_time_t timestamp;if (ctx == NULL) {/* The first time this filter has been invoked for this transaction */f->ctx = ctx = apr_pcalloc(f->r->pool, sizeof(*ctx));ctx->bb = apr_brigade_create(f->r->pool, f->c->bucket_alloc);timestamp = apr_time_now();ctx->timestamp = timestamp;}else {/* Get the time stamp we've already set */timestamp = ctx->timestamp;}/* Render the time into a string in RFC822 format */apr_rfc822_date(time_str, timestamp);/*Iterate over each bucket in the brigade.Find each "cookie" in the "kitchen" and replace with the time stamp*/APR_BRIGADE_FOREACH(curr_bucket, bb) {const char *kitchen, *cookie;apr_size_t len;if (APR_BUCKET_IS_EOS(curr_bucket) || APR_BUCKET_IS_FLUSH(curr_bucket)) {APR_BUCKET_REMOVE(curr_bucket);APR_BRIGADE_INSERT_TAIL(ctx->bb, curr_bucket);ap_pass_brigade(f->next, ctx->bb);return APR_SUCCESS;}apr_bucket_read(curr_bucket, &kitchen, &len, APR_NONBLOCK_READ);while (kitchen && strcmp(kitchen, "")) {/* Return a poiner to the next occurrence of the cookie */cookie = ap_strstr(kitchen, TIME_COOKIE);if (cookie) {/* Write the text up to the cookie, then the cookieto the next filter in the chain*/ap_fwrite(f->next, ctx->bb, kitchen, cookie-kitchen);ap_fputs(f->next, ctx->bb, time_str);kitchen = cookie + sizeof(TIME_COOKIE) - 1;/*The following is an example of writing to the error log.The message is actually not really appropriate for the error log,but it serves as example.*/ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, f->r,"Replacing cookie with \"%s\"", time_str);} else {/* No more cookies found, so just write the rest of thestring and flag that we're done*/ap_fputs(f->next, ctx->bb, kitchen);kitchen = "";}}}return APR_SUCCESS;}/* Register the filter function as a filter for modifying the HTTP body (content) */static void time_cookie_register_hook(apr_pool_t *pool){ap_register_output_filter("TIMECOOKIE", time_cookie_filter,AP_FTYPE_CONTENT_SET);}/* Define the module data */module AP_MODULE_DECLARE_DATA time_cookie ={STANDARD20_MODULE_STUFF,NULL, /* dir config creater */NULL, /* dir merger --- default is to override */NULL, /* server config */NULL, /* merge server config */NULL, /* command apr_table_t */time_cookie_register_hook /* register hook */};[/code]Taken from this site:www-128.ibm.com/developerworks/linux/library/l-apache/?loc=dwmainWhen i run the command:[root@fedora modules]# gcc -fPIC -I$include -c time-cookie.c -o time-cookie.owhere[root@fedora modules]# $include-bash: /usr/local/apache/include/: is a directoryi get the following error:[code]In file included from /usr/local/apache/include/ap_config.h:25,from /usr/local/apache/include/httpd.h:43,from time-cookie.c:1:/usr/local/apache/include/apr.h:270: error: expected â=â, â,â, â;â, âasmâ or â_attribute__â before âapr_off_tâIn file included from /usr/local/apache/include/apr_file_io.h:29,from /usr/local/apache/include/apr_network_io.h:26,from /usr/local/apache/include/httpd.h:53,from time-cookie.c:1:/usr/local/apache/include/apr_file_info.h:204: error: expected specifier-qualifer-list before âapr_off_tâIn file included from /usr/local/apache/include/apr_network_io.h:26,from /usr/local/apache/include/httpd.h:53,from time-cookie.c:1:/usr/local/apache/include/apr_file_io.h:548: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_file_io.h:740: error: expected declaration specifers or â...â before âapr_off_tâIn file included from /usr/local/apache/include/httpd.h:53,from time-cookie.c:1:/usr/local/apache/include/apr_network_io.h:545: error: expected declaration speifiers or â...â before âapr_off_tâIn file included from /usr/local/apache/include/apr_buckets.h:32,from /usr/local/apache/include/httpd.h:54,from time-cookie.c:1:/usr/local/apache/include/apr_mmap.h:134: error: expected declaration specifier or â...â before âapr_off_tâ/usr/local/apache/include/apr_mmap.h:161: error: expected declaration specifier or â...â before âapr_off_tâIn file included from /usr/local/apache/include/httpd.h:54,from time-cookie.c:1:/usr/local/apache/include/apr_buckets.h:242: error: expected specifier-qualifie-list before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:706: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:718: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:754: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:890: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:891: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:1168: error: expected declaration speciiers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:1367: error: expected declaration speciiers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:1381: error: expected declaration speciiers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:1431: error: expected declaration speciiers or â...â before âapr_off_tâ/usr/local/apache/include/apr_buckets.h:1447: error: expected declaration speciiers or â...â before âapr_off_tâIn file included from time-cookie.c:1:/usr/local/apache/include/httpd.h:826: error: expected specifier-qualifier-listbefore âapr_off_tâIn file included from time-cookie.c:2:/usr/local/apache/include/util_filter.h:142: error: expected declaration specifers or â...â before âapr_off_tâ/usr/local/apache/include/util_filter.h:299: error: expected declaration specifers or â...â before âapr_off_tâtime-cookie.c: In function âtime_cookie_filterâ:time-cookie.c:50: error: expected â;â before â{â tokentime-cookie.c: In function âtime_cookie_register_hookâ:time-cookie.c:94: warning: passing argument 3 of âap_register_output_filterâ maes pointer from integer without a casttime-cookie.c:94: error: too few arguments to function âap_register_output_filtrâtime-cookie.c:107:3: warning: no newline at end of file[/code]What am i doing wrong. The error does not make any sense to me. Link to comment https://forums.phpfreaks.com/topic/24731-apache-module-compile-error/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.