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:
Marcus Brinkmann 2004-12-11 15:48:00 +00:00
parent f355692a65
commit 04be3c316c
5 changed files with 67 additions and 0 deletions

View File

@ -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> 2004-12-07 Marcus Brinkmann <marcus@g10code.de>
* README: Refer to COPYING.LESSER and "each file" instead of * README: Refer to COPYING.LESSER and "each file" instead of

View File

@ -171,6 +171,15 @@ if test "$ac_cv_func_vasprintf" != yes; then
GNUPG_CHECK_VA_COPY GNUPG_CHECK_VA_COPY
fi 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(). # Try to find a thread-safe version of getenv().
have_thread_safe_getenv=no have_thread_safe_getenv=no
jm_GLIBC21 jm_GLIBC21

View File

@ -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> 2004-12-07 Marcus Brinkmann <marcus@g10code.de>
* putc_unlocked.c, funopen.c: I just claim copyright on these * putc_unlocked.c, funopen.c: I just claim copyright on these

43
gpgme/ttyname_r.c Normal file
View 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;
}

View File

@ -44,6 +44,10 @@ char *stpcpy (char *a, const char *b);
int vasprintf (char **result, const char *format, va_list args); int vasprintf (char **result, const char *format, va_list args);
int asprintf (char **result, const char *format, ...); int asprintf (char **result, const char *format, ...);
#endif #endif
#ifndef HAVE_TTYNAME_R
int ttyname_r (int fd, char *buf, size_t buflen);
#endif
#endif #endif