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
c7c9b455
Commit
c7c9b455
authored
Apr 29, 2019
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cabarc: Build with msvcrt.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
45442d27
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
27 deletions
+24
-27
Makefile.in
programs/cabarc/Makefile.in
+2
-1
cabarc.c
programs/cabarc/cabarc.c
+22
-26
No files found.
programs/cabarc/Makefile.in
View file @
c7c9b455
MODULE
=
cabarc.exe
APPMODE
=
-mconsole
-municode
IMPORTS
=
cabinet
EXTRADLLFLAGS
=
-mconsole
-municode
-mno-cygwin
C_SRCS
=
cabarc.c
programs/cabarc/cabarc.c
View file @
c7c9b455
...
...
@@ -18,9 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <stdio.h>
#include <stdlib.h>
...
...
@@ -29,7 +26,6 @@
#include "fci.h"
#include "fdi.h"
#include "wine/unicode.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
cabarc
);
...
...
@@ -329,17 +325,17 @@ static void create_directories( const WCHAR *name )
WCHAR
*
path
,
*
p
;
/* create the directory/directories */
path
=
cab_alloc
(
(
strlenW
(
name
)
+
1
)
*
sizeof
(
WCHAR
)
);
strcpyW
(
path
,
name
);
path
=
cab_alloc
(
(
l
strlenW
(
name
)
+
1
)
*
sizeof
(
WCHAR
)
);
l
strcpyW
(
path
,
name
);
p
=
strchrW
(
path
,
'\\'
);
p
=
wcschr
(
path
,
'\\'
);
while
(
p
!=
NULL
)
{
*
p
=
0
;
if
(
!
CreateDirectoryW
(
path
,
NULL
))
WINE_TRACE
(
"Couldn't create directory %s - error: %d
\n
"
,
wine_dbgstr_w
(
path
),
GetLastError
());
*
p
=
'\\'
;
p
=
strchrW
(
p
+
1
,
'\\'
);
p
=
wcschr
(
p
+
1
,
'\\'
);
}
cab_free
(
path
);
}
...
...
@@ -352,10 +348,10 @@ static BOOL match_files( const WCHAR *name )
if
(
!*
opt_files
)
return
TRUE
;
for
(
i
=
0
;
opt_files
[
i
];
i
++
)
{
unsigned
int
len
=
strlenW
(
opt_files
[
i
]
);
unsigned
int
len
=
l
strlenW
(
opt_files
[
i
]
);
/* FIXME: do smarter matching, and wildcards */
if
(
!
len
)
continue
;
if
(
strncmpiW
(
name
,
opt_files
[
i
],
len
))
continue
;
if
(
wcsnicmp
(
name
,
opt_files
[
i
],
len
))
continue
;
if
(
opt_files
[
i
][
len
-
1
]
==
'\\'
||
!
name
[
len
]
||
name
[
len
]
==
'\\'
)
return
TRUE
;
}
return
FALSE
;
...
...
@@ -428,15 +424,15 @@ static INT_PTR CDECL extract_notify( FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION
}
else
{
if
((
file
=
strrchrW
(
nameW
,
'\\'
)))
file
++
;
if
((
file
=
wcsrchr
(
nameW
,
'\\'
)))
file
++
;
else
file
=
nameW
;
}
if
(
opt_dest_dir
)
{
path
=
cab_alloc
(
(
strlenW
(
opt_dest_dir
)
+
strlenW
(
file
)
+
1
)
*
sizeof
(
WCHAR
)
);
strcpyW
(
path
,
opt_dest_dir
);
strcatW
(
path
,
file
);
path
=
cab_alloc
(
(
lstrlenW
(
opt_dest_dir
)
+
l
strlenW
(
file
)
+
1
)
*
sizeof
(
WCHAR
)
);
l
strcpyW
(
path
,
opt_dest_dir
);
l
strcatW
(
path
,
file
);
}
else
path
=
file
;
...
...
@@ -521,11 +517,11 @@ static BOOL add_directory( HFCI fci, WCHAR *dir )
WIN32_FIND_DATAW
data
;
BOOL
ret
=
TRUE
;
if
(
!
(
buffer
=
cab_alloc
(
(
strlenW
(
dir
)
+
MAX_PATH
+
2
)
*
sizeof
(
WCHAR
)
)))
return
FALSE
;
strcpyW
(
buffer
,
dir
);
p
=
buffer
+
strlenW
(
buffer
);
if
(
!
(
buffer
=
cab_alloc
(
(
l
strlenW
(
dir
)
+
MAX_PATH
+
2
)
*
sizeof
(
WCHAR
)
)))
return
FALSE
;
l
strcpyW
(
buffer
,
dir
);
p
=
buffer
+
l
strlenW
(
buffer
);
if
(
p
>
buffer
&&
p
[
-
1
]
!=
'\\'
)
*
p
++
=
'\\'
;
strcpyW
(
p
,
wildcardW
);
l
strcpyW
(
p
,
wildcardW
);
if
((
handle
=
FindFirstFileW
(
buffer
,
&
data
))
!=
INVALID_HANDLE_VALUE
)
{
...
...
@@ -535,7 +531,7 @@ static BOOL add_directory( HFCI fci, WCHAR *dir )
if
(
data
.
cFileName
[
0
]
==
'.'
&&
data
.
cFileName
[
1
]
==
'.'
&&
!
data
.
cFileName
[
2
])
continue
;
if
(
data
.
dwFileAttributes
&
FILE_ATTRIBUTE_REPARSE_POINT
)
continue
;
strcpyW
(
p
,
data
.
cFileName
);
l
strcpyW
(
p
,
data
.
cFileName
);
if
(
data
.
dwFileAttributes
&
FILE_ATTRIBUTE_DIRECTORY
)
ret
=
add_directory
(
fci
,
buffer
);
else
...
...
@@ -595,7 +591,7 @@ static int new_cabinet( char *cab_dir )
for
(
file
=
opt_files
;
*
file
;
file
++
)
{
if
(
!
strcmpW
(
*
file
,
plusW
))
if
(
!
l
strcmpW
(
*
file
,
plusW
))
FCIFlushFolder
(
fci
,
fci_get_next_cab
,
fci_status
);
else
if
(
!
(
ret
=
add_file_or_directory
(
fci
,
*
file
)))
break
;
...
...
@@ -646,7 +642,7 @@ int wmain( int argc, WCHAR *argv[] )
{
case
'd'
:
argv
++
;
argc
--
;
opt_cabinet_size
=
atoiW
(
argv
[
1
]
);
opt_cabinet_size
=
wcstol
(
argv
[
1
],
NULL
,
10
);
if
(
opt_cabinet_size
<
50000
)
{
WINE_MESSAGE
(
"cabarc: Cabinet size must be at least 50000
\n
"
);
...
...
@@ -658,12 +654,12 @@ int wmain( int argc, WCHAR *argv[] )
return
0
;
case
'i'
:
argv
++
;
argc
--
;
opt_cabinet_id
=
atoiW
(
argv
[
1
]
);
opt_cabinet_id
=
wcstol
(
argv
[
1
],
NULL
,
10
);
break
;
case
'm'
:
argv
++
;
argc
--
;
if
(
!
strcmpiW
(
argv
[
1
],
noneW
))
opt_compression
=
tcompTYPE_NONE
;
else
if
(
!
strcmpiW
(
argv
[
1
],
mszipW
))
opt_compression
=
tcompTYPE_MSZIP
;
if
(
!
wcscmp
(
argv
[
1
],
noneW
))
opt_compression
=
tcompTYPE_NONE
;
else
if
(
!
wcscmp
(
argv
[
1
],
mszipW
))
opt_compression
=
tcompTYPE_MSZIP
;
else
{
char
*
arg
=
strdupWtoA
(
CP_ACP
,
argv
[
1
]
);
...
...
@@ -679,7 +675,7 @@ int wmain( int argc, WCHAR *argv[] )
break
;
case
's'
:
argv
++
;
argc
--
;
opt_reserve_space
=
atoiW
(
argv
[
1
]
);
opt_reserve_space
=
wcstol
(
argv
[
1
],
NULL
,
10
);
break
;
case
'v'
:
opt_verbose
++
;
...
...
@@ -729,7 +725,7 @@ int wmain( int argc, WCHAR *argv[] )
if
(
argc
>
1
)
/* check for destination dir as last argument */
{
WCHAR
*
last
=
argv
[
argc
-
1
];
if
(
last
[
0
]
&&
last
[
strlenW
(
last
)
-
1
]
==
'\\'
)
if
(
last
[
0
]
&&
last
[
l
strlenW
(
last
)
-
1
]
==
'\\'
)
{
opt_dest_dir
=
last
;
argv
[
--
argc
]
=
NULL
;
...
...
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