Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
8e97f45f
Commit
8e97f45f
authored
Aug 14, 2003
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Document threading status.
Update to POSIX getpwuid_r() function.
parent
a4a31d39
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
11 deletions
+40
-11
src/port/thread.c
src/port/thread.c
+40
-11
No files found.
src/port/thread.c
View file @
8e97f45f
...
@@ -7,13 +7,41 @@
...
@@ -7,13 +7,41 @@
*
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
*
*
* $Id: thread.c,v 1.
2 2003/08/08 03:09:56
momjian Exp $
* $Id: thread.c,v 1.
3 2003/08/14 05:27:18
momjian Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
#include "postgres.h"
#include "postgres.h"
/*
* Threading sometimes requires specially-named versions of functions
* that return data in static buffers, like strerror_r() instead of
* strerror(). Other operating systems use pthread_setspecific()
* and pthread_getspecific() internally to allow standard library
* functions to return static data to threaded applications.
*
* Additional confusion exists because many operating systems that
* use pthread_setspecific/pthread_getspecific() also have *_r versions
* of standard library functions for compatibility with operating systems
* that require them. However, internally, these *_r functions merely
* call the thread-safe standard library functions.
*
* For example, BSD/OS 4.3 uses Bind 8.2.3 for getpwuid(). Internally,
* getpwuid() calls pthread_setspecific/pthread_getspecific() to return
* static data to the caller in a thread-safe manner. However, BSD/OS
* also has getpwuid_r(), which merely calls getpwuid() and shifts
* around the arguments to match the getpwuid_r() function declaration.
* Therefore, while BSD/OS has getpwuid_r(), it isn't required. It also
* doesn't have strerror_r(), so we can't fall back to only using *_r
* functions for threaded programs.
*
* The current setup is to assume either all standard functions are
* thread-safe (NEED_REENTRANT_FUNC_NAMES=no), or the operating system
* requires reentrant function names (NEED_REENTRANT_FUNC_NAMES=yes).
*/
/*
/*
* Wrapper around strerror and strerror_r to use the former if it is
* Wrapper around strerror and strerror_r to use the former if it is
* available and also return a more useful value (the error string).
* available and also return a more useful value (the error string).
...
@@ -34,19 +62,20 @@ pqStrerror(int errnum, char *strerrbuf, size_t buflen)
...
@@ -34,19 +62,20 @@ pqStrerror(int errnum, char *strerrbuf, size_t buflen)
/*
/*
* Wrapper around getpwuid() or getpwuid_r() to mimic POSIX getpwuid_r()
* Wrapper around getpwuid() or getpwuid_r() to mimic POSIX getpwuid_r()
* behaviour, if it is not available.
* behaviour, if it is not available
or required
.
*/
*/
int
int
pqGetpwuid
(
uid_t
uid
,
struct
passwd
*
resultbuf
,
char
*
buffer
,
pqGetpwuid
(
uid_t
uid
,
struct
passwd
*
resultbuf
,
char
*
buffer
,
size_t
buflen
,
struct
passwd
**
result
)
size_t
buflen
,
struct
passwd
**
result
)
{
{
#if defined(USE_THREADS) && defined(HAVE_GETPWUID_R)
#if defined(USE_THREADS) && defined(HAVE_GETPWUID_R)
/*
/*
* broken (well early POSIX draft) getpwuid_r() which returns 'struct
* Early POSIX draft of getpwuid_r() returns 'struct passwd *'.
* passwd *'
* getpwuid_r(uid, resultbuf, buffer, buflen)
* Do we need to support it? bjm 2003-08-14
*/
*/
*
result
=
getpwuid_r
(
uid
,
resultbuf
,
buffer
,
buflen
);
/* POSIX version */
getpwuid_r
(
uid
,
resultbuf
,
buffer
,
buflen
,
result
);
#else
#else
/* no getpwuid_r() available, just use getpwuid() */
/* no getpwuid_r() available, just use getpwuid() */
*
result
=
getpwuid
(
uid
);
*
result
=
getpwuid
(
uid
);
...
@@ -56,13 +85,13 @@ pqGetpwuid(uid_t uid, struct passwd * resultbuf, char *buffer,
...
@@ -56,13 +85,13 @@ pqGetpwuid(uid_t uid, struct passwd * resultbuf, char *buffer,
/*
/*
* Wrapper around gethostbyname() or gethostbyname_r() to mimic
* Wrapper around gethostbyname() or gethostbyname_r() to mimic
* POSIX gethostbyname_r() behaviour, if it is not available.
* POSIX gethostbyname_r() behaviour, if it is not available
or required
.
*/
*/
int
int
pqGethostbyname
(
const
char
*
name
,
pqGethostbyname
(
const
char
*
name
,
struct
hostent
*
resbuf
,
struct
hostent
*
resbuf
,
char
*
buf
,
size_t
buflen
,
char
*
buf
,
size_t
buflen
,
struct
hostent
**
result
,
struct
hostent
**
result
,
int
*
herrno
)
int
*
herrno
)
{
{
#if defined(USE_THREADS) && defined(HAVE_GETHOSTBYNAME_R)
#if defined(USE_THREADS) && defined(HAVE_GETHOSTBYNAME_R)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment