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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.