apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe Jr." <wr...@rowe-clan.net>
Subject Re: svn commit: r890580 - in /apr/apr-util/branches/1.4.x: crypto/apr_crypto.c crypto/apr_crypto_nss.c crypto/apr_crypto_openssl.c include/apr_crypto.h include/private/apr_crypto_internal.h test/testcrypto.c
Date Tue, 15 Dec 2009 18:52:17 GMT
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.


Mime
View raw message