[exim-dev] Re: BIND_8_COMPAT & namesr_compat.h on OSX 10.4.1

Top Page
Delete this message
Reply to this message
Author: OpenMacNews
Date:  
To: Philip Hazel
CC: exim-dev
Subject: [exim-dev] Re: BIND_8_COMPAT & namesr_compat.h on OSX 10.4.1
hi philip,

>> in my limited experience, BIND_8_COMPAT is *supposed* to be the flag that
>> does the trick ... but i've only seen/used it in configure.in, NOT on the
>> cmd line
>
> In that case, putting
>
># define BIND_8_COMPAT
>
> in the OS/os.h-Darwin file for Exim should do the trick. If it does, I
> will put it into the distribution.


unfortunately, it seems NOT to do the trick ...

with, or without the edit of:

    =========================================
    (EDITOR) src/exim.h
    @49
        /* ANSI C standard includes */
    +++    #include <arpa/nameser_compat.h>
        #include <ctype.h>
    =========================================


the addition of:

    =========================================
    (EDITOR) OS/os.h-Darwin
    @6
    +++    #define BIND_8_COMPAT
        #define HAVE_MMAP
    =========================================


causes 'make' to fail with:

    ...
    >>> eximon script built


    cc -DCOMPILE_UTILITY spool_in.c
    In file included from /usr/local/include/spf2/spf_dns.h:106,
                     from /usr/local/include/spf2/spf_server.h:22,
                     from /usr/local/include/spf2/spf.h:27,
                     from spf.h:17,
                     from exim.h:437,
                     from spool_in.c:14:
    /usr/local/include/spf2/spf_dns_rr.h:44: error: parse error before 'ns_type'
    /usr/local/include/spf2/spf_dns_rr.h:60: error: parse error before '}' token
    /usr/local/include/spf2/spf_dns_rr.h:66: error: parse error before 'ns_type'
    In file included from /usr/local/include/spf2/spf_server.h:22,
                     from /usr/local/include/spf2/spf.h:27,
                     from spf.h:17,
                     from exim.h:437,
                     from spool_in.c:14:
    /usr/local/include/spf2/spf_dns.h:116: error: parse error before 'ns_type'
    /usr/local/include/spf2/spf_dns.h:148: error: parse error before 'ns_type'
    /usr/local/include/spf2/spf_dns.h:151: error: parse error before 'ns_type'
    /usr/local/include/spf2/spf_dns.h:154: error: parse error before 'ns_type'
    make[1]: *** [util-spool_in.o] Error 1
    make: *** [go] Error 2



whereas,

    WITHOUT the change to 'OS/os.h-Darwin'
    WITH the change to 'src/exim.h'


the make completes OK,

    ...
    smtp_in.o definition of _deny_severity in section (__DATA,__data)
    /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libwrap.dylib(tcpd.o)
    definition of _deny_severity
    /usr/bin/strip exim


    >>> exim binary built



and the binaries install/launch.

for reference, i've included the ssrc of *my*:

    % cat /usr/local/include/spf2/spf_dns_rr.h


here --

=======================================================
/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of either:
 *
 *   a) The GNU Lesser General Public License as published by the Free
 *      Software Foundation; either version 2.1, or (at your option) any
 *      later version,
 *
 *   OR
 *
 *   b) The two-clause BSD license.
 *
 * These licenses can be found with the distribution in the file LICENSES
 */





#ifndef INC_SPF_DNS_RR
#define INC_SPF_DNS_RR

typedef struct SPF_dns_rr_struct SPF_dns_rr_t;

#include "spf_dns.h"

/* The strings in this union are usually  malloc'ed larger than the
 * size of the union.  Only create pointers to it! */
typedef union
{
    struct in_addr      a;
    char                        ptr[1];
    char                        mx[1];
    char                        txt[1];
    struct in6_addr     aaaa;
} SPF_dns_rr_data_t;



struct SPF_dns_rr_struct
{
    /* query information */
    char                                *domain;                /* FQDN queried 
for               */
    size_t                               domain_buf_len;/* alloced size of 
domain */


    ns_type                              rr_type;               /* type of RR 
queried for */



    /* answer information */
    int                                  num_rr;        /* number of RR 
returned in rr    */
    SPF_dns_rr_data_t   **rr;           /* rr set returned              */
    size_t                              *rr_buf_len;/* alloced size of each rr 
*/
    int                                  rr_buf_num;/* number of RR allocated 
*/


    time_t                               ttl;           /* raw TTL       */
    time_t                               utc_ttl;       /* TTL adjusted to UTC 
*/
    SPF_dns_stat_t               herrno;        /* h_error returned from query 
*/


    /* misc information */
    void                                *hook;          /* used by DNS layers 
*/
    SPF_dns_server_t    *source;        /* which layer created this RR  */
};


SPF_dns_rr_t    *SPF_dns_rr_new(void);
void                     SPF_dns_rr_free(SPF_dns_rr_t *spfrr);
SPF_dns_rr_t    *SPF_dns_rr_new_init(SPF_dns_server_t *spf_dns_server,
                                                const char *domain,
                                                ns_type rr_type, int ttl,
                                                SPF_dns_stat_t herrno);
SPF_dns_rr_t    *SPF_dns_rr_new_nxdomain(SPF_dns_server_t *spf_dns_server,
                                                const char *domain);


SPF_errcode_t    SPF_dns_rr_buf_realloc(SPF_dns_rr_t *spfrr,
                                                int idx, size_t len );
SPF_errcode_t    SPF_dns_rr_dup(SPF_dns_rr_t **dstp, SPF_dns_rr_t *src);



#endif
=======================================================

richard