Handle set_file_time requests changing only one of access/mod time.

diff --git a/server/file.c b/server/file.c
index 1ade096..3c5e816 100644
--- a/server/file.c
+++ b/server/file.c
@@ -411,17 +411,22 @@
 
     if (!(file = get_file_obj( current->process, handle, GENERIC_WRITE )))
         return 0;
+    if (!access_time || !write_time)
+    {
+        struct stat st;
+        if (stat( file->name, &st ) == -1) goto error;
+        if (!access_time) access_time = st.st_atime;
+        if (!write_time) write_time = st.st_mtime;
+    }
     utimbuf.actime  = access_time;
     utimbuf.modtime = write_time;
-    if (utime( file->name, &utimbuf ) == -1)
-    {
-        file_set_error();
-        release_object( file );
-        return 0;
-    }
+    if (utime( file->name, &utimbuf ) == -1) goto error;
     release_object( file );
     return 1;
-    
+ error:
+    file_set_error();
+    release_object( file );
+    return 0;
 }
 
 int file_lock( struct file *file, int offset_high, int offset_low,