Added beginnings of server-side file handling. Added -debugmsg +server support. Better server request dumping for varargs requests.
diff --git a/server/request.c b/server/request.c index 6ce5b35..4c14c48 100644 --- a/server/request.c +++ b/server/request.c
@@ -152,6 +152,14 @@ send_reply( current, -1, 0 ); } +/* set the debug level */ +DECL_HANDLER(set_debug) +{ + debug_level = req->level; + CLEAR_ERROR(); + send_reply( current, -1, 0 ); +} + /* terminate a process */ DECL_HANDLER(terminate_process) { @@ -372,3 +380,38 @@ send_reply( current, -1, 1, &reply, sizeof(reply) ); } +/* create a file */ +DECL_HANDLER(create_file) +{ + struct create_file_reply reply = { -1 }; + struct object *obj; + int new_fd; + + if ((new_fd = dup(fd)) == -1) + { + SET_ERROR( ERROR_TOO_MANY_OPEN_FILES ); + goto done; + } + if ((obj = create_file( new_fd )) != NULL) + { + reply.handle = alloc_handle( current->process, obj, req->access, req->inherit ); + release_object( obj ); + } + done: + send_reply( current, -1, 1, &reply, sizeof(reply) ); +} + +/* get a Unix handle to a file */ +DECL_HANDLER(get_unix_handle) +{ + int handle = file_get_unix_handle( req->handle, req->access ); + send_reply( current, handle, 0 ); +} + +/* get a file information */ +DECL_HANDLER(get_file_info) +{ + struct get_file_info_reply reply; + get_file_info( req->handle, &reply ); + send_reply( current, -1, 1, &reply, sizeof(reply) ); +}