[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