https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=01bcd7d29ef7e784088bcea9f851709f0b2ffdf1
commit 01bcd7d29ef7e784088bcea9f851709f0b2ffdf1 Author: Corinna Vinschen <cori...@vinschen.de> AuthorDate: Mon Feb 24 16:42:01 2025 +0100 Commit: Corinna Vinschen <cori...@vinschen.de> CommitDate: Mon Feb 24 16:42:01 2025 +0100 Cygwin: fhandler_netdrive: skip enumerating WebDAV shares So far there's no known way to enumerate connected WebDAV resources. WNetGetResourceInformationW/WNetOpenEnumW both return ERROR_BAD_NET_NAME. Windows Explorer also shows an error dialog when trying to open a Nextcloud instance to see the shares. However, `net use' enumerates the connected cloud shares, so there must be a way to do this. For the time being, we just don't even try to enumerate WebDAV shares and return an empty list. Signed-off-by: Corinna Vinschen <cori...@vinschen.de> Diff: --- winsup/cygwin/fhandler/netdrive.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/netdrive.cc b/winsup/cygwin/fhandler/netdrive.cc index bac62c9b1879..5d7621649a26 100644 --- a/winsup/cygwin/fhandler/netdrive.cc +++ b/winsup/cygwin/fhandler/netdrive.cc @@ -409,13 +409,25 @@ create_thread_and_wait (DIR *dir) } /* Eventually, try TERMSRV/P9/SMB via WNet for share enumeration, - depending on "server" name. */ + depending on "server" name. + + TODO: There's no known way yet to enumerate connected WebDAV resources. + Whatever I try, WNetGetResourceInformationW or WNetOpenEnumW return + ERROR_BAD_NET_NAME (67). Therefore, short-circuit WebDAV here for + the time being. */ if (!strcmp (dir->__d_dirname + 2, TERMSRV_DIR)) ndi.provider = WNNC_NET_TERMSRV; else if (!strcmp (dir->__d_dirname + 2, PLAN9_DIR)) ndi.provider = WNNC_NET_9P; + else if (strchr (dir->__d_dirname + 2, '@') != NULL) + { + /* ndi.provider = WNNC_NET_DAV; */ + ndi.err = 0; + goto out; + } else ndi.provider = WNNC_NET_SMB; + ndi.sem = CreateSemaphore (&sec_none_nih, 0, 2, NULL); thr = new cygthread (thread_netdrive_wnet, &ndi, "netdrive_smb"); if (thr->detach (ndi.sem))