Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
8eca1da4
Commit
8eca1da4
authored
Mar 01, 2010
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Make the standard registry key creation non-recursive.
parent
22de1f43
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
22 deletions
+19
-22
registry.c
server/registry.c
+19
-22
No files found.
server/registry.c
View file @
8eca1da4
...
...
@@ -656,9 +656,8 @@ static struct key *create_key( struct key *key, const struct unicode_str *name,
const
struct
unicode_str
*
class
,
unsigned
int
options
,
unsigned
int
attributes
,
int
*
created
)
{
struct
key
*
base
;
int
index
;
struct
unicode_str
token
;
struct
unicode_str
token
,
next
;
if
(
key
->
flags
&
KEY_DELETED
)
/* we cannot create a subkey under a deleted key */
{
...
...
@@ -676,16 +675,14 @@ static struct key *create_key( struct key *key, const struct unicode_str *name,
key
=
subkey
;
get_path_token
(
name
,
&
token
);
if
(
!
token
.
len
)
break
;
if
(
!
(
subkey
=
follow_symlink
(
sub
key
,
0
)))
if
(
!
(
key
=
follow_symlink
(
key
,
0
)))
{
set_error
(
STATUS_OBJECT_NAME_NOT_FOUND
);
return
NULL
;
}
}
/* create the remaining part */
if
(
!
token
.
len
)
if
(
!
token
.
len
)
/* the key already exists */
{
if
(
options
&
REG_OPTION_CREATE_LINK
)
{
...
...
@@ -697,8 +694,20 @@ static struct key *create_key( struct key *key, const struct unicode_str *name,
set_error
(
STATUS_OBJECT_NAME_NOT_FOUND
);
return
NULL
;
}
goto
done
;
if
(
debug_level
>
1
)
dump_operation
(
key
,
NULL
,
"Open"
);
grab_object
(
key
);
return
key
;
}
/* token must be the last path component at this point */
next
=
token
;
get_path_token
(
name
,
&
next
);
if
(
next
.
len
)
{
set_error
(
STATUS_OBJECT_NAME_NOT_FOUND
);
return
NULL
;
}
if
((
key
->
flags
&
KEY_VOLATILE
)
&&
!
(
options
&
REG_OPTION_VOLATILE
))
{
set_error
(
STATUS_CHILD_MUST_BE_VOLATILE
);
...
...
@@ -707,23 +716,11 @@ static struct key *create_key( struct key *key, const struct unicode_str *name,
*
created
=
1
;
make_dirty
(
key
);
if
(
!
(
key
=
alloc_subkey
(
key
,
&
token
,
index
,
current_time
)))
return
NULL
;
base
=
key
;
for
(;;)
{
if
(
options
&
REG_OPTION_VOLATILE
)
key
->
flags
|=
KEY_VOLATILE
;
else
key
->
flags
|=
KEY_DIRTY
;
get_path_token
(
name
,
&
token
);
if
(
!
token
.
len
)
break
;
/* we know the index is always 0 in a new key */
if
(
!
(
key
=
alloc_subkey
(
key
,
&
token
,
0
,
current_time
)))
{
free_subkey
(
base
,
index
);
return
NULL
;
}
}
if
(
options
&
REG_OPTION_CREATE_LINK
)
key
->
flags
|=
KEY_SYMLINK
;
if
(
options
&
REG_OPTION_VOLATILE
)
key
->
flags
|=
KEY_VOLATILE
;
else
key
->
flags
|=
KEY_DIRTY
;
done:
if
(
debug_level
>
1
)
dump_operation
(
key
,
NULL
,
"Create"
);
if
(
class
&&
class
->
len
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment