CVS: winex/server protocol.def, 1.43, 1.44 registry.c, 1.14, 1.15 request.h, 1.28, 1.29 trace.c, 1.44, 1.45
[email protected] 31 Jul 2007 19:58:32 -0000
| Newsgroups | gmane.comp.emulators.winex.cvs |
|---|---|
| Message-ID | <[email protected]> |
Subject: winex/server protocol.def,1.43,1.44 registry.c,1.14,1.15 request.h,1.28,1.29 trace.c,1.44,1.45Update of /var/lib/cvsd/cvsroot/winex/server
In directory agravaine:/tmp/cvs-serv2144/server
Modified Files:
protocol.def registry.c request.h trace.c
Log Message:
Implement RegFlushKey.
Do some minor cleanups of duplicated functions.
Index: protocol.def
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/protocol.def,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- protocol.def 31 Jul 2007 19:39:35 -0000 1.43
+++ protocol.def 31 Jul 2007 19:58:30 -0000 1.44
@@ -3,7 +3,7 @@
* Wine server protocol definition
*
* Copyright (C) 2001 Alexandre Julliard
- * Copyright (C) 2004 TransGaming Technologies
+ * Copyright (C) 2004-2007 TransGaming Technologies
*
* This file is used by tools/make_requests to build the
* protocol structures in include/wine/server_protocol.h
@@ -1274,6 +1274,12 @@
@END
+/* Flush a registry key */
+@REQ(flush_key)
+ handle_t hkey; /* handle to the key */
+@END
+
+
/* Enumerate registry subkeys */
@REQ(enum_key)
handle_t hkey; /* handle to registry key */
Index: registry.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/registry.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- registry.c 31 Jul 2007 19:39:35 -0000 1.14
+++ registry.c 31 Jul 2007 19:58:30 -0000 1.15
@@ -1711,6 +1711,43 @@
}
}
+/* flush the hive containing a registry key */
+DECL_HANDLER(flush_key)
+{
+ struct key *key;
+
+ if ((key = get_hkey_obj (req->hkey, 0 /*FIXME*/)))
+ {
+ struct key *root = key;
+ int i;
+
+ /* Walk up tree to find root key */
+ while (root->parent && !(root->flags & KEY_ROOT))
+ root = root->parent;
+
+ /* Find save info for our root key, and do the save */
+ for (i = 0; i < SERVER_STATIC_VARIABLE (registry, save_branch_count); i++)
+ {
+ if (SERVER_STATIC_VARIABLE (registry, save_branch_info[i].key) == root)
+ {
+ save_branch (SERVER_STATIC_VARIABLE (registry, save_branch_info[i].key),
+ SERVER_STATIC_VARIABLE (registry, save_branch_info[i].path));
+ break;
+ }
+ }
+
+ /* Let's be pedantic */
+ if (i == SERVER_STATIC_VARIABLE (registry, save_branch_count))
+ {
+ info_msg (WITH_DEBUG, current,
+ "Unable to find root registry for saving!\n");
+ set_error (STATUS_INVALID_HANDLE);
+ }
+
+ release_object (key);
+ }
+}
+
/* enumerate registry subkeys */
DECL_HANDLER(enum_key)
{
Index: request.h
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/request.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- request.h 31 Jul 2007 18:00:22 -0000 1.28
+++ request.h 31 Jul 2007 19:58:30 -0000 1.29
@@ -231,6 +231,7 @@
DECL_HANDLER(create_key);
DECL_HANDLER(open_key);
DECL_HANDLER(delete_key);
+DECL_HANDLER(flush_key);
DECL_HANDLER(enum_key);
DECL_HANDLER(set_key_value);
DECL_HANDLER(get_key_value);
@@ -410,6 +411,7 @@
(req_handler)req_create_key,
(req_handler)req_open_key,
(req_handler)req_delete_key,
+ (req_handler)req_flush_key,
(req_handler)req_enum_key,
(req_handler)req_set_key_value,
(req_handler)req_get_key_value,
Index: trace.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/trace.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- trace.c 31 Jul 2007 19:39:35 -0000 1.44
+++ trace.c 31 Jul 2007 19:58:30 -0000 1.45
@@ -1455,6 +1455,11 @@
fprintf( stderr, " hkey=%d", req->hkey );
}
+static void dump_flush_key_request( const struct flush_key_request *req )
+{
+ fprintf( stderr, " hkey=%d", req->hkey );
+}
+
static void dump_enum_key_request( const struct enum_key_request *req )
{
fprintf( stderr, " hkey=%d,", req->hkey );
@@ -2409,6 +2414,7 @@
(dump_func)dump_create_key_request,
(dump_func)dump_open_key_request,
(dump_func)dump_delete_key_request,
+ (dump_func)dump_flush_key_request,
(dump_func)dump_enum_key_request,
(dump_func)dump_set_key_value_request,
(dump_func)dump_get_key_value_request,
@@ -2585,6 +2591,7 @@
(dump_func)dump_create_key_reply,
(dump_func)dump_open_key_reply,
(dump_func)0,
+ (dump_func)0,
(dump_func)dump_enum_key_reply,
(dump_func)0,
(dump_func)dump_get_key_value_reply,
@@ -2761,6 +2768,7 @@
"create_key",
"open_key",
"delete_key",
+ "flush_key",
"enum_key",
"set_key_value",
"get_key_value",