From e02e0a57f6f05abaa8cc5eea6a43539f3f54c50b Mon Sep 17 00:00:00 2001
From: Mike Kaplinskiy <mike.kaplinskiy@gmail.com>
Date: Sun, 12 Jul 2009 15:42:49 -0400
Subject: ntdll: add wine_server_clear_cache to clear a cached fd

---
 dlls/ntdll/ntdll.spec |    1 +
 dlls/ntdll/server.c   |   17 +++++++++++++++++
 include/wine/server.h |    1 +
 3 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 03686b2..c86ea0f 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1381,6 +1381,7 @@
 @ cdecl wine_server_fd_to_handle(long long long ptr)
 @ cdecl wine_server_handle_to_fd(long long ptr ptr)
 @ cdecl wine_server_release_fd(long long)
+@ cdecl wine_server_clear_cache(long)
 @ cdecl wine_server_send_fd(long)
 @ cdecl __wine_make_process_system()
 
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 1eea402..5f52672 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -664,6 +664,23 @@ void CDECL wine_server_release_fd( HANDLE handle, int unix_fd )
 
 
 /***********************************************************************
+ *           wine_server_clear_cache   (NTDLL.@)
+ *
+ * Remove the cached fd of the handle
+ *
+ * PARAMS
+ *     handle  [I] Wine file handle.
+ *
+ * RETURNS
+ *     nothing
+ */
+void CDECL wine_server_clear_cache( HANDLE handle )
+{
+    server_remove_fd_from_cache( handle );
+}
+
+
+/***********************************************************************
  *           server_pipe
  *
  * Create a pipe for communicating with the server.
diff --git a/include/wine/server.h b/include/wine/server.h
index d573d1f..3af515a 100644
--- a/include/wine/server.h
+++ b/include/wine/server.h
@@ -54,6 +54,7 @@ extern void CDECL wine_server_send_fd( int fd );
 extern int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int attributes, HANDLE *handle );
 extern int CDECL wine_server_handle_to_fd( HANDLE handle, unsigned int access, int *unix_fd, unsigned int *options );
 extern void CDECL wine_server_release_fd( HANDLE handle, int unix_fd );
+extern void CDECL wine_server_clear_cache( HANDLE handle );
 
 /* do a server call and set the last error code */
 static inline unsigned int wine_server_call_err( void *req_ptr )
-- 
1.6.3.3

