Module Name: src Committed By: rillig Date: Sat Mar 15 15:36:12 UTC 2025
Modified Files: src/bin/expr: expr.y src/tests/bin/expr: t_expr.sh Log Message: expr: ensure that the result of '|' is never empty Required by POSIX since at least 2004. To generate a diff of this commit: cvs rdiff -u -r1.52 -r1.53 src/bin/expr/expr.y cvs rdiff -u -r1.13 -r1.14 src/tests/bin/expr/t_expr.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/bin/expr/expr.y diff -u src/bin/expr/expr.y:1.52 src/bin/expr/expr.y:1.53 --- src/bin/expr/expr.y:1.52 Sat Mar 15 14:33:39 2025 +++ src/bin/expr/expr.y Sat Mar 15 15:36:12 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: expr.y,v 1.52 2025/03/15 14:33:39 rillig Exp $ */ +/* $NetBSD: expr.y,v 1.53 2025/03/15 15:36:12 rillig Exp $ */ /*- * Copyright (c) 2000, 2025 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ %{ #include <sys/cdefs.h> -__RCSID("$NetBSD: expr.y,v 1.52 2025/03/15 14:33:39 rillig Exp $"); +__RCSID("$NetBSD: expr.y,v 1.53 2025/03/15 15:36:12 rillig Exp $"); #include <sys/types.h> @@ -86,7 +86,7 @@ expr: item if ($$) skip_level++; } expr { - $$ = $3 ? $1 : $4; + $$ = $3 ? $1 : $4[0] != '\0' ? $4 : "0"; if ($3) skip_level--; } Index: src/tests/bin/expr/t_expr.sh diff -u src/tests/bin/expr/t_expr.sh:1.13 src/tests/bin/expr/t_expr.sh:1.14 --- src/tests/bin/expr/t_expr.sh:1.13 Sat Mar 15 15:33:00 2025 +++ src/tests/bin/expr/t_expr.sh Sat Mar 15 15:36:12 2025 @@ -1,4 +1,4 @@ -# $NetBSD: t_expr.sh,v 1.13 2025/03/15 15:33:00 rillig Exp $ +# $NetBSD: t_expr.sh,v 1.14 2025/03/15 15:36:12 rillig Exp $ # # Copyright (c) 2007 The NetBSD Foundation, Inc. # All rights reserved. @@ -167,8 +167,7 @@ basic_functional_body() { test_expr 1111 \| 00 '1111' test_expr 0000 \| 2222 '2222' test_expr 0000 \| 00 '00' - # FIXME: POSIX says the result must be zero. - test_expr 0000 \| '' '' + test_expr 0000 \| '' '0' test_finish }