--On Tuesday, September 02, 2003 00:04:35 -0400 Bruce Momjian <[EMAIL PROTECTED]> wrote:
Larry Rosenman wrote:I only have a UP box.>> > 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.
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