Further refinements of ptsname_r(3) interface:
- Hide ptsname_r under __BSD_VISIBLE for now as the specification is not finalized at this time. - Keep Symbol.map sorted. - Avoid the interposing of ptsname_r(3) from an user application from breaking ptsname(3) by making the implementation a static method and call the static function from ptsname(3) instead. Reported by: kib Reviewed by: kib, jilles MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D26845
This commit is contained in:
parent
bce74ff0ce
commit
5011fb430a
@ -211,7 +211,6 @@ double drand48(void);
|
|||||||
double erand48(unsigned short[3]);
|
double erand48(unsigned short[3]);
|
||||||
/* char *fcvt(double, int, int * __restrict, int * __restrict); */
|
/* char *fcvt(double, int, int * __restrict, int * __restrict); */
|
||||||
/* char *gcvt(double, int, int * __restrict, int * __restrict); */
|
/* char *gcvt(double, int, int * __restrict, int * __restrict); */
|
||||||
int grantpt(int);
|
|
||||||
char *initstate(unsigned int, char *, size_t);
|
char *initstate(unsigned int, char *, size_t);
|
||||||
long jrand48(unsigned short[3]);
|
long jrand48(unsigned short[3]);
|
||||||
char *l64a(long);
|
char *l64a(long);
|
||||||
@ -223,9 +222,6 @@ char *mktemp(char *);
|
|||||||
#endif
|
#endif
|
||||||
long mrand48(void);
|
long mrand48(void);
|
||||||
long nrand48(unsigned short[3]);
|
long nrand48(unsigned short[3]);
|
||||||
int posix_openpt(int);
|
|
||||||
char *ptsname(int);
|
|
||||||
int ptsname_r(int, char *, size_t);
|
|
||||||
int putenv(char *);
|
int putenv(char *);
|
||||||
long random(void);
|
long random(void);
|
||||||
unsigned short
|
unsigned short
|
||||||
@ -233,8 +229,18 @@ unsigned short
|
|||||||
char *setstate(/* const */ char *);
|
char *setstate(/* const */ char *);
|
||||||
void srand48(long);
|
void srand48(long);
|
||||||
void srandom(unsigned int);
|
void srandom(unsigned int);
|
||||||
|
#endif /* __XSI_VISIBLE */
|
||||||
|
|
||||||
|
#if __XSI_VISIBLE
|
||||||
|
int grantpt(int);
|
||||||
|
int posix_openpt(int);
|
||||||
|
char *ptsname(int);
|
||||||
int unlockpt(int);
|
int unlockpt(int);
|
||||||
#endif /* __XSI_VISIBLE */
|
#endif /* __XSI_VISIBLE */
|
||||||
|
#if __BSD_VISIBLE
|
||||||
|
/* ptsname_r will be included in POSIX issue 8 */
|
||||||
|
int ptsname_r(int, char *, size_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __BSD_VISIBLE
|
#if __BSD_VISIBLE
|
||||||
extern const char *malloc_conf;
|
extern const char *malloc_conf;
|
||||||
|
@ -122,10 +122,10 @@ FBSD_1.5 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
FBSD_1.6 {
|
FBSD_1.6 {
|
||||||
|
ptsname_r;
|
||||||
qsort_s;
|
qsort_s;
|
||||||
rand;
|
rand;
|
||||||
srand;
|
srand;
|
||||||
ptsname_r;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
FBSDprivate_1.0 {
|
FBSDprivate_1.0 {
|
||||||
|
@ -76,7 +76,7 @@ __strong_reference(__isptmaster, unlockpt);
|
|||||||
* associated with the specified master.
|
* associated with the specified master.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ptsname_r(int fildes, char *buffer, size_t buflen)
|
__ptsname_r(int fildes, char *buffer, size_t buflen)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (buflen <= sizeof(_PATH_DEV)) {
|
if (buflen <= sizeof(_PATH_DEV)) {
|
||||||
@ -101,6 +101,8 @@ ptsname_r(int fildes, char *buffer, size_t buflen)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__strong_reference(__ptsname_r, ptsname_r);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ptsname(): return the pathname of the slave pseudo-terminal device
|
* ptsname(): return the pathname of the slave pseudo-terminal device
|
||||||
* associated with the specified master.
|
* associated with the specified master.
|
||||||
@ -108,10 +110,10 @@ ptsname_r(int fildes, char *buffer, size_t buflen)
|
|||||||
char *
|
char *
|
||||||
ptsname(int fildes)
|
ptsname(int fildes)
|
||||||
{
|
{
|
||||||
static char pt_slave[sizeof _PATH_DEV + SPECNAMELEN];
|
static char pt_slave[sizeof(_PATH_DEV) + SPECNAMELEN];
|
||||||
|
|
||||||
if (ptsname_r(fildes, pt_slave, sizeof(pt_slave)) == 0)
|
if (__ptsname_r(fildes, pt_slave, sizeof(pt_slave)) == 0)
|
||||||
return (pt_slave);
|
return (pt_slave);
|
||||||
else
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user