LinuxQuestions.org
Visit Jeremy's Blog.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Server
User Name
Password
Linux - Server This forum is for the discussion of Linux Software used in a server related context.

Notices


Reply
  Search this Thread
Old 10-21-2006, 11:34 AM   #1
hausner
LQ Newbie
 
Registered: Oct 2006
Posts: 1

Rep: Reputation: 0
Apache module compiling error


Hi Guys

Im trying to compile a fairly simple apache module but i cant seem to get it to work.

Heres the module time-cookie.c:

#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 cookie
to 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 the
string 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 */
};


Taken from this site:

www-128.ibm.com/developerworks/linux/library/l-apache/?loc=dwmain

When i run the command:

[root@fedora modules]# gcc -fPIC -I$include -c time-cookie.c -o time-cookie.o

where

[root@fedora modules]# $include
-bash: /usr/local/apache/include/: is a directory

i get the following error:

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 â{â token
time-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 cast
time-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

What am i doing wrong. The error does not make any sense to me.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Apache Module Load Error vishallagdev Linux - Server 4 02-02-2008 10:45 PM
Error compiling fglrx module c_olin3404 Debian 2 08-19-2005 05:00 PM
error compiling ati module with 2.6.11-rc4 usethesource Linux - Hardware 1 02-13-2005 05:40 PM
Compiling 2.4.23 : Module error spam Modify Linux - Newbie 0 12-15-2003 05:52 PM
Error compiling Module in Linux kernel iannou Linux - Software 1 06-27-2003 07:06 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Server

All times are GMT -5. The time now is 03:00 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration