[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Re: [PATCH] second try at fixing up socklen issues on Solaris
From: Waldo Bastian <bastian () kde ! org>
Date: 2001-04-05 15:38:41
[Download RAW message or body]
On Thursday 05 April 2001 04:50, Oswald Buddenhagen wrote:
> > I can't imagine why any OS should use more than sizeof(int) bytes for
> > socklen_t, but who knows?
>
> me knows:
> quoting the accept(2) man page on linux (so even the last person
> on this list understands, what this thread is all about ...):
>
> 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 obvi-
> ously 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).
>
> so the only acceptable solution seems to be the one i already presented:
> - export interfaces using "[unsigned] int"
> - internally use "socklen_t", which is #defined to
> typeof("actual-socklen_t"), if no native typedef is found by configure
>
> don't use any ksize_t or ksocklen_t - that's only unnecessary clutter.
?? ksize_t is exactly what you propose socklen_t to be. I don't see why that
is "unnecessary clutter" since it is already there and used in many other
places where we had the same problem. The name might not be the most suitable
but I hope you can see past that.
Cheers,
Waldo
--
bastian@kde.org | SuSE Labs KDE Developer | bastian@suse.com
>> Visit http://master.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic