4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-21 00:07:36 +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 (WNetEnumResourceW, 16, mpr)
LoadDLLfunc (WNetGetLastErrorW, 20, mpr)
LoadDLLfunc (WNetGetProviderNameW, 12, mpr)
LoadDLLfunc (WNetGetResourceInformationW, 16, mpr)
LoadDLLfunc (WNetOpenEnumW, 20, mpr)

View File

@ -42,6 +42,27 @@ struct net_hdls
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
thread_netdrive (void *arg)
{
@ -61,7 +82,10 @@ thread_netdrive (void *arg)
ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider,
(size = 256, &size));
if (ndi->ret != NO_ERROR)
break;
{
wnet_dbg_out ("WNetGetProviderNameW", ndi->ret);
break;
}
memset (nro, 0, sizeof *nro);
nro->dwScope = RESOURCE_GLOBALNET;
nro->dwType = RESOURCETYPE_ANY;
@ -72,7 +96,10 @@ thread_netdrive (void *arg)
ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_ALL, nro, &nh->net);
if (ndi->ret != NO_ERROR)
break;
{
wnet_dbg_out ("WNetOpenEnumW", ndi->ret);
break;
}
while ((ndi->ret = WNetEnumResourceW (nh->net, (cnt = 1, &cnt), nro,
(size = NT_MAX_PATH, &size)))
== NO_ERROR)
@ -89,13 +116,19 @@ thread_netdrive (void *arg)
ndi->ret = WNetGetProviderNameW (WNNC_NET_LANMAN, provider,
(size = 256, &size));
if (ndi->ret != NO_ERROR)
break;
{
wnet_dbg_out ("WNetGetProviderNameW", ndi->ret);
break;
}
((LPNETRESOURCEW) ndi->in)->lpProvider = provider;
ndi->ret = WNetGetResourceInformationW ((LPNETRESOURCEW) ndi->in, nro,
(size = NT_MAX_PATH, &size),
&dummy);
if (ndi->ret != NO_ERROR)
break;
{
wnet_dbg_out ("WNetGetResourceInformationW", ndi->ret);
break;
}
ndi->ret = WNetOpenEnumW (RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_ALL, nro, &nh->dom);
break;