diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2022-02-21 14:36:37 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2022-02-22 13:33:00 +0100 |
commit | 4ec08891a005c040da5bf7c38ae44f932d29bd77 (patch) | |
tree | 50f251907c1f41a044d13010ed58641f6de8d80c /winsup/cygwin/dtable.cc | |
parent | 8bb6821c7ac5d9e281f92641dcc321ab1239c140 (diff) | |
download | newlib-4ec08891a005c040da5bf7c38ae44f932d29bd77.zip newlib-4ec08891a005c040da5bf7c38ae44f932d29bd77.tar.gz newlib-4ec08891a005c040da5bf7c38ae44f932d29bd77.tar.bz2 |
Cygwin: Implicitly support the /dev/fd symlink and friends
Bash has a very convenient feature that is called process substitution
(e.g. `diff -u <(seq 0 10) <(seq 1 11)`). To make this work, Bash
requires the `/dev/fd` symlink to exist, and Cygwin therefore creates
this symlink (together with the `stdin`, `stdout` and `stderr` ones)
upon start-up.
This strategy is incompatible with the idea of providing a subset of
Cygwin in a `.zip` file (because there is no standard way to represent
symlinks in `.zip` files, and besides, older Windows versions would
potentially lack support for them anyway).
That type of `.zip` file is what Git for Windows wants to use, though,
bundling a minimal subset for third-party applications in MinGit (see
https://github.com/git-for-windows/git/wiki/MinGit for details).
Let's side-step this problem completely by creating those symlinks
implicitly, similar to the way `/dev/` is populated with special
devices.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r-- | winsup/cygwin/dtable.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 44d6e11..474c470 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -582,6 +582,9 @@ fh_alloc (path_conv& pc) case FH_DEV: fh = cnew (fhandler_dev); break; + case FH_DEV_FD: + fh = cnew (fhandler_dev_fd); + break; case FH_CYGDRIVE: fh = cnew (fhandler_cygdrive); break; |