--On Tuesday, September 02, 2003 00:04:35 -0400 Bruce Momjian <[EMAIL PROTECTED]> wrote:

Larry Rosenman wrote:
>> > Oh, interesting.  So you are saying that if the OS supports threads,
>> > then we use the *_r if they have them, and assume the non *_r
>> > functions are already thread-safe if they don't.  Interesting.
>> >
>> > That seems to be what we have on Unixware, and on BSD/OS I have some
>> > *_r functions but not others, but they are all threadsafe, so your
>> > plan works there too.
>> UnixWare's Kernel is threaded, and I assume anything in libc is
>> threadsafe  unless
>> told otherwise.
>
> What?  You said Unixware needs getpwuid_r.  And this has nothing to do
> with whether the kernel is threaded.
right, getpwuid is not threadsafe, so we use the provided getpwuid_r.

Larry, I read the URL you gave me:


http://www.lerctr.org:8458/en/man/html.3C/getpwent.3C.html

Where does it say that you have to use getpwuid_r() to be thread safe?
I don't see any mention in the docs.  It does say about getpwuid:

        For getpwent, getpwuid, getpwnam, setpwent, endpwent, and
        fgetpwent, all information is contained in a static area, so it must be
        copied if it is to be

but that in itself doesn't mean it isn't thread safe.  If you are not
sure, would you write a little thread program to test if it works if two
threads try it at the same time.
I only have a UP box.

Since the _r version uses OUR OWN buffer, it is safer to use the _r version.

Since we do NOT have the _r alternative for strerror and gethostbyname, that's the
best we can do.





-- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: [EMAIL PROTECTED] US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749


---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend

Reply via email to