Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
683cdf55
Commit
683cdf55
authored
Oct 01, 2020
by
Owen Rudge
Committed by
Alexandre Julliard
Oct 09, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wsdapi: Use wide character string literals.
Signed-off-by:
Owen Rudge
<
orudge@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
689ff9c0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
97 deletions
+43
-97
soap.c
dlls/wsdapi/soap.c
+42
-95
xml.c
dlls/wsdapi/xml.c
+1
-2
No files found.
dlls/wsdapi/soap.c
View file @
683cdf55
...
...
@@ -32,89 +32,39 @@ WINE_DEFAULT_DEBUG_CHANNEL(wsdapi);
#define APP_MAX_DELAY 500
static
const
WCHAR
discoveryTo
[]
=
{
'u'
,
'r'
,
'n'
,
':'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'-'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'-'
,
'o'
,
'r'
,
'g'
,
':'
,
'w'
,
's'
,
':'
,
'2'
,
'0'
,
'0'
,
'5'
,
':'
,
'0'
,
'4'
,
':'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
0
};
static
const
WCHAR
anonymousTo
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'4'
,
'/'
,
'0'
,
'8'
,
'/'
,
'a'
,
'd'
,
'd'
,
'r'
,
'e'
,
's'
,
's'
,
'i'
,
'n'
,
'g'
,
'/'
,
'r'
,
'o'
,
'l'
,
'e'
,
'/'
,
'a'
,
'n'
,
'o'
,
'n'
,
'y'
,
'm'
,
'o'
,
'u'
,
's'
,
0
};
static
const
WCHAR
actionHello
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'5'
,
'/'
,
'0'
,
'4'
,
'/'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
'/'
,
'H'
,
'e'
,
'l'
,
'l'
,
'o'
,
0
};
static
const
WCHAR
actionProbe
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'5'
,
'/'
,
'0'
,
'4'
,
'/'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
'/'
,
'P'
,
'r'
,
'o'
,
'b'
,
'e'
,
0
};
static
const
WCHAR
actionProbeMatches
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'5'
,
'/'
,
'0'
,
'4'
,
'/'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
'/'
,
'P'
,
'r'
,
'o'
,
'b'
,
'e'
,
'M'
,
'a'
,
't'
,
'c'
,
'h'
,
'e'
,
's'
,
0
};
static
const
WCHAR
actionBye
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'5'
,
'/'
,
'0'
,
'4'
,
'/'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
'/'
,
'B'
,
'y'
,
'e'
,
0
};
static
const
WCHAR
addressingNsUri
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'4'
,
'/'
,
'0'
,
'8'
,
'/'
,
'a'
,
'd'
,
'd'
,
'r'
,
'e'
,
's'
,
's'
,
'i'
,
'n'
,
'g'
,
0
};
static
const
WCHAR
discoveryNsUri
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
's'
,
'c'
,
'h'
,
'e'
,
'm'
,
'a'
,
's'
,
'.'
,
'x'
,
'm'
,
'l'
,
's'
,
'o'
,
'a'
,
'p'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'w'
,
's'
,
'/'
,
'2'
,
'0'
,
'0'
,
'5'
,
'/'
,
'0'
,
'4'
,
'/'
,
'd'
,
'i'
,
's'
,
'c'
,
'o'
,
'v'
,
'e'
,
'r'
,
'y'
,
0
};
static
const
WCHAR
envelopeNsUri
[]
=
{
'h'
,
't'
,
't'
,
'p'
,
':'
,
'/'
,
'/'
,
'w'
,
'w'
,
'w'
,
'.'
,
'w'
,
'3'
,
'.'
,
'o'
,
'r'
,
'g'
,
'/'
,
'2'
,
'0'
,
'0'
,
'3'
,
'/'
,
'0'
,
'5'
,
'/'
,
's'
,
'o'
,
'a'
,
'p'
,
'-'
,
'e'
,
'n'
,
'v'
,
'e'
,
'l'
,
'o'
,
'p'
,
'e'
,
0
};
static
const
WCHAR
addressingPrefix
[]
=
{
'w'
,
's'
,
'a'
,
0
};
static
const
WCHAR
discoveryPrefix
[]
=
{
'w'
,
's'
,
'd'
,
0
};
static
const
WCHAR
envelopePrefix
[]
=
{
's'
,
'o'
,
'a'
,
'p'
,
0
};
static
const
WCHAR
headerString
[]
=
{
'H'
,
'e'
,
'a'
,
'd'
,
'e'
,
'r'
,
0
};
static
const
WCHAR
actionString
[]
=
{
'A'
,
'c'
,
't'
,
'i'
,
'o'
,
'n'
,
0
};
static
const
WCHAR
messageIdString
[]
=
{
'M'
,
'e'
,
's'
,
's'
,
'a'
,
'g'
,
'e'
,
'I'
,
'D'
,
0
};
static
const
WCHAR
toString
[]
=
{
'T'
,
'o'
,
0
};
static
const
WCHAR
relatesToString
[]
=
{
'R'
,
'e'
,
'l'
,
'a'
,
't'
,
'e'
,
's'
,
'T'
,
'o'
,
0
};
static
const
WCHAR
appSequenceString
[]
=
{
'A'
,
'p'
,
'p'
,
'S'
,
'e'
,
'q'
,
'u'
,
'e'
,
'n'
,
'c'
,
'e'
,
0
};
static
const
WCHAR
instanceIdString
[]
=
{
'I'
,
'n'
,
's'
,
't'
,
'a'
,
'n'
,
'c'
,
'e'
,
'I'
,
'd'
,
0
};
static
const
WCHAR
messageNumberString
[]
=
{
'M'
,
'e'
,
's'
,
's'
,
'a'
,
'g'
,
'e'
,
'N'
,
'u'
,
'm'
,
'b'
,
'e'
,
'r'
,
0
};
static
const
WCHAR
sequenceIdString
[]
=
{
'S'
,
'e'
,
'q'
,
'u'
,
'e'
,
'n'
,
'c'
,
'e'
,
'I'
,
'd'
,
0
};
static
const
WCHAR
emptyString
[]
=
{
0
};
static
const
WCHAR
bodyString
[]
=
{
'B'
,
'o'
,
'd'
,
'y'
,
0
};
static
const
WCHAR
helloString
[]
=
{
'H'
,
'e'
,
'l'
,
'l'
,
'o'
,
0
};
static
const
WCHAR
probeString
[]
=
{
'P'
,
'r'
,
'o'
,
'b'
,
'e'
,
0
};
static
const
WCHAR
probeMatchString
[]
=
{
'P'
,
'r'
,
'o'
,
'b'
,
'e'
,
'M'
,
'a'
,
't'
,
'c'
,
'h'
,
0
};
static
const
WCHAR
probeMatchesString
[]
=
{
'P'
,
'r'
,
'o'
,
'b'
,
'e'
,
'M'
,
'a'
,
't'
,
'c'
,
'h'
,
'e'
,
's'
,
0
};
static
const
WCHAR
byeString
[]
=
{
'B'
,
'y'
,
'e'
,
0
};
static
const
WCHAR
endpointReferenceString
[]
=
{
'E'
,
'n'
,
'd'
,
'p'
,
'o'
,
'i'
,
'n'
,
't'
,
'R'
,
'e'
,
'f'
,
'e'
,
'r'
,
'e'
,
'n'
,
'c'
,
'e'
,
0
};
static
const
WCHAR
addressString
[]
=
{
'A'
,
'd'
,
'd'
,
'r'
,
'e'
,
's'
,
's'
,
0
};
static
const
WCHAR
referenceParametersString
[]
=
{
'R'
,
'e'
,
'f'
,
'e'
,
'r'
,
'e'
,
'n'
,
'c'
,
'e'
,
'P'
,
'a'
,
'r'
,
'a'
,
'm'
,
'e'
,
't'
,
'e'
,
'r'
,
's'
,
0
};
static
const
WCHAR
typesString
[]
=
{
'T'
,
'y'
,
'p'
,
'e'
,
's'
,
0
};
static
const
WCHAR
scopesString
[]
=
{
'S'
,
'c'
,
'o'
,
'p'
,
'e'
,
's'
,
0
};
static
const
WCHAR
xAddrsString
[]
=
{
'X'
,
'A'
,
'd'
,
'd'
,
'r'
,
's'
,
0
};
static
const
WCHAR
metadataVersionString
[]
=
{
'M'
,
'e'
,
't'
,
'a'
,
'd'
,
'a'
,
't'
,
'a'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
0
};
static
const
WCHAR
*
discoveryTo
=
L"urn:schemas-xmlsoap-org:ws:2005:04:discovery"
;
static
const
WCHAR
*
actionProbe
=
L"http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe"
;
static
const
WCHAR
*
addressingNsUri
=
L"http://schemas.xmlsoap.org/ws/2004/08/addressing"
;
static
const
WCHAR
*
discoveryNsUri
=
L"http://schemas.xmlsoap.org/ws/2005/04/discovery"
;
static
const
WCHAR
*
envelopeNsUri
=
L"http://www.w3.org/2003/05/soap-envelope"
;
static
const
WCHAR
*
addressingPrefix
=
L"wsa"
;
static
const
WCHAR
*
discoveryPrefix
=
L"wsd"
;
static
const
WCHAR
*
envelopePrefix
=
L"soap"
;
static
const
WCHAR
*
headerString
=
L"Header"
;
static
const
WCHAR
*
actionString
=
L"Action"
;
static
const
WCHAR
*
messageIdString
=
L"MessageID"
;
static
const
WCHAR
*
toString
=
L"To"
;
static
const
WCHAR
*
relatesToString
=
L"RelatesTo"
;
static
const
WCHAR
*
appSequenceString
=
L"AppSequence"
;
static
const
WCHAR
*
instanceIdString
=
L"InstanceId"
;
static
const
WCHAR
*
messageNumberString
=
L"MessageNumber"
;
static
const
WCHAR
*
sequenceIdString
=
L"SequenceId"
;
static
const
WCHAR
*
bodyString
=
L"Body"
;
static
const
WCHAR
*
helloString
=
L"Hello"
;
static
const
WCHAR
*
probeString
=
L"Probe"
;
static
const
WCHAR
*
probeMatchString
=
L"ProbeMatch"
;
static
const
WCHAR
*
probeMatchesString
=
L"ProbeMatches"
;
static
const
WCHAR
*
byeString
=
L"Bye"
;
static
const
WCHAR
*
endpointReferenceString
=
L"EndpointReference"
;
static
const
WCHAR
*
addressString
=
L"Address"
;
static
const
WCHAR
*
referenceParametersString
=
L"ReferenceParameters"
;
static
const
WCHAR
*
typesString
=
L"Types"
;
static
const
WCHAR
*
scopesString
=
L"Scopes"
;
static
const
WCHAR
*
xAddrsString
=
L"XAddrs"
;
static
const
WCHAR
*
metadataVersionString
=
L"MetadataVersion"
;
struct
discovered_namespace
{
...
...
@@ -211,7 +161,7 @@ static HRESULT write_xml_attribute(WSDXML_ATTRIBUTE *attribute, WS_XML_WRITER *w
if
(
attribute
->
Name
->
Space
==
NULL
)
{
element_ns
=
populate_xml_string
(
emptyString
);
element_ns
=
populate_xml_string
(
L""
);
if
(
element_ns
==
NULL
)
goto
cleanup
;
ns_prefix
=
NULL
;
...
...
@@ -364,8 +314,6 @@ HRESULT register_namespaces(IWSDXMLContext *xml_context)
static
BOOL
create_guid
(
LPWSTR
buffer
)
{
static
const
WCHAR
formatString
[]
=
{
'u'
,
'r'
,
'n'
,
':'
,
'u'
,
'u'
,
'i'
,
'd'
,
':'
,
'%'
,
's'
,
0
};
WCHAR
*
uuidString
=
NULL
;
UUID
uuid
;
...
...
@@ -377,7 +325,7 @@ static BOOL create_guid(LPWSTR buffer)
if
(
uuidString
==
NULL
)
return
FALSE
;
wsprintfW
(
buffer
,
formatString
,
uuidString
);
wsprintfW
(
buffer
,
L"urn:uuid:%s"
,
uuidString
);
RpcStringFreeW
((
RPC_WSTR
*
)
&
uuidString
);
return
TRUE
;
...
...
@@ -401,7 +349,6 @@ static void populate_soap_header(WSD_SOAP_HEADER *header, LPCWSTR to, LPCWSTR ac
static
LPWSTR
ulonglong_to_string
(
void
*
parent
,
ULONGLONG
value
)
{
static
const
WCHAR
formatString
[]
=
{
'%'
,
'I'
,
'6'
,
'4'
,
'u'
,
0
};
LPWSTR
ret
;
ret
=
WSDAllocateLinkedMemory
(
parent
,
MAX_ULONGLONG_STRING_SIZE
*
sizeof
(
WCHAR
));
...
...
@@ -409,7 +356,7 @@ static LPWSTR ulonglong_to_string(void *parent, ULONGLONG value)
if
(
ret
==
NULL
)
return
NULL
;
wsprintfW
(
ret
,
formatString
,
value
);
wsprintfW
(
ret
,
L"%I64u"
,
value
);
return
ret
;
}
...
...
@@ -560,7 +507,6 @@ static BOOL add_discovered_namespace(struct list *namespaces, WSDXML_NAMESPACE *
static
HRESULT
build_types_list
(
LPWSTR
buffer
,
size_t
buffer_size
,
const
WSD_NAME_LIST
*
list
,
struct
list
*
namespaces
)
{
static
const
WCHAR
format_string
[]
=
{
'%'
,
's'
,
':'
,
'%'
,
's'
,
0
};
LPWSTR
current_buf_pos
=
buffer
;
size_t
memory_needed
=
0
;
const
WSD_NAME_LIST
*
cur
=
list
;
...
...
@@ -577,7 +523,7 @@ static HRESULT build_types_list(LPWSTR buffer, size_t buffer_size, const WSD_NAM
if
(
cur
!=
list
)
*
current_buf_pos
++
=
' '
;
current_buf_pos
+=
wsprintfW
(
current_buf_pos
,
format_string
,
cur
->
Element
->
Space
->
PreferredPrefix
,
current_buf_pos
+=
wsprintfW
(
current_buf_pos
,
L"%s:%s"
,
cur
->
Element
->
Space
->
PreferredPrefix
,
cur
->
Element
->
LocalName
);
/* Record the namespace in the discovered namespaces list */
...
...
@@ -738,7 +684,7 @@ static HRESULT create_soap_header_xml_elements(IWSDXMLContext *xml_context, WSD_
}
/* <d:AppSequence> */
ret
=
add_child_element
(
xml_context
,
header_element
,
discoveryNsUri
,
appSequenceString
,
emptyString
,
&
app_sequence_element
);
ret
=
add_child_element
(
xml_context
,
header_element
,
discoveryNsUri
,
appSequenceString
,
L""
,
&
app_sequence_element
);
if
(
FAILED
(
ret
))
goto
cleanup
;
/* InstanceId attribute */
...
...
@@ -958,7 +904,7 @@ HRESULT send_hello_message(IWSDiscoveryPublisherImpl *impl, LPCWSTR id, ULONGLON
list_init
(
discoveredNamespaces
);
populate_soap_header
(
&
soapHeader
,
discoveryTo
,
actionHello
,
message_id
,
&
sequence
,
hdr_any
);
populate_soap_header
(
&
soapHeader
,
discoveryTo
,
L"http://schemas.xmlsoap.org/ws/2005/04/discovery/Hello"
,
message_id
,
&
sequence
,
hdr_any
);
ret
=
IWSDXMLContext_AddNameToNamespace
(
impl
->
xmlContext
,
envelopeNsUri
,
bodyString
,
&
body_name
);
if
(
FAILED
(
ret
))
goto
cleanup
;
...
...
@@ -1085,7 +1031,7 @@ HRESULT send_bye_message(IWSDiscoveryPublisherImpl *impl, LPCWSTR id, ULONGLONG
list_init
(
discovered_namespaces
);
populate_soap_header
(
&
soap_header
,
discoveryTo
,
actionBye
,
message_id
,
&
sequence
,
NULL
);
populate_soap_header
(
&
soap_header
,
discoveryTo
,
L"http://schemas.xmlsoap.org/ws/2005/04/discovery/Bye"
,
message_id
,
&
sequence
,
NULL
);
ret
=
IWSDXMLContext_AddNameToNamespace
(
impl
->
xmlContext
,
envelopeNsUri
,
bodyString
,
&
body_name
);
if
(
FAILED
(
ret
))
goto
cleanup
;
...
...
@@ -1172,7 +1118,8 @@ HRESULT send_probe_matches_message(IWSDiscoveryPublisherImpl *impl, const WSD_SO
list_init
(
discovered_namespaces
);
populate_soap_header
(
&
soap_header
,
anonymousTo
,
actionProbeMatches
,
msg_id
,
&
sequence
,
header_any
);
populate_soap_header
(
&
soap_header
,
L"http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"
,
L"http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches"
,
msg_id
,
&
sequence
,
header_any
);
soap_header
.
RelatesTo
.
MessageID
=
probe_msg
->
Header
.
MessageID
;
ret
=
IWSDXMLContext_AddNameToNamespace
(
impl
->
xmlContext
,
envelopeNsUri
,
bodyString
,
&
body_name
);
...
...
dlls/wsdapi/xml.c
View file @
683cdf55
...
...
@@ -380,13 +380,12 @@ static BOOL is_prefix_unique(struct list *namespaces, LPCWSTR prefix)
static
LPWSTR
generate_namespace_prefix
(
IWSDXMLContextImpl
*
impl
,
void
*
parentMemoryBlock
,
LPCWSTR
uri
)
{
static
const
WCHAR
formatString
[]
=
{
'u'
,
'n'
,
'%'
,
'd'
,
0
};
WCHAR
suggestedPrefix
[
7
];
/* Find a unique prefix */
while
(
impl
->
nextUnknownPrefix
<
1000
)
{
wsprintfW
(
suggestedPrefix
,
formatString
,
impl
->
nextUnknownPrefix
++
);
wsprintfW
(
suggestedPrefix
,
L"un%d"
,
impl
->
nextUnknownPrefix
++
);
/* For the unlikely event where somebody has explicitly created a prefix called 'unX', check it is unique */
if
(
is_prefix_unique
(
impl
->
namespaces
,
suggestedPrefix
))
...
...
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