G/E,
After some head scratching/bashing and research:

Brotli.lib has several places that use log2(), which was not defined in C89 (AFAIK), although the function could be kludged easily enough as it uses C89 functions in its own routine.

Although NetWare was derived using a C89 compiler, its math.h shows signs of its early development, in that a number of MATHs macro's resolve not to values but to LibC functions, which means they can't be used in 'const' assignments... hence const XXXX = INFINITY fails to compile. (It was on the ToDo list it seems but the ship sank before it made the top of the list.) Tweaking math.h while possible, doesn't make for much sense, but mod_brotli does at least compile without issue; well almost.

The only C89 issue (AFAICT) is the following patch, which should allow any other C89 (with a more up to date OS ;-( ) to compile it, which NetWare's CW can do for the likes of Apache2, Lua, Zlib, NGHTTP2, OSSL and a bunch of others.

Index: modules/filters/mod_brotli.c
===================================================================
--- modules/filters/mod_brotli.c        (revision 1771539)
+++ modules/filters/mod_brotli.c        (working copy)
@@ -240,7 +240,7 @@
             output = BrotliEncoderTakeOutput(ctx->state, &output_len);
             ctx->total_out += output_len;

-            b = apr_bucket_transient_create(output, output_len,
+            b = apr_bucket_transient_create((const char *)output, output_len,
                                             ctx->bb->bucket_alloc);
             APR_BRIGADE_INSERT_TAIL(ctx->bb, b);

@@ -289,7 +289,7 @@
         output = BrotliEncoderTakeOutput(ctx->state, &output_len);
         ctx->total_out += output_len;

-        b = apr_bucket_heap_create(output, output_len, NULL,
+        b = apr_bucket_heap_create((const char *)output, output_len, NULL,
                                    ctx->bb->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
     }
Norm

Index: modules/filters/mod_brotli.c
===================================================================
--- modules/filters/mod_brotli.c	(revision 1771539)
+++ modules/filters/mod_brotli.c	(working copy)
@@ -240,7 +240,7 @@
             output = BrotliEncoderTakeOutput(ctx->state, &output_len);
             ctx->total_out += output_len;
 
-            b = apr_bucket_transient_create(output, output_len,
+            b = apr_bucket_transient_create((const char *)output, output_len,
                                             ctx->bb->bucket_alloc);
             APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
 
@@ -289,7 +289,7 @@
         output = BrotliEncoderTakeOutput(ctx->state, &output_len);
         ctx->total_out += output_len;
 
-        b = apr_bucket_heap_create(output, output_len, NULL,
+        b = apr_bucket_heap_create((const char *)output, output_len, NULL,
                                    ctx->bb->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
     }

Reply via email to