git-commit-vandalism/compat
Jeff King 21aeafceda add generic terminal prompt function
When we need to prompt the user for input interactively, we
want to access their terminal directly. We can't rely on
stdio because it may be connected to pipes or files, rather
than the terminal. Instead, we use "getpass()", because it
abstracts the idea of prompting and reading from the
terminal.  However, it has some problems:

  1. It never echoes the typed characters, which makes it OK
     for passwords but annoying for other input (like usernames).

  2. Some implementations of getpass() have an extremely
     small input buffer (e.g., Solaris 8 is reported to
     support only 8 characters).

  3. Some implementations of getpass() will fall back to
     reading from stdin (e.g., glibc). We explicitly don't
     want this, because our stdin may be connected to a pipe
     speaking a particular protocol, and reading will
     disrupt the protocol flow (e.g., the remote-curl
     helper).

  4. Some implementations of getpass() turn off signals, so
     that hitting "^C" on the terminal does not break out of
     the password prompt. This can be a mild annoyance.

Instead, let's provide an abstract "git_terminal_prompt"
function that addresses these concerns. This patch includes
an implementation based on /dev/tty, enabled by setting
HAVE_DEV_TTY. The fallback is to use getpass() as before.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-12-12 16:09:38 -08:00
..
fnmatch compat/fnmatch/fnmatch.c: give a fall-back definition for NULL 2011-05-26 09:25:47 -07:00
nedmalloc remove doubled words, e.g., s/to to/to/, and fix related typos 2011-04-13 11:59:11 -07:00
regex Fix compat/regex ANSIfication on MinGW 2010-08-26 09:25:53 -07:00
vcbuild Merge branch 'rj/msvc-fix' 2010-12-16 12:55:36 -08:00
win32 compat/win32/poll.c: upgrade from upstream 2011-10-30 18:45:16 -07:00
basename.c
bswap.h compat: make gcc bswap an inline function 2011-03-16 12:44:59 -07:00
cygwin.c Merge branch 'jc/maint-cygwin-trust-executable-bit-default' 2011-07-13 14:31:36 -07:00
cygwin.h
fopen.c
hstrerror.c
inet_ntop.c inet_ntop.c: Work around GCC 4.6's detection of uninitialized variables 2011-10-18 10:34:07 -07:00
inet_pton.c compat: add inet_pton and inet_ntop prototypes 2010-11-04 16:53:49 -07:00
memmem.c
mingw.c Merge branch 'pt/mingw-misc-fixes' 2011-10-18 21:59:11 -07:00
mingw.h Revert "upload-archive: use start_command instead of fork" 2011-11-15 15:39:33 -08:00
mkdtemp.c
mmap.c
msvc.c win32: use our own dirent.h 2010-11-23 16:06:50 -08:00
msvc.h compat: provide a fallback va_copy definition 2011-02-26 01:06:50 -08:00
obstack.c obstack.c: Fix some sparse warnings 2011-09-11 14:43:33 -07:00
obstack.h obstack: Fix portability issues 2011-08-28 22:03:26 -07:00
pread.c
qsort.c cleanup: use internal memory allocation wrapper functions everywhere 2011-10-06 13:54:32 -07:00
setenv.c
snprintf.c
strcasestr.c
strlcpy.c
strtok_r.c compat: add strtok_r() 2010-08-14 19:35:38 -07:00
strtoumax.c
terminal.c add generic terminal prompt function 2011-12-12 16:09:38 -08:00
terminal.h add generic terminal prompt function 2011-12-12 16:09:38 -08:00
unsetenv.c
win32.h
win32mmap.c Fix "Out of memory? mmap failed" for files larger than 4GB on Windows 2010-05-20 16:11:06 -07:00
winansi.c