On Thursday 18 October 2001 16:33, Brian S. Julin wrote:
> On Thu, 18 Oct 2001, Ulhas Samant wrote:
> > We could build the GGI on Solaris
> > However we get the following errors while building GGI demos.
 ...
> > "wrap.c", line 59: undefined symbol: socklen_t
> > "wrap.c", line 59: syntax error before or at: len

Not that one again. Apologies to all using a FREE os already and so 
wouldn't need mail to read the quoted version of accept(2):

NOTE
 The third argument of accept was originally declared as an `int *' 
(and is that under libc4 and libc5 and on many other systems like BSD 
4.*, SunOS 4, SGI); a POSIX 1003.1g draft standard wanted to change it 
into a `size_t *', and that is what it is for SunOS 5. Later POSIX 
drafts have `socklen_t *', and so do the Single Unix Specification and 
glibc2. Quoting Linus Torvalds: _Any_ sane library _must_ have 
"socklen_t" be the same size as int. Anything else breaks any BSD 
socket layer stuff. POSIX initially _did_ make it a size_t, and I (and 
hopefully others, but obviously not too many) complained to them very 
loudly indeed. Making it a size_t is completely broken, exactly because 
size_t very seldom is the same size as "int" on 64-bit architectures, 
for example. And it _has_ to be the same size as "int" because that's 
what the BSD socket interface is. Anyway, the POSIX people eventually 
got a clue, and created "socklen_t". They shouldn't have touched it in 
the first place, but once they did they felt it had to have a named 
type for some unfathomable reason (probably somebody didn't like losing 
face over having done the original stupid thing, so they silently just 
renamed their blunder).

Here's how i 'did to' cthugha once:

configure.in:
AC_EGREP_HEADER(socklen_t, bits/socket.h, AC_DEFINE(HAVE_SOCKLEN_T))

acconfig.h:
/* silly socklen_t instead of int is used */
#undef HAVE_SOCKLEN_T

src/cthugha.h:
#include "../config.h"
 ...
#if HAVE_SOCKLEN_T
# define SOCKLEN_TYPE socklen_t
#else
# define SOCKLEN_TYPE int
#endif


> > "wrap.c", line 75: warning: argument #2 is incompatible with
> > prototype: prototype: pointer to struct sockaddr {ushort sa_family,
> > array[14] of char sa_data} : "/usr/include /sys/socket.h", line 295
> >         argument : pointer to const struct sockaddr {ushort
> > sa_family, array[14] of char sa_data} "wrap.c", line 83: undefined
> > symbol: bufsize

This one is ugly. Bash had problems at some 4.anything versions, don't 
know about the solution. Usually i'm not, but bits/socket.h makes me 
afraid. ;) so i forgot what i did ...


> > "wrap.c", line 126: cannot recover from previous errors
This should have come earlier, at least before
> > "wrap.c", line 91: undefined symbol: text


What a nice plug: Dear Aunt aGGI, would you once consider to install 
the demos of libggi2 again? I would really like to show them to all my 
friends at Debian, they are so nice! But i guess that you have a reason 
that you don't install them and so i don't include them in my package. 
You know that i've got only that boring old i386 and not the money to 
buy another machine so that i might test other archs - i really wish i 
could - but here they work just fine.
Truely yours, martin

Reply via email to