Graham Leggett wrote:
>
> I plan to revert the entire change to v1.4 as you've requested, as
> making apr_crypto_t private is definitely an incompatible ABI change
> given that v1.4.x has been released.
Hold off... it is not incompatible (well, you can slide *errfn to the
last element of the structure, but otherwise)...
What we need is a way to document *and validate* incomplete C types
into complete C types with structures. The approach in apr_general.h
or somewhere similar would be;
#if APR_HAVE_VOID_INCOMPLETE_TYPES
#define APR_TYPEDEF_STRUCT(type, incompletion) \
typedef struct type {
incompletion
void unk[];
} type;
#else
typedef struct type type;
#endif
and then within apr_foo.h, an particular example;
APR_TYPEDEF_STRUCT(apr_foo_t, \
apr_pool_t *pool; \
apr_foo_ctx_t *ctx; \
)
or something very closely resembling this. Need to work out the exact
mechanics that aren't subject to macro problems, and the autoconf magic
to detect the availability.
My gut says hold off releasing apr-1.4.1 for just a bit to see if this
feature would be the solution.