builtin_read: Remove --all-lines

This was unused and needed to be warned about in the docs. Remove it
so nobody stumbles over it.

Fixes #5332.
This commit is contained in:
Fabian Homborg
2018-11-20 16:56:15 +01:00
parent fc9d8eec72
commit c729a97c43
2 changed files with 2 additions and 25 deletions

View File

@@ -45,8 +45,6 @@ The following options are available:
- `-L` or `--line` reads each line into successive variables, and stops after each variable has been filled. This cannot be combined with the `--delimiter` option.
- `-A` or `--all-lines` splits input into the given variables, separated by line breaks. The entire input stream is consumed and interactive mode is disabled. Probably only useful with `-a` to read all lines into a single array variable. Where possible, ` | while read --line` should be preferred over ` | read --all-lines` as the latter will block until the input stream has been consumed, leading to latency and decreased responsiveness.
Without the `--line` option, `read` reads a single line of input from standard input, breaks it into tokens, and then assigns one token to each variable specified in `VARIABLES`. If there are more tokens than variables, the complete remainder is assigned to the last variable.
If the `--delimiter` argument is not given, the variable `IFS` is used as a list of characters to split on. Relying on the use of `IFS` is deprecated and this behaviour will be removed in future versions. The default value of `IFS` contains space, tab and newline characters. As a special case, if `IFS` is set to the empty string, each character of the input is considered a separate token.

View File

@@ -50,14 +50,12 @@ struct read_cmd_opts_t {
bool split_null = false;
bool to_stdout = false;
int nchars = 0;
bool all_lines = false;
bool one_line = false;
};
static const wchar_t *const short_options = L":Aac:d:ghiLlm:n:p:suxzP:UR:LB";
static const wchar_t *const short_options = L":ac:d:ghiLlm:n:p:suxzP:UR:LB";
static const struct woption long_options[] = {
{L"array", no_argument, NULL, 'a'},
{L"all-lines", no_argument, NULL, 'A'},
{L"command", required_argument, NULL, 'c'},
{L"delimiter", required_argument, NULL, 'd'},
{L"export", no_argument, NULL, 'x'},
@@ -89,10 +87,6 @@ static int parse_cmd_opts(read_cmd_opts_t &opts, int *optind, //!OCLINT(high nc
opts.array = true;
break;
}
case L'A': {
opts.all_lines = true;
break;
}
case L'c': {
opts.commandline = w.woptarg;
break;
@@ -361,18 +355,10 @@ static int validate_read_args(const wchar_t *cmd, read_cmd_opts_t &opts, int arg
return STATUS_INVALID_ARGS;
}
if (opts.have_delimiter && opts.all_lines) {
streams.err.append_format(_(L"%ls: Options %ls and %ls cannot be used together\n"), cmd, L"--delimiter", L"--all-lines");
return STATUS_INVALID_ARGS;
}
if (opts.have_delimiter && opts.one_line) {
streams.err.append_format(_(L"%ls: Options %ls and %ls cannot be used together\n"), cmd, L"--delimiter", L"--line");
return STATUS_INVALID_ARGS;
}
if (opts.one_line && opts.all_lines) {
streams.err.append_format(_(L"%ls: Options %ls and %ls cannot be used together\n"), cmd, L"--all-lines", L"--line");
return STATUS_INVALID_ARGS;
}
if (opts.one_line && opts.split_null) {
streams.err.append_format(_(L"%ls: Options %ls and %ls cannot be used together\n"), cmd, L"-z", L"--line");
return STATUS_INVALID_ARGS;
@@ -454,14 +440,7 @@ int builtin_read(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
retval = validate_read_args(cmd, opts, argc, argv, parser, streams);
if (retval != STATUS_CMD_OK) return retval;
if (opts.all_lines) {
// --all-lines is the same as read -d \n -z
opts.have_delimiter = true;
opts.delimiter = L"\n";
opts.split_null = true;
opts.shell = false;
}
else if (opts.one_line) {
if (opts.one_line) {
// --line is the same as read -d \n repeated N times
opts.have_delimiter = true;
opts.delimiter = L"\n";