Module: wine Branch: master Commit: 8f200ea9f8d237ffb33540df428cfa2e1b985dde URL: http://source.winehq.org/git/wine.git/?a=commit;h=8f200ea9f8d237ffb33540df42...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Nov 13 15:36:01 2013 +0100
netapi32: Add support for remote computers in NetShareDel.
---
dlls/netapi32/netapi32.c | 36 +++++++++++++++++++++++++++++++++++- 1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c index 4223379..68d8872 100644 --- a/dlls/netapi32/netapi32.c +++ b/dlls/netapi32/netapi32.c @@ -82,6 +82,7 @@ static NET_API_STATUS (*pNetApiBufferAllocate)(unsigned int, void **); static NET_API_STATUS (*pNetApiBufferFree)(void *); static NET_API_STATUS (*pNetServerGetInfo)(const char *, unsigned int, unsigned char **); static NET_API_STATUS (*pNetShareAdd)(const char *, unsigned int, unsigned char *, unsigned int *); +static NET_API_STATUS (*pNetShareDel)(const char *, const char *, unsigned int); static NET_API_STATUS (*pNetWkstaGetInfo)(const char *, unsigned int, unsigned char **);
static BOOL libnetapi_init(void) @@ -113,6 +114,7 @@ static BOOL libnetapi_init(void) LOAD_FUNCPTR(NetApiBufferFree) LOAD_FUNCPTR(NetServerGetInfo) LOAD_FUNCPTR(NetShareAdd) + LOAD_FUNCPTR(NetShareDel) LOAD_FUNCPTR(NetWkstaGetInfo) #undef LOAD_FUNCPTR
@@ -312,6 +314,23 @@ static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDW return status; }
+static NET_API_STATUS WINAPI share_del( LMSTR servername, LMSTR netname, DWORD reserved ) +{ + char *server = NULL, *share; + NET_API_STATUS status; + + if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY; + if (!(share = strdup_unixcp( netname ))) + { + HeapFree( GetProcessHeap(), 0, server ); + return ERROR_OUTOFMEMORY; + } + status = pNetShareDel( server, share, reserved ); + HeapFree( GetProcessHeap(), 0, server ); + HeapFree( GetProcessHeap(), 0, share ); + return status; +} + struct wksta_info_100 { unsigned int wki100_platform_id; @@ -400,6 +419,11 @@ static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDW ERR( "\n" ); return ERROR_NOT_SUPPORTED; } +NET_API_STATUS WINAPI share_del( LMSTR servername, LMSTR netname, DWORD reserved ) +{ + ERR( "\n" ); + return ERROR_NOT_SUPPORTED; +} static NET_API_STATUS wksta_getinfo( LMSTR servername, DWORD level, LPBYTE *bufptr ) { ERR( "\n" ); @@ -744,7 +768,17 @@ NET_API_STATUS WINAPI NetShareEnum( LMSTR servername, DWORD level, LPBYTE* bufpt */ NET_API_STATUS WINAPI NetShareDel(LMSTR servername, LMSTR netname, DWORD reserved) { - FIXME("Stub (%s %s %d)\n", debugstr_w(servername), debugstr_w(netname), reserved); + BOOL local = NETAPI_IsLocalComputer( servername ); + + TRACE("%s %s %d\n", debugstr_w(servername), debugstr_w(netname), reserved); + + if (!local) + { + if (libnetapi_init()) return share_del( servername, netname, reserved ); + FIXME( "remote computers not supported\n" ); + } + + FIXME("%s %s %d\n", debugstr_w(servername), debugstr_w(netname), reserved); return NERR_Success; }