Mats Erik Andersson <mats.anders...@gisladisker.se> writes: > tisdag den 21 september 2010 klockan 12:32 skrev Simon Josefsson detta: >> Mats Erik Andersson <mats.anders...@gisladisker.se> writes: >> >> > Without the proposed change, OpenBSD comes to a halt with a cryptic >> > message about clashing prototypes for free(3). The explanation is >> > that OpenBSD uses >> > >> > ### /usr/include/net/if.h >> > >> > #define if_freenameindex(x) free(x) >> > >> > The corresponding function in GNU/Linux is a true function! >> >> Interesting. According to POSIX: >> >> http://www.opengroup.org/onlinepubs/9699919799/functions/if_freenameindex.html >> >> It should be a real function. Could you report this as a OpenBSD bug? >> >> It does sounds as if this is something that gnulib could offer a working >> replacement for, instead of InetUtils using a hack. It looks like an >> OpenBSD bug that would affect other applications too. >> >> The exact compile error would help in understanding why things fail >> here. Could you create a small example that reproduce the problem? >> E.g. something like: >> >> #include <net/if.h> >> int main (void) { if_freenameindex ((void*)0); } >> >> or something like that? And then quote the compile error. > > Well, no compile error will arise in such a minimal program. > The problem is rather that the macro definition in OpenBSD > will affect the two files > > inetutils/ifconfig/if_index.h > > inetutils/ifconfig/if_index.c > > into replacing every "if_freenameindex" with "free", thus causing > the most unpleasant namespace collisions. I will send a reminder to > bug-gnulib to be safe, though.
Looking at that code, I think all of it really belongs in gnulib. if_nameindex is part of POSIX, after all. /Simon