Package: libldns-dev
Version: 1.2.1-2
Severity: normal
Tags: upstream

Including <libldns/libldns.h> is not enough to successfully compile a
program which uses the libldns API.  Viz:

    [EMAIL PROTECTED]:~/code/test$ cat ldns.c
    #include <ldns/ldns.h>

    int main(void){ return 0; }

    [EMAIL PROTECTED]:~/code/test$ gcc -Wall -o ldns ldns.c
    In file included from /usr/include/ldns/ldns.h:94,
                     from ldns.c:1:
    /usr/include/ldns/util.h:55: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘ldns_read_uint16’
    /usr/include/ldns/util.h:66: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or 
‘__attribute__’ before ‘ldns_read_uint32’
    /usr/include/ldns/util.h:84: error: expected declaration specifiers or 
‘...’ before ‘uint16_t’
    /usr/include/ldns/util.h: In function ‘ldns_write_uint16’:
    /usr/include/ldns/util.h:89: error: ‘uint8_t’ undeclared (first use in this 
function)
    [...]

uint8_t is defined in the C99 standard library header stdint.h, which is
not included by any ldns header file.  Including stdint.h gives:

    [EMAIL PROTECTED]:~/code/test$ cat ldns2.c
    #include <stdint.h>
    #include <ldns/ldns.h>

    int main(void){ return 0; }

    [EMAIL PROTECTED]:~/code/test$ gcc -Wall -o ldns2 ldns2.c
    In file included from /usr/include/ldns/ldns.h:95,
                     from ldns2.c:2:
    /usr/include/ldns/buffer.h:163: error: expected declaration specifiers or 
‘...’ before ‘ssize_t’
    [...]

Now we need another header for ssize_t:

    [EMAIL PROTECTED]:~/code/test$ cat ldns3.c
    #include <stdint.h>
    #include <sys/types.h>
    #include <ldns/ldns.h>

    int main(void){ return 0; }

    [EMAIL PROTECTED]:~/code/test$ gcc -Wall -o ldns3 ldns3.c
    [EMAIL PROTECTED]:~/code/test$ 

Upstream should include headers when types from those headers are used.

-- 
Robert Edmonds
[EMAIL PROTECTED]

Attachment: signature.asc
Description: Digital signature

Reply via email to