mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-23 15:07:03 +01:00
* ttyio.c (TERMDEVICE): Removed.
(tty_get_ttyname): New. (init_ttyfp): Use it here instead of the TERMDEVICE macro.
This commit is contained in:
parent
d219b061ac
commit
41fb1aceb7
@ -20,6 +20,7 @@
|
|||||||
#ifndef G10_TTYIO_H
|
#ifndef G10_TTYIO_H
|
||||||
#define G10_TTYIO_H
|
#define G10_TTYIO_H
|
||||||
|
|
||||||
|
const char *tty_get_ttyname (void);
|
||||||
int tty_batchmode( int onoff );
|
int tty_batchmode( int onoff );
|
||||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
|
||||||
void tty_printf (const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
|
void tty_printf (const char *fmt, ... ) __attribute__ ((format (printf,1,2)));
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2002-11-09 Werner Koch <wk@gnupg.org>
|
||||||
|
|
||||||
|
* ttyio.c (TERMDEVICE): Removed.
|
||||||
|
(tty_get_ttyname): New.
|
||||||
|
(init_ttyfp): Use it here instead of the TERMDEVICE macro.
|
||||||
|
|
||||||
2002-11-06 David Shaw <dshaw@jabberwocky.com>
|
2002-11-06 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* w32reg.c (read_w32_registry_string): Fixed expanding of the
|
* w32reg.c (read_w32_registry_string): Fixed expanding of the
|
||||||
|
54
util/ttyio.c
54
util/ttyio.c
@ -1,5 +1,5 @@
|
|||||||
/* ttyio.c - tty i/O functions
|
/* ttyio.c - tty i/O functions
|
||||||
* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This file is part of GnuPG.
|
* This file is part of GnuPG.
|
||||||
*
|
*
|
||||||
@ -50,11 +50,6 @@
|
|||||||
#include "ttyio.h"
|
#include "ttyio.h"
|
||||||
|
|
||||||
#define CONTROL_D ('D' - 'A' + 1)
|
#define CONTROL_D ('D' - 'A' + 1)
|
||||||
#ifdef __VMS
|
|
||||||
#define TERMDEVICE "/dev/tty"
|
|
||||||
#else
|
|
||||||
#define TERMDEVICE "/dev/tty"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __MINGW32__ /* use the odd Win32 functions */
|
#ifdef __MINGW32__ /* use the odd Win32 functions */
|
||||||
static struct {
|
static struct {
|
||||||
@ -80,6 +75,36 @@ static int no_terminal;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* This is a wrapper around ttyname so that we can use it even when
|
||||||
|
the standard streams are redirected. It figures the name out the
|
||||||
|
first time and returns it in a statically allocated buffer. */
|
||||||
|
const char *
|
||||||
|
tty_get_ttyname (void)
|
||||||
|
{
|
||||||
|
static char *name;
|
||||||
|
|
||||||
|
/* On a GNU system ctermid() always return /dev/tty, so this does
|
||||||
|
not make much sense - however if it is ever changed we do the
|
||||||
|
Right Thing now. */
|
||||||
|
#ifdef HAVE_CTERMID
|
||||||
|
static int got_name;
|
||||||
|
|
||||||
|
if (!got_name)
|
||||||
|
{
|
||||||
|
const char *s;
|
||||||
|
s = ctermid (NULL);
|
||||||
|
if (s)
|
||||||
|
name = strdup (s);
|
||||||
|
got_name = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* Assume the staandrd tty on memory error or when tehre is no
|
||||||
|
certmid. */
|
||||||
|
return name? name : "/dev/tty";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_TCGETATTR
|
#ifdef HAVE_TCGETATTR
|
||||||
static void
|
static void
|
||||||
cleanup(void)
|
cleanup(void)
|
||||||
@ -98,7 +123,7 @@ init_ttyfp(void)
|
|||||||
if( initialized )
|
if( initialized )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(__MINGW32__)
|
#if defined(__MINGW32__)
|
||||||
{
|
{
|
||||||
SECURITY_ATTRIBUTES sa;
|
SECURITY_ATTRIBUTES sa;
|
||||||
|
|
||||||
@ -122,18 +147,19 @@ init_ttyfp(void)
|
|||||||
SetConsoleMode(con.in, DEF_INPMODE );
|
SetConsoleMode(con.in, DEF_INPMODE );
|
||||||
SetConsoleMode(con.out, DEF_OUTMODE );
|
SetConsoleMode(con.out, DEF_OUTMODE );
|
||||||
|
|
||||||
#elif defined(__EMX__)
|
#elif defined(__EMX__)
|
||||||
ttyfp = stdout; /* Fixme: replace by the real functions: see wklib */
|
ttyfp = stdout; /* Fixme: replace by the real functions: see wklib */
|
||||||
#else
|
#else
|
||||||
ttyfp = batchmode? stderr : fopen(TERMDEVICE, "r+");
|
ttyfp = batchmode? stderr : fopen( tty_get_ttyname (), "r+");
|
||||||
if( !ttyfp ) {
|
if( !ttyfp ) {
|
||||||
log_error("cannot open /dev/tty: %s\n", strerror(errno) );
|
log_error("cannot open `%s': %s\n",
|
||||||
|
tty_get_ttyname (), strerror(errno) );
|
||||||
exit(2);
|
exit(2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_TCGETATTR
|
#ifdef HAVE_TCGETATTR
|
||||||
atexit( cleanup );
|
atexit( cleanup );
|
||||||
#endif
|
#endif
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user