bash-5.0 distribution sources and documentation

This commit is contained in:
Chet Ramey
2019-01-07 09:27:52 -05:00
parent 6444760999
commit d233b485e8
528 changed files with 84836 additions and 67099 deletions
+20 -9
View File
@@ -1,6 +1,6 @@
/* input.c -- functions to perform buffered input with synchronization. */
/* Copyright (C) 1992-2009 Free Software Foundation, Inc.
/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,12 +36,9 @@
#include "bashansi.h"
#include "bashintl.h"
#include "command.h"
#include "general.h"
#include "shell.h"
#include "input.h"
#include "error.h"
#include "externs.h"
#include "quit.h"
#include "trap.h"
#if !defined (errno)
@@ -153,8 +150,6 @@ ungetc_with_restart (c, stream)
#endif
#define min(a, b) ((a) > (b) ? (b) : (a))
extern int interactive_shell;
int bash_input_fd_changed;
/* This provides a way to map from a file descriptor to the buffer
@@ -277,6 +272,8 @@ save_bash_input (fd, new_fd)
/* What's this? A stray buffer without an associated open file
descriptor? Free up the buffer and report the error. */
internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd);
if (buffers[nfd]->b_flag & B_SHAREDBUF)
buffers[nfd]->b_buffer = (char *)NULL;
free_buffered_stream (buffers[nfd]);
}
@@ -356,6 +353,12 @@ duplicate_buffered_stream (fd1, fd2)
/* If the two objects share the same b_buffer, don't free it. */
if (buffers[fd1] && buffers[fd1]->b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer)
buffers[fd2] = (BUFFERED_STREAM *)NULL;
/* If this buffer is shared with another fd, don't free the buffer */
else if (buffers[fd2]->b_flag & B_SHAREDBUF)
{
buffers[fd2]->b_buffer = (char *)NULL;
free_buffered_stream (buffers[fd2]);
}
else
free_buffered_stream (buffers[fd2]);
}
@@ -370,6 +373,9 @@ duplicate_buffered_stream (fd1, fd2)
buffers[fd2]->b_flag |= B_WASBASHINPUT;
}
if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF)))
buffers[fd2]->b_flag |= B_SHAREDBUF;
return (fd2);
}
@@ -441,6 +447,8 @@ close_buffered_stream (bp)
if (!bp)
return (0);
fd = bp->b_fd;
if (bp->b_flag & B_SHAREDBUF)
bp->b_buffer = (char *)NULL;
free_buffered_stream (bp);
return (close (fd));
}
@@ -504,7 +512,7 @@ b_fill_buffer (bp)
nr = zread (bp->b_fd, bp->b_buffer, bp->b_size);
if (nr <= 0)
{
bp->b_used = 0;
bp->b_used = bp->b_inputp = 0;
bp->b_buffer[0] = 0;
if (nr == 0)
bp->b_flag |= B_EOF;
@@ -530,7 +538,7 @@ bufstream_ungetc(c, bp)
int c;
BUFFERED_STREAM *bp;
{
if (c == EOF || bp->b_inputp == 0)
if (c == EOF || bp == 0 || bp->b_inputp == 0)
return (EOF);
bp->b_buffer[--bp->b_inputp] = c;
@@ -561,6 +569,9 @@ buffered_getchar ()
{
CHECK_TERMSIG;
if (bash_input.location.buffered_fd < 0 || buffers[bash_input.location.buffered_fd] == 0)
return EOF;
#if !defined (DJGPP)
return (bufstream_getc (buffers[bash_input.location.buffered_fd]));
#else