mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-04 15:51:15 -03:00
Correctly handle "self fd redirections"
This adds a test for the obscure case where an fd is redirected to itself. This is tricky because the dup2 will not clear the CLO_EXEC bit. So do it manually; also posix_spawn can't be used in this case.
This commit is contained in:
@@ -14,11 +14,66 @@ $helper print_fds 0>&- 2>&-
|
||||
false | $helper print_fds 0>&-
|
||||
# CHECK: 0 1 2
|
||||
|
||||
$helper print_fds <(status current-filename)
|
||||
$helper print_fds </dev/null
|
||||
# CHECK: 0 1 2
|
||||
|
||||
$helper print_fds <(status current-filename)
|
||||
$helper print_fds </dev/null
|
||||
# CHECK: 0 1 2
|
||||
|
||||
$helper print_fds 3<(status current-filename)
|
||||
$helper print_fds 3</dev/null
|
||||
# CHECK: 0 1 2 3
|
||||
|
||||
# This attempts to trip a case where the file opened in fish
|
||||
# has the same fd as the redirection. In this case, the dup2
|
||||
# does not clear the CLO_EXEC bit.
|
||||
|
||||
$helper print_fds 4</dev/null
|
||||
# CHECK: 0 1 2 4
|
||||
|
||||
$helper print_fds 5</dev/null
|
||||
# CHECK: 0 1 2 5
|
||||
|
||||
$helper print_fds 6</dev/null
|
||||
# CHECK: 0 1 2 6
|
||||
|
||||
$helper print_fds 7</dev/null
|
||||
# CHECK: 0 1 2 7
|
||||
|
||||
$helper print_fds 8</dev/null
|
||||
# CHECK: 0 1 2 8
|
||||
|
||||
$helper print_fds 9</dev/null
|
||||
# CHECK: 0 1 2 9
|
||||
|
||||
$helper print_fds 10</dev/null
|
||||
# CHECK: 0 1 2 10
|
||||
|
||||
$helper print_fds 11</dev/null
|
||||
# CHECK: 0 1 2 11
|
||||
|
||||
$helper print_fds 12</dev/null
|
||||
# CHECK: 0 1 2 12
|
||||
|
||||
$helper print_fds 13</dev/null
|
||||
# CHECK: 0 1 2 13
|
||||
|
||||
$helper print_fds 14</dev/null
|
||||
# CHECK: 0 1 2 14
|
||||
|
||||
$helper print_fds 15</dev/null
|
||||
# CHECK: 0 1 2 15
|
||||
|
||||
$helper print_fds 16</dev/null
|
||||
# CHECK: 0 1 2 16
|
||||
|
||||
$helper print_fds 17</dev/null
|
||||
# CHECK: 0 1 2 17
|
||||
|
||||
$helper print_fds 18</dev/null
|
||||
# CHECK: 0 1 2 18
|
||||
|
||||
$helper print_fds 19</dev/null
|
||||
# CHECK: 0 1 2 19
|
||||
|
||||
$helper print_fds 20</dev/null
|
||||
# CHECK: 0 1 2 20
|
||||
|
||||
Reference in New Issue
Block a user