diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:27:57 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:27:57 +0000 |
commit | 0f1b18abb46844c01accf8cd0a698ea419fb3ee6 (patch) | |
tree | 3a0b621b985818944bd3123a3b3bff732a0f3a20 /gdb/contrib/expect-read1.c | |
parent | 233d95b548ec948c4a6d01cd05c307385dd615fb (diff) | |
download | gdb-0f1b18abb46844c01accf8cd0a698ea419fb3ee6.zip gdb-0f1b18abb46844c01accf8cd0a698ea419fb3ee6.tar.gz gdb-0f1b18abb46844c01accf8cd0a698ea419fb3ee6.tar.bz2 |
gdb/
* contrib/expect-read1.c: New file.
* contrib/expect-read1.sh: New file.
Diffstat (limited to 'gdb/contrib/expect-read1.c')
-rw-r--r-- | gdb/contrib/expect-read1.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gdb/contrib/expect-read1.c b/gdb/contrib/expect-read1.c new file mode 100644 index 0000000..963c1ff --- /dev/null +++ b/gdb/contrib/expect-read1.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* RTLD_NEXT requires _GNU_SOURCE. */ +#define _GNU_SOURCE 1 +#include <dlfcn.h> +#include <unistd.h> +#include <fcntl.h> +#include <stdlib.h> + +ssize_t +read (int fd, void *buf, size_t count) +{ + static ssize_t (*read2) (int fd, void *buf, size_t count) = NULL; + + if (read2 == NULL) + { + unsetenv ("LD_PRELOAD"); + read2 = dlsym (RTLD_NEXT, "read"); + } + + if (count > 1 && isatty (fd) == 1) + count = 1; + + return read2 (fd, buf, count); +} |