bug-wget
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-wget] wget-1.13 on AIX


From: Perry Smith
Subject: [Bug-wget] wget-1.13 on AIX
Date: Thu, 11 Aug 2011 08:14:20 -0500

Hi,

I've tried this on AIX 5.3 and 6.1.

The problem is with src/css.c.  In essence it is doing this:

> #include <stdio.h>
> #include <string.h>
> #include <errno.h>
> #include <stdlib.h>
> #include <inttypes.h>
> #define _LARGE_FILES
> #include <unistd.h>


The #define of _LARGE_FILES is actually done in config.h via wget.h.

I understand that AIX is very hard to deal with but this seems like a bad idea 
for any platform.  If you are going to declare that you want _LARGE_FILE 
support, you need to do that before any system includes.  What this causes is 
both _LARGE_FILES and _LARGE_FILE_API both get defined and that causes one 
place to declare (for example)

> #define ftruncate       ftruncate64


(this is in unistd.h around line 733)

and then later we have:

>         extern int              ftruncate(int, off_t);
> #ifdef _LARGE_FILE_API
>         extern int              ftruncate64(int, off64_t);
> #endif


(around line 799) which the compiler complains about with:

> /usr/include/unistd.h:801: error: conflicting types for 'ftruncate64'
> /usr/include/unistd.h:799: error: previous declaration of 'ftruncate64' was 
> here


There are actually several pairs of these.

With the above code snippet, if you move the #define to the top, (or completely 
remove it) the compile works fine.

It just seems like it would be prudent to declare things like _LARGE_FILES in 
config.h (like you do) but put config.h as the first include of each file so 
that the entire code base knows which interface the program wants to use.

What I did was to move css.c to _css.c.  I put an #ifndef _CONFIG_H wrapper 
inside config.h and then the new css.c was simply:

#include "config.h"
#include "_css.c"

and that worked for my 5.3 system.  I have not tried it on my 6.1 system yet.

I hope this helps someone.

Thank you,
pedz



reply via email to

[Prev in Thread] Current Thread [Next in Thread]