Added set_win32_error() for error codes that don't have an NT status
equivalent.

diff --git a/server/file.c b/server/file.c
index 5ed8d4c..2a60ccf 100644
--- a/server/file.c
+++ b/server/file.c
@@ -454,16 +454,16 @@
     case EROFS:     set_error( STATUS_MEDIA_WRITE_PROTECTED ); break;
     case EBUSY:     set_error( STATUS_FILE_LOCK_CONFLICT ); break;
     case ENOENT:    set_error( STATUS_NO_SUCH_FILE ); break;
-    case EISDIR:    set_error( 0xc0010000 | ERROR_CANNOT_MAKE /* FIXME */ ); break;
+    case EISDIR:    set_win32_error( ERROR_CANNOT_MAKE ); break;
     case ENFILE:
     case EMFILE:    set_error( STATUS_NO_MORE_FILES ); break;
     case EEXIST:    set_error( STATUS_OBJECT_NAME_COLLISION ); break;
     case EINVAL:    set_error( STATUS_INVALID_PARAMETER ); break;
-    case ESPIPE:    set_error( 0xc0010000 | ERROR_SEEK /* FIXME */ ); break;
+    case ESPIPE:    set_win32_error( ERROR_SEEK ); break;
     case ENOTEMPTY: set_error( STATUS_DIRECTORY_NOT_EMPTY ); break;
     case EIO:       set_error( STATUS_ACCESS_VIOLATION ); break;
     case EOVERFLOW: set_error( STATUS_INVALID_PARAMETER ); break;
-    default:        perror("file_set_error"); set_error( ERROR_UNKNOWN /* FIXME */ ); break;
+    default:        perror("file_set_error"); set_win32_error( ERROR_UNKNOWN ); break;
     }
 }
 
diff --git a/server/thread.h b/server/thread.h
index 9874076..0bb1f7c 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -144,7 +144,8 @@
 
 static inline unsigned int get_error(void)       { return current ? current->error : global_error; }
 static inline void set_error( unsigned int err ) { global_error = err; if (current) current->error = err; }
-static inline void clear_error(void)    { set_error(0); }
+static inline void clear_error(void)             { set_error(0); }
+static inline void set_win32_error( unsigned int err ) { set_error( 0xc0010000 | err ); }
 
 static inline thread_id_t get_thread_id( struct thread *thread ) { return thread->id; }