I have previously send in to the mod_perl mailing list a patch to make
libapreq compile under AIX, but this patch was for the old version and
thus probably was not applied. I have redone the patch again but this
time relative to the current cvs repository of libapreq. This patch does
the following:

* If compiling using a non-gcc compiler the gcc __attribute__ feature
  gets defined twice, once by apache headers and once by perl headers.
  The patch undefs it inbetween so the compiler does not barf because of
  the redefinition.

* The function my_memstr c/apache_multipart_buffer.c attempts to perform
  pointer arithmetic on void * variables, which does not work in
  standard C as a void * has no size. I changed the pointers to unsigned
  char *. 

* The header file apache_request.h does use a C++ comment which produces
  warning in a normal C compiler about extra garbage at the end of an
  #endif pre-processor statement, making this a C comment avoids the
  warning.

* AIX needs extra linker flags to cope with the special .exp file
  mechanism that defines the symbols to export for a dynamic shared
  object/shared library. The Apache::src module has a convenient method
  to retrieve these flags if needed.
-- 
Jens-Uwe Mager

HELIOS Software GmbH
Steinriede 3
30827 Garbsen
Germany

Phone:          +49 5131 709320
FAX:            +49 5131 709325
Internet:       [EMAIL PROTECTED]
Index: Cookie/Cookie.xs
===================================================================
RCS file: /home/cvspublic/httpd-apreq/Cookie/Cookie.xs,v
retrieving revision 1.3
diff -u -d -r1.3 Cookie.xs
--- Cookie/Cookie.xs    2000/03/30 04:49:14     1.3
+++ Cookie/Cookie.xs    2000/12/27 18:26:15
@@ -1,5 +1,6 @@
 #include "apache_request.h"
 #include "apache_cookie.h"
+#undef __attribute__
 #include "mod_perl.h"
 
 typedef ApacheCookie * Apache__Cookie;
Index: Cookie/Makefile.PL
===================================================================
RCS file: /home/cvspublic/httpd-apreq/Cookie/Makefile.PL,v
retrieving revision 1.1.1.1
diff -u -d -r1.1.1.1 Makefile.PL
--- Cookie/Makefile.PL  1999/01/27 01:33:20     1.1.1.1
+++ Cookie/Makefile.PL  2000/12/27 18:26:15
@@ -28,6 +28,9 @@
         'INC'  => "-I../c ". $src->inc,
         'TYPEMAPS'  => $src->typemaps,
         'LIBS' => "-L$root -lapreq",
+       'dynamic_lib' => {
+               'OTHERLDFLAGS' => $src->otherldflags,
+       },
     );
     unlink "$root/libapreq.a";
 }
Index: Request/Makefile.PL
===================================================================
RCS file: /home/cvspublic/httpd-apreq/Request/Makefile.PL,v
retrieving revision 1.1.1.1
diff -u -d -r1.1.1.1 Makefile.PL
--- Request/Makefile.PL 1999/01/27 01:33:20     1.1.1.1
+++ Request/Makefile.PL 2000/12/27 18:26:16
@@ -28,6 +28,9 @@
          'INC' => "-I../c ". $src->inc,
          'TYPEMAPS'  => $src->typemaps,
           'LIBS' => "-L$root -lapreq",
+         'dynamic_lib' => {
+               'OTHERLDFLAGS' => $src->otherldflags,
+         },
     );
     unlink "$root/libapreq.a";
 }
Index: Request/Request.xs
===================================================================
RCS file: /home/cvspublic/httpd-apreq/Request/Request.xs,v
retrieving revision 1.4
diff -u -d -r1.4 Request.xs
--- Request/Request.xs  1999/05/13 20:43:34     1.4
+++ Request/Request.xs  2000/12/27 18:26:16
@@ -1,4 +1,5 @@
 #include "apache_request.h"
+#undef __attribute__
 #include "mod_perl.h"
 
 typedef ApacheRequest * Apache__Request;
Index: c/apache_multipart_buffer.c
===================================================================
RCS file: /home/cvspublic/httpd-apreq/c/apache_multipart_buffer.c,v
retrieving revision 1.3
diff -u -d -r1.3 apache_multipart_buffer.c
--- c/apache_multipart_buffer.c 2000/12/19 00:21:57     1.3
+++ c/apache_multipart_buffer.c 2000/12/27 18:26:16
@@ -69,12 +69,12 @@
 {
     int needlen = strlen(needle);
     int len = haystacklen;
-    void *ptr = haystack;
+    unsigned char *ptr = haystack;
     
     /* iterate through first character matches */
     while( (ptr = memchr(ptr, needle[0], len)) ) {
        /* calculate length after match */
-       len = haystacklen - (ptr - haystack);
+       len = haystacklen - (ptr - (unsigned char *)haystack);
 
        /* done if matches up to capacity of buffer */
        if(memcmp(needle, ptr, needlen < len ? needlen : len) == 0 &&
Index: c/apache_request.h
===================================================================
RCS file: /home/cvspublic/httpd-apreq/c/apache_request.h,v
retrieving revision 1.3
diff -u -d -r1.3 apache_request.h
--- c/apache_request.h  2000/03/30 05:03:29     1.3
+++ c/apache_request.h  2000/12/27 18:26:16
@@ -102,4 +102,4 @@
 #define REQ_DEBUG(a)
 #endif
 
-#endif // _APACHE_REQUEST_H
+#endif /* _APACHE_REQUEST_H */

Reply via email to