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

30
test.c
View File

@@ -274,7 +274,7 @@ term ()
value = binary_operator ();
/* Might be a switch type argument */
else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0')
{
if (test_unop (argv[pos]))
value = unary_operator ();
@@ -344,10 +344,10 @@ arithcomp (s, t, op, flags)
if (flags & TEST_ARITHEXP)
{
l = evalexp (s, &expok);
l = evalexp (s, 0, &expok);
if (expok == 0)
return (FALSE); /* should probably longjmp here */
r = evalexp (t, &expok);
r = evalexp (t, 0, &expok);
if (expok == 0)
return (FALSE); /* ditto */
}
@@ -622,15 +622,19 @@ unary_test (op, arg)
return (minus_o_option_value (arg) == 1);
case 'v':
v = find_variable (arg);
#if defined (ARRAY_VARS)
if (v == 0 && valid_array_reference (arg, 0))
if (valid_array_reference (arg, 0))
{
char *t;
t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0);
return (t ? TRUE : FALSE);
int rtype, ret;
t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0);
ret = t ? TRUE : FALSE;
if (rtype > 0) /* subscript is * or @ */
free (t);
return ret;
}
else if (v && invisible_p (v) == 0 && array_p (v))
v = find_variable (arg);
if (v && invisible_p (v) == 0 && array_p (v))
{
char *t;
/* [[ -v foo ]] == [[ -v foo[0] ]] */
@@ -643,6 +647,8 @@ unary_test (op, arg)
t = assoc_reference (assoc_cell (v), "0");
return (t ? TRUE : FALSE);
}
#else
v = find_variable (arg);
#endif
return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
@@ -670,7 +676,7 @@ test_binop (op)
else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!'))
return (1);
#endif
else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0')
else if (op[0] != '-' || op[1] == '\0' || op[2] == '\0' || op[3] != '\0')
return (0);
else
{
@@ -714,7 +720,7 @@ int
test_unop (op)
char *op;
{
if (op[0] != '-' || op[2] != 0)
if (op[0] != '-' || (op[1] && op[2] != 0))
return (0);
switch (op[1])
@@ -736,7 +742,7 @@ two_arguments ()
{
if (argv[pos][0] == '!' && argv[pos][1] == '\0')
return (argv[pos + 1][0] == '\0');
else if (argv[pos][0] == '-' && argv[pos][2] == '\0')
else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0')
{
if (test_unop (argv[pos]))
return (unary_operator ());
@@ -749,7 +755,7 @@ two_arguments ()
return (0);
}
#define ANDOR(s) (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o'))
#define ANDOR(s) (s[0] == '-' && (s[1] == 'a' || s[1] == 'o') && s[2] == 0)
/* This could be augmented to handle `-t' as equivalent to `-t 1', but
POSIX requires that `-t' be given an argument. */