4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-22 00:38:06 +08:00

Cygwin: fhandler_netdrive: improve debug output

Add debug output for errors when calling WNet functions.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2021-11-19 12:19:31 +01:00
parent a92d69d743
commit f03222f242
2 changed files with 38 additions and 4 deletions

View File

@ -630,6 +630,7 @@ LoadDLLfunc (LdapMapErrorToWin32, 0, wldap32)
LoadDLLfunc (WNetCloseEnum, 4, mpr) LoadDLLfunc (WNetCloseEnum, 4, mpr)
LoadDLLfunc (WNetEnumResourceW, 16, mpr) LoadDLLfunc (WNetEnumResourceW, 16, mpr)
LoadDLLfunc (WNetGetLastErrorW, 20, mpr)
LoadDLLfunc (WNetGetProviderNameW, 12, mpr) LoadDLLfunc (WNetGetProviderNameW, 12, mpr)
LoadDLLfunc (WNetGetResourceInformationW, 16, mpr) LoadDLLfunc (WNetGetResourceInformationW, 16, mpr)
LoadDLLfunc (WNetOpenEnumW, 20, mpr) LoadDLLfunc (WNetOpenEnumW, 20, mpr)

View File

@ -42,6 +42,27 @@ struct net_hdls
HANDLE dom; HANDLE dom;
}; };
static void
wnet_dbg_out (const char *func, DWORD ndi_ret)
{
DWORD gle_ret;
DWORD error;
WCHAR errorbuf[MAX_PATH];
WCHAR namebuf[MAX_PATH];
if (ndi_ret != ERROR_EXTENDED_ERROR)
{
debug_printf ("%s failed: %u", func, ndi_ret);
return;
}
gle_ret = WNetGetLastErrorW (&error, errorbuf, MAX_PATH, namebuf, MAX_PATH);
if (gle_ret == NO_ERROR)
debug_printf ("%s failed: %u --> %u from '%W': '%W'",
func, ndi_ret, error, namebuf, errorbuf);
else
debug_printf ("WNetGetLastError failed: %u", gle_ret);
}
static DWORD WINAPI static DWORD WINAPI
thread_netdrive (void *arg) thread_netdrive (void *arg)
{ {
@ -61,7 +82,10 @@ thread_netdrive (void *arg)
ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider, ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider,
(size = 256, &size)); (size = 256, &size));
if (ndi->ret != NO_ERROR) if (ndi->ret != NO_ERROR)
break; {
wnet_dbg_out ("WNetGetProviderNameW", ndi->ret);
break;
}
memset (nro, 0, sizeof *nro); memset (nro, 0, sizeof *nro);
nro->dwScope = RESOURCE_GLOBALNET; nro->dwScope = RESOURCE_GLOBALNET;
nro->dwType = RESOURCETYPE_ANY; nro->dwType = RESOURCETYPE_ANY;
@ -72,7 +96,10 @@ thread_netdrive (void *arg)
ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK, ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_ALL, nro, &nh->net); RESOURCEUSAGE_ALL, nro, &nh->net);
if (ndi->ret != NO_ERROR) if (ndi->ret != NO_ERROR)
break; {
wnet_dbg_out ("WNetOpenEnumW", ndi->ret);
break;
}
while ((ndi->ret = WNetEnumResourceW (nh->net, (cnt = 1, &cnt), nro, while ((ndi->ret = WNetEnumResourceW (nh->net, (cnt = 1, &cnt), nro,
(size = NT_MAX_PATH, &size))) (size = NT_MAX_PATH, &size)))
== NO_ERROR) == NO_ERROR)
@ -89,13 +116,19 @@ thread_netdrive (void *arg)
ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider, ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider,
(size = 256, &size)); (size = 256, &size));
if (ndi->ret != NO_ERROR) if (ndi->ret != NO_ERROR)
break; {
wnet_dbg_out ("WNetGetProviderNameW", ndi->ret);
break;
}
((LPNETRESOURCEW) ndi->in)->lpProvider = provider; ((LPNETRESOURCEW) ndi->in)->lpProvider = provider;
ndi->ret = WNetGetResourceInformationW ((LPNETRESOURCEW) ndi->in, nro, ndi->ret = WNetGetResourceInformationW ((LPNETRESOURCEW) ndi->in, nro,
(size = NT_MAX_PATH, &size), (size = NT_MAX_PATH, &size),
&dummy); &dummy);
if (ndi->ret != NO_ERROR) if (ndi->ret != NO_ERROR)
break; {
wnet_dbg_out ("WNetGetResourceInformationW", ndi->ret);
break;
}
ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK, ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_ALL, nro, &nh->dom); RESOURCEUSAGE_ALL, nro, &nh->dom);
break; break;