2004-12-11 Marcus Brinkmann <marcus@g10code.de>
* configure.ac: Replace ttyname_r if it doesn't exist (and warn in that case). gpgme/ 2004-12-11 Marcus Brinkmann <marcus@g10code.de> * util.h [HAVE_CONFIG_H && HAVE_TTYNAME_R] (ttyname_r): Define prototype. * ttyname_r.c: New file.
This commit is contained in:
parent
f355692a65
commit
04be3c316c
@ -1,3 +1,8 @@
|
||||
2004-12-11 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* configure.ac: Replace ttyname_r if it doesn't exist (and warn in
|
||||
that case).
|
||||
|
||||
2004-12-07 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* README: Refer to COPYING.LESSER and "each file" instead of
|
||||
|
@ -171,6 +171,15 @@ if test "$ac_cv_func_vasprintf" != yes; then
|
||||
GNUPG_CHECK_VA_COPY
|
||||
fi
|
||||
|
||||
# Try to find a thread-safe version of ttyname().
|
||||
AC_REPLACE_FUNCS(ttyname_r)
|
||||
if test "$ac_cv_func_ttyname_r" != yes; then
|
||||
AC_MSG_WARN([
|
||||
***
|
||||
*** ttyname() is not thread-safe and ttyname_r() does not exist
|
||||
***])
|
||||
fi
|
||||
|
||||
# Try to find a thread-safe version of getenv().
|
||||
have_thread_safe_getenv=no
|
||||
jm_GLIBC21
|
||||
|
@ -1,3 +1,9 @@
|
||||
2004-12-11 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* util.h [HAVE_CONFIG_H && HAVE_TTYNAME_R] (ttyname_r): Define
|
||||
prototype.
|
||||
* ttyname_r.c: New file.
|
||||
|
||||
2004-12-07 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* putc_unlocked.c, funopen.c: I just claim copyright on these
|
||||
|
43
gpgme/ttyname_r.c
Normal file
43
gpgme/ttyname_r.c
Normal file
@ -0,0 +1,43 @@
|
||||
/* ttyname_r.c - A ttyname_r() replacement.
|
||||
Copyright (C) 2003, 2004 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
GPGME is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
GPGME is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
#warning ttyname is not thread-safe, and ttyname_r is missing
|
||||
|
||||
int ttyname_r(int fd, char *buf, size_t buflen)
|
||||
{
|
||||
char *tty;
|
||||
|
||||
tty = ttyname (fd);
|
||||
if (!tty)
|
||||
return errno;
|
||||
|
||||
strncpy (buf, tty, buflen);
|
||||
buf[buflen - 1] = '\0';
|
||||
return (strlen (tty) >= buflen) ? ERANGE : 0;
|
||||
}
|
@ -44,6 +44,10 @@ char *stpcpy (char *a, const char *b);
|
||||
int vasprintf (char **result, const char *format, va_list args);
|
||||
int asprintf (char **result, const char *format, ...);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_TTYNAME_R
|
||||
int ttyname_r (int fd, char *buf, size_t buflen);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user