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
fcc40a07
Commit
fcc40a07
authored
Jun 06, 2019
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
itss: Build with msvcrt.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
193f5e93
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
50 additions
and
67 deletions
+50
-67
Makefile.in
dlls/itss/Makefile.in
+2
-0
chm_lib.c
dlls/itss/chm_lib.c
+11
-14
itss.c
dlls/itss/itss.c
+0
-2
lzx.c
dlls/itss/lzx.c
+4
-13
moniker.c
dlls/itss/moniker.c
+7
-9
protocol.c
dlls/itss/protocol.c
+14
-15
storage.c
dlls/itss/storage.c
+12
-14
No files found.
dlls/itss/Makefile.in
View file @
fcc40a07
MODULE
=
itss.dll
IMPORTS
=
uuid urlmon shlwapi ole32
EXTRADLLFLAGS
=
-mno-cygwin
C_SRCS
=
\
chm_lib.c
\
itss.c
\
...
...
dlls/itss/chm_lib.c
View file @
fcc40a07
...
...
@@ -54,8 +54,6 @@
* *
***************************************************************************/
#include "config.h"
#include "wine/port.h"
#include <stdarg.h>
#include <stdio.h>
...
...
@@ -64,7 +62,7 @@
#include "windef.h"
#include "winbase.h"
#include "win
e/unicode
.h"
#include "win
nls
.h"
#include "chm_lib.h"
#include "lzx.h"
...
...
@@ -995,7 +993,7 @@ static UChar *_chm_find_in_PMGL(UChar *page_buf,
return
NULL
;
/* check if it is the right name */
if
(
!
strcmpiW
(
buffer
,
objPath
))
if
(
!
wcsicmp
(
buffer
,
objPath
))
return
temp
;
_chm_skip_PMGL_entry_data
(
&
cur
);
...
...
@@ -1036,7 +1034,7 @@ static Int32 _chm_find_in_PMGI(UChar *page_buf,
return
-
1
;
/* check if it is the right name */
if
(
strcmpiW
(
buffer
,
objPath
)
>
0
)
if
(
wcsicmp
(
buffer
,
objPath
)
>
0
)
return
page
;
/* load next value for path */
...
...
@@ -1327,9 +1325,8 @@ static Int64 _chm_decompress_region(struct chmFile *h,
/* data request not satisfied, so... start up the decompressor machine */
if
(
!
h
->
lzx_state
)
{
int
window_size
=
ffs
(
h
->
window_size
)
-
1
;
h
->
lzx_last_block
=
-
1
;
h
->
lzx_state
=
LZXinit
(
window_size
);
h
->
lzx_state
=
LZXinit
(
h
->
window_size
);
}
/* decompress some data */
...
...
@@ -1438,7 +1435,7 @@ BOOL chm_enumerate_dir(struct chmFile *h,
/* initialize pathname state */
lstrcpynW
(
prefixRectified
,
prefix
,
CHM_MAX_PATHLEN
);
prefixLen
=
strlenW
(
prefixRectified
);
prefixLen
=
l
strlenW
(
prefixRectified
);
if
(
prefixLen
!=
0
)
{
if
(
prefixRectified
[
prefixLen
-
1
]
!=
'/'
)
...
...
@@ -1487,7 +1484,7 @@ BOOL chm_enumerate_dir(struct chmFile *h,
/* check if we should start */
if
(
!
it_has_begun
)
{
if
(
ui
.
length
==
0
&&
strncmpiW
(
ui
.
path
,
prefixRectified
,
prefixLen
)
==
0
)
if
(
ui
.
length
==
0
&&
wcsnicmp
(
ui
.
path
,
prefixRectified
,
prefixLen
)
==
0
)
it_has_begun
=
TRUE
;
else
continue
;
...
...
@@ -1499,7 +1496,7 @@ BOOL chm_enumerate_dir(struct chmFile *h,
/* check if we should stop */
else
{
if
(
strncmpiW
(
ui
.
path
,
prefixRectified
,
prefixLen
)
!=
0
)
if
(
wcsnicmp
(
ui
.
path
,
prefixRectified
,
prefixLen
)
!=
0
)
{
HeapFree
(
GetProcessHeap
(),
0
,
page_buf
);
return
TRUE
;
...
...
@@ -1509,14 +1506,14 @@ BOOL chm_enumerate_dir(struct chmFile *h,
/* check if we should include this path */
if
(
lastPathLen
!=
-
1
)
{
if
(
strncmpiW
(
ui
.
path
,
lastPath
,
lastPathLen
)
==
0
)
if
(
wcsnicmp
(
ui
.
path
,
lastPath
,
lastPathLen
)
==
0
)
continue
;
}
strcpyW
(
lastPath
,
ui
.
path
);
lastPathLen
=
strlenW
(
lastPath
);
l
strcpyW
(
lastPath
,
ui
.
path
);
lastPathLen
=
l
strlenW
(
lastPath
);
/* get the length of the path */
ui_path_len
=
strlenW
(
ui
.
path
)
-
1
;
ui_path_len
=
l
strlenW
(
ui
.
path
)
-
1
;
/* check for DIRS */
if
(
ui
.
path
[
ui_path_len
]
==
'/'
&&
!
(
what
&
CHM_ENUMERATE_DIRS
))
...
...
dlls/itss/itss.c
View file @
fcc40a07
...
...
@@ -21,7 +21,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#include <stdio.h>
...
...
@@ -36,7 +35,6 @@
#include "rpcproxy.h"
#include "advpub.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "itsstor.h"
...
...
dlls/itss/lzx.c
View file @
fcc40a07
...
...
@@ -169,16 +169,11 @@ static const ULONG position_base[51] = {
1835008
,
1966080
,
2097152
};
struct
LZXstate
*
LZXinit
(
int
w
indow
)
struct
LZXstate
*
LZXinit
(
int
w
ndsize
)
{
struct
LZXstate
*
pState
=
NULL
;
ULONG
wndsize
=
1
<<
window
;
int
i
,
posn_slots
;
/* LZX supports window sizes of 2^15 (32Kb) through 2^21 (2Mb) */
/* if a previously allocated window is big enough, keep it */
if
(
window
<
15
||
window
>
21
)
return
NULL
;
/* allocate state and associated window */
pState
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
struct
LZXstate
));
if
(
!
(
pState
->
window
=
HeapAlloc
(
GetProcessHeap
(),
0
,
wndsize
)))
...
...
@@ -190,12 +185,8 @@ struct LZXstate *LZXinit(int window)
pState
->
window_size
=
wndsize
;
/* calculate required position slots */
if
(
window
==
20
)
posn_slots
=
42
;
else
if
(
window
==
21
)
posn_slots
=
50
;
else
posn_slots
=
window
<<
1
;
/** alternatively **/
/* posn_slots=i=0; while (i < wndsize) i += 1 << extra_bits[posn_slots++]; */
posn_slots
=
i
=
0
;
while
(
i
<
wndsize
)
i
+=
1
<<
extra_bits
[
posn_slots
++
];
/* initialize other state */
pState
->
R0
=
pState
->
R1
=
pState
->
R2
=
1
;
...
...
@@ -797,7 +788,7 @@ int main(int c, char **v)
int
i
;
int
count
=
0
;
int
w
=
atoi
(
v
[
1
]);
LZXinit
(
&
state
,
w
);
LZXinit
(
&
state
,
1
<<
w
);
fout
=
fopen
(
v
[
2
],
"wb"
);
for
(
i
=
3
;
i
<
c
;
i
++
)
{
...
...
dlls/itss/moniker.c
View file @
fcc40a07
...
...
@@ -20,7 +20,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#include <stdio.h>
...
...
@@ -33,7 +32,6 @@
#include "ole2.h"
#include "wine/itss.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "itsstor.h"
...
...
@@ -292,9 +290,9 @@ static HRESULT WINAPI ITS_IMonikerImpl_GetDisplayName(
TRACE
(
"%p %p %p %p
\n
"
,
iface
,
pbc
,
pmkToLeft
,
ppszDisplayName
);
len
=
strlenW
(
This
->
szFile
)
+
strlenW
(
This
->
szHtml
);
len
=
lstrlenW
(
This
->
szFile
)
+
l
strlenW
(
This
->
szHtml
);
str
=
CoTaskMemAlloc
(
len
*
sizeof
(
WCHAR
)
);
s
printfW
(
str
,
szFormat
,
This
->
szFile
,
This
->
szHtml
);
s
wprintf
(
str
,
len
,
szFormat
,
This
->
szFile
,
This
->
szHtml
);
*
ppszDisplayName
=
str
;
...
...
@@ -354,12 +352,12 @@ static HRESULT ITS_IMoniker_create( IMoniker **ppObj, LPCWSTR name, DWORD n )
DWORD
sz
;
/* szFile[1] has space for one character already */
sz
=
FIELD_OFFSET
(
ITS_IMonikerImpl
,
szFile
[
strlenW
(
name
)
+
1
]
);
sz
=
FIELD_OFFSET
(
ITS_IMonikerImpl
,
szFile
[
l
strlenW
(
name
)
+
1
]
);
itsmon
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sz
);
itsmon
->
IMoniker_iface
.
lpVtbl
=
&
ITS_IMonikerImpl_Vtbl
;
itsmon
->
ref
=
1
;
strcpyW
(
itsmon
->
szFile
,
name
);
l
strcpyW
(
itsmon
->
szFile
,
name
);
itsmon
->
szHtml
=
&
itsmon
->
szFile
[
n
];
while
(
*
itsmon
->
szHtml
==
':'
)
...
...
@@ -443,11 +441,11 @@ static HRESULT WINAPI ITS_IParseDisplayNameImpl_ParseDisplayName(
TRACE
(
"%p %s %p %p
\n
"
,
This
,
debugstr_w
(
pszDisplayName
),
pchEaten
,
ppmkOut
);
if
(
strncmpiW
(
pszDisplayName
,
szPrefix
,
prefix_len
)
)
if
(
wcsnicmp
(
pszDisplayName
,
szPrefix
,
prefix_len
)
)
return
MK_E_SYNTAX
;
/* search backwards for a double colon */
for
(
n
=
strlenW
(
pszDisplayName
)
-
3
;
prefix_len
<=
n
;
n
--
)
for
(
n
=
l
strlenW
(
pszDisplayName
)
-
3
;
prefix_len
<=
n
;
n
--
)
if
(
(
pszDisplayName
[
n
]
==
':'
)
&&
(
pszDisplayName
[
n
+
1
]
==
':'
)
)
break
;
...
...
@@ -457,7 +455,7 @@ static HRESULT WINAPI ITS_IParseDisplayNameImpl_ParseDisplayName(
if
(
!
pszDisplayName
[
n
+
2
]
)
return
MK_E_SYNTAX
;
*
pchEaten
=
strlenW
(
pszDisplayName
)
-
n
-
3
;
*
pchEaten
=
l
strlenW
(
pszDisplayName
)
-
n
-
3
;
return
ITS_IMoniker_create
(
ppmkOut
,
&
pszDisplayName
[
prefix_len
],
n
-
prefix_len
);
...
...
dlls/itss/protocol.c
View file @
fcc40a07
...
...
@@ -31,7 +31,6 @@
#include "chm_lib.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
itss
);
...
...
@@ -153,11 +152,11 @@ static LPCWSTR skip_schema(LPCWSTR url)
static
const
WCHAR
msits_schema
[]
=
{
'm'
,
's'
,
'-'
,
'i'
,
't'
,
's'
,
':'
};
static
const
WCHAR
mk_schema
[]
=
{
'm'
,
'k'
,
':'
,
'@'
,
'M'
,
'S'
,
'I'
,
'T'
,
'S'
,
't'
,
'o'
,
'r'
,
'e'
,
':'
};
if
(
!
strncmpiW
(
its_schema
,
url
,
ARRAY_SIZE
(
its_schema
)))
if
(
!
wcsnicmp
(
its_schema
,
url
,
ARRAY_SIZE
(
its_schema
)))
return
url
+
ARRAY_SIZE
(
its_schema
);
if
(
!
strncmpiW
(
msits_schema
,
url
,
ARRAY_SIZE
(
msits_schema
)))
if
(
!
wcsnicmp
(
msits_schema
,
url
,
ARRAY_SIZE
(
msits_schema
)))
return
url
+
ARRAY_SIZE
(
msits_schema
);
if
(
!
strncmpiW
(
mk_schema
,
url
,
ARRAY_SIZE
(
mk_schema
)))
if
(
!
wcsnicmp
(
mk_schema
,
url
,
ARRAY_SIZE
(
mk_schema
)))
return
url
+
ARRAY_SIZE
(
mk_schema
);
return
NULL
;
...
...
@@ -251,7 +250,7 @@ static HRESULT WINAPI ITSProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
ReleaseBindInfo
(
&
bindinfo
);
len
=
strlenW
(
ptr
)
+
3
;
len
=
l
strlenW
(
ptr
)
+
3
;
file_name
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
));
memcpy
(
file_name
,
ptr
,
len
*
sizeof
(
WCHAR
));
hres
=
UrlUnescapeW
(
file_name
,
NULL
,
&
len
,
URL_UNESCAPE_INPLACE
);
...
...
@@ -261,7 +260,7 @@ static HRESULT WINAPI ITSProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
return
hres
;
}
p
=
strstrW
(
file_name
,
separator
);
p
=
wcsstr
(
file_name
,
separator
);
if
(
!
p
)
{
WARN
(
"invalid url
\n
"
);
HeapFree
(
GetProcessHeap
(),
0
,
file_name
);
...
...
@@ -277,7 +276,7 @@ static HRESULT WINAPI ITSProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
}
object_name
=
p
+
2
;
len
=
strlenW
(
object_name
);
len
=
l
strlenW
(
object_name
);
if
(
*
object_name
!=
'/'
&&
*
object_name
!=
'\\'
)
{
memmove
(
object_name
+
1
,
object_name
,
(
len
+
1
)
*
sizeof
(
WCHAR
));
...
...
@@ -307,7 +306,7 @@ static HRESULT WINAPI ITSProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
}
IInternetProtocolSink_ReportProgress
(
pOIProtSink
,
BINDSTATUS_SENDINGREQUEST
,
strrchrW
(
object_name
,
'/'
)
+
1
);
wcsrchr
(
object_name
,
'/'
)
+
1
);
/* FIXME: Native doesn't use FindMimeFromData */
hres
=
FindMimeFromData
(
NULL
,
object_name
,
NULL
,
0
,
NULL
,
0
,
&
mime
,
0
);
...
...
@@ -487,7 +486,7 @@ static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
debugstr_w
(
pwzRelativeUrl
),
dwCombineFlags
,
pwzResult
,
cchResult
,
pcchResult
,
dwReserved
);
base_end
=
strstrW
(
pwzBaseUrl
,
separator
);
base_end
=
wcsstr
(
pwzBaseUrl
,
separator
);
if
(
!
base_end
)
return
0x80041001
;
base_end
+=
2
;
...
...
@@ -495,20 +494,20 @@ static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
if
(
!
skip_schema
(
pwzBaseUrl
))
return
INET_E_USE_DEFAULT_PROTOCOLHANDLER
;
if
(
strchrW
(
pwzRelativeUrl
,
':'
))
if
(
wcschr
(
pwzRelativeUrl
,
':'
))
return
STG_E_INVALIDNAME
;
if
(
pwzRelativeUrl
[
0
]
==
'#'
)
{
base_end
+=
strlenW
(
base_end
);
base_end
+=
l
strlenW
(
base_end
);
}
else
if
(
pwzRelativeUrl
[
0
]
!=
'/'
)
{
ptr
=
strrchrW
(
base_end
,
'/'
);
ptr
=
wcsrchr
(
base_end
,
'/'
);
if
(
ptr
)
base_end
=
ptr
+
1
;
else
base_end
+=
strlenW
(
base_end
);
base_end
+=
l
strlenW
(
base_end
);
}
rel_len
=
strlenW
(
pwzRelativeUrl
)
+
1
;
rel_len
=
l
strlenW
(
pwzRelativeUrl
)
+
1
;
*
pcchResult
=
rel_len
+
(
base_end
-
pwzBaseUrl
);
...
...
@@ -516,7 +515,7 @@ static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
return
E_OUTOFMEMORY
;
memcpy
(
pwzResult
,
pwzBaseUrl
,
(
base_end
-
pwzBaseUrl
)
*
sizeof
(
WCHAR
));
strcpyW
(
pwzResult
+
(
base_end
-
pwzBaseUrl
),
pwzRelativeUrl
);
l
strcpyW
(
pwzResult
+
(
base_end
-
pwzBaseUrl
),
pwzRelativeUrl
);
return
S_OK
;
}
...
...
dlls/itss/storage.c
View file @
fcc40a07
...
...
@@ -20,7 +20,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#include <stdio.h>
...
...
@@ -36,7 +35,6 @@
#include "itsstor.h"
#include "wine/itss.h"
#include "wine/unicode.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
itss
);
...
...
@@ -167,9 +165,9 @@ static HRESULT WINAPI ITSS_IEnumSTATSTG_Next(
str
=
cur
->
ui
.
path
;
if
(
*
str
==
'/'
)
str
++
;
len
=
strlenW
(
str
)
+
1
;
len
=
l
strlenW
(
str
)
+
1
;
rgelt
->
pwcsName
=
CoTaskMemAlloc
(
len
*
sizeof
(
WCHAR
)
);
strcpyW
(
rgelt
->
pwcsName
,
str
);
l
strcpyW
(
rgelt
->
pwcsName
,
str
);
/* determine the type */
if
(
rgelt
->
pwcsName
[
len
-
2
]
==
'/'
)
...
...
@@ -345,17 +343,17 @@ static HRESULT WINAPI ITSS_IStorageImpl_OpenStream(
TRACE
(
"%p %s %p %u %u %p
\n
"
,
This
,
debugstr_w
(
pwcsName
),
reserved1
,
grfMode
,
reserved2
,
ppstm
);
len
=
strlenW
(
This
->
dir
)
+
strlenW
(
pwcsName
)
+
1
;
len
=
lstrlenW
(
This
->
dir
)
+
l
strlenW
(
pwcsName
)
+
1
;
path
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
);
strcpyW
(
path
,
This
->
dir
);
l
strcpyW
(
path
,
This
->
dir
);
if
(
pwcsName
[
0
]
==
'/'
||
pwcsName
[
0
]
==
'\\'
)
{
p
=
&
path
[
strlenW
(
path
)
-
1
];
p
=
&
path
[
l
strlenW
(
path
)
-
1
];
while
(
(
path
<=
p
)
&&
(
*
p
==
'/'
)
)
*
p
--
=
0
;
}
strcatW
(
path
,
pwcsName
);
l
strcatW
(
path
,
pwcsName
);
for
(
p
=
path
;
*
p
;
p
++
)
{
if
(
*
p
==
'\\'
)
...
...
@@ -417,17 +415,17 @@ static HRESULT WINAPI ITSS_IStorageImpl_OpenStorage(
if
(
!
chmfile
)
return
E_FAIL
;
len
=
strlenW
(
This
->
dir
)
+
strlenW
(
pwcsName
)
+
2
;
/* need room for a terminating slash */
len
=
lstrlenW
(
This
->
dir
)
+
l
strlenW
(
pwcsName
)
+
2
;
/* need room for a terminating slash */
path
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
);
strcpyW
(
path
,
This
->
dir
);
l
strcpyW
(
path
,
This
->
dir
);
if
(
pwcsName
[
0
]
==
'/'
||
pwcsName
[
0
]
==
'\\'
)
{
p
=
&
path
[
strlenW
(
path
)
-
1
];
p
=
&
path
[
l
strlenW
(
path
)
-
1
];
while
(
(
path
<=
p
)
&&
(
*
p
==
'/'
)
)
*
p
--
=
0
;
}
strcatW
(
path
,
pwcsName
);
l
strcatW
(
path
,
pwcsName
);
for
(
p
=
path
;
*
p
;
p
++
)
{
if
(
*
p
==
'\\'
)
...
...
@@ -620,11 +618,11 @@ static HRESULT ITSS_create_chm_storage(
TRACE
(
"%p %s
\n
"
,
chmfile
,
debugstr_w
(
dir
)
);
stg
=
HeapAlloc
(
GetProcessHeap
(),
0
,
FIELD_OFFSET
(
ITSS_IStorageImpl
,
dir
[
strlenW
(
dir
)
+
1
]
));
FIELD_OFFSET
(
ITSS_IStorageImpl
,
dir
[
l
strlenW
(
dir
)
+
1
]
));
stg
->
IStorage_iface
.
lpVtbl
=
&
ITSS_IStorageImpl_Vtbl
;
stg
->
ref
=
1
;
stg
->
chmfile
=
chmfile
;
strcpyW
(
stg
->
dir
,
dir
);
l
strcpyW
(
stg
->
dir
,
dir
);
*
ppstgOpen
=
&
stg
->
IStorage_iface
;
...
...
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