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
0c0d839a
Commit
0c0d839a
authored
Apr 25, 2016
by
Hugh McMaster
Committed by
Alexandre Julliard
Apr 25, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
reg: Add /v and /ve support to reg query.
Signed-off-by:
Hugh McMaster
<
hugh.mcmaster@outlook.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
c81b0494
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
4 deletions
+52
-4
reg.c
programs/reg/reg.c
+52
-4
No files found.
programs/reg/reg.c
View file @
0c0d839a
...
...
@@ -655,6 +655,49 @@ static WCHAR *build_subkey_path(WCHAR *path, DWORD path_len, WCHAR *subkey_name,
return
subkey_path
;
}
static
int
query_value
(
HKEY
key
,
WCHAR
*
value_name
,
WCHAR
*
path
)
{
LONG
rc
;
DWORD
max_data_bytes
,
data_size
;
DWORD
type
;
BYTE
*
data
;
WCHAR
fmt
[]
=
{
'%'
,
'1'
,
'\n'
,
0
};
WCHAR
newlineW
[]
=
{
'\n'
,
0
};
rc
=
RegQueryInfoKeyW
(
key
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
&
max_data_bytes
,
NULL
,
NULL
);
if
(
rc
)
{
ERR
(
"RegQueryInfoKey failed: %d
\n
"
,
rc
);
return
1
;
}
data
=
HeapAlloc
(
GetProcessHeap
(),
0
,
max_data_bytes
);
if
(
!
data
)
{
ERR
(
"Failed to allocate memory for data
\n
"
);
return
1
;
}
data_size
=
max_data_bytes
;
rc
=
RegQueryValueExW
(
key
,
value_name
,
NULL
,
&
type
,
data
,
&
data_size
);
if
(
rc
==
ERROR_SUCCESS
)
{
output_string
(
fmt
,
path
);
output_value
(
value_name
,
type
,
data
,
data_size
);
output_string
(
newlineW
);
}
HeapFree
(
GetProcessHeap
(),
0
,
data
);
if
(
rc
==
ERROR_FILE_NOT_FOUND
)
{
output_message
(
STRING_CANNOT_FIND
);
return
1
;
}
return
0
;
}
static
int
query_all
(
HKEY
key
,
WCHAR
*
path
,
BOOL
recurse
)
{
LONG
rc
;
...
...
@@ -783,11 +826,16 @@ static int reg_query(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, BOOL
if
(
value_name
||
value_empty
)
{
output_string
(
stubW
,
key_name
,
value_name
,
value_empty
,
recurse
);
return
1
;
if
(
recurse
)
{
RegCloseKey
(
key
);
output_string
(
stubW
,
key_name
,
value_name
,
value_empty
,
recurse
);
return
1
;
}
ret
=
query_value
(
key
,
value_name
,
key_name
);
}
ret
=
query_all
(
key
,
key_name
,
recurse
);
else
ret
=
query_all
(
key
,
key_name
,
recurse
);
RegCloseKey
(
key
);
...
...
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