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
8f2a863f
Commit
8f2a863f
authored
Jan 06, 2009
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winefile: Get rid of hack to load vswprintf from msvcrt.
parent
13df062d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
68 deletions
+30
-68
winefile.c
programs/winefile/winefile.c
+30
-66
winefile.h
programs/winefile/winefile.h
+0
-2
No files found.
programs/winefile/winefile.c
View file @
8f2a863f
...
...
@@ -33,6 +33,7 @@
#include "winefile.h"
#include "resource.h"
#include "wine/unicode.h"
#ifdef _NO_EXTENSIONS
#undef _LEFT_FILES
...
...
@@ -196,8 +197,17 @@ static const TCHAR sQMarks[] = {'?','?','?','\0'};
static
const
TCHAR
sWINEFILEFRAME
[]
=
{
'W'
,
'F'
,
'S'
,
'_'
,
'F'
,
'r'
,
'a'
,
'm'
,
'e'
,
'\0'
};
static
const
TCHAR
sWINEFILETREE
[]
=
{
'W'
,
'F'
,
'S'
,
'_'
,
'T'
,
'r'
,
'e'
,
'e'
,
'\0'
};
static
const
TCHAR
sLongHexFmt
[]
=
{
'%'
,
'I'
,
'6'
,
'4'
,
'X'
,
'\0'
};
static
const
TCHAR
sLongNumFmt
[]
=
{
'%'
,
'I'
,
'6'
,
'4'
,
'u'
,
'\0'
};
static
void
format_longlong
(
LPWSTR
ret
,
ULONGLONG
val
)
{
WCHAR
buffer
[
65
],
*
p
=
&
buffer
[
64
];
*
p
=
0
;
do
{
*
(
--
p
)
=
'0'
+
val
%
10
;
val
/=
10
;
}
while
(
val
);
lstrcpyW
(
ret
,
p
);
}
/* load resource string */
...
...
@@ -299,52 +309,6 @@ static inline void choose_font(HWND hwnd)
ReleaseDC
(
hwnd
,
hdc
);
}
#ifdef __WINE__
#ifdef UNICODE
/* call vswprintf() in msvcrt.dll */
/*TODO: fix swprintf() in non-msvcrt mode, so that this dynamic linking function can be removed */
static
int
msvcrt_swprintf
(
WCHAR
*
buffer
,
const
WCHAR
*
fmt
,
...)
{
static
int
(
__cdecl
*
pvswprintf
)(
WCHAR
*
,
const
WCHAR
*
,
va_list
)
=
NULL
;
va_list
ap
;
int
ret
;
if
(
!
pvswprintf
)
{
HMODULE
hModMsvcrt
=
LoadLibraryA
(
"msvcrt"
);
pvswprintf
=
(
int
(
__cdecl
*
)(
WCHAR
*
,
const
WCHAR
*
,
va_list
))
GetProcAddress
(
hModMsvcrt
,
"vswprintf"
);
}
va_start
(
ap
,
fmt
);
ret
=
(
*
pvswprintf
)(
buffer
,
fmt
,
ap
);
va_end
(
ap
);
return
ret
;
}
static
LPCWSTR
my_wcsrchr
(
LPCWSTR
str
,
WCHAR
c
)
{
LPCWSTR
p
=
str
;
while
(
*
p
)
++
p
;
do
{
if
(
--
p
<
str
)
return
NULL
;
}
while
(
*
p
!=
c
);
return
p
;
}
#define _tcsrchr my_wcsrchr
#else
/* UNICODE */
#define _tcsrchr strrchr
#endif
/* UNICODE */
#endif
/* __WINE__ */
/* allocate and initialise a directory entry */
static
Entry
*
alloc_entry
(
void
)
...
...
@@ -1219,8 +1183,8 @@ static int compareExt(const void* arg1, const void* arg2)
name1
=
fd1
->
cFileName
;
name2
=
fd2
->
cFileName
;
ext1
=
_tcsrchr
(
name1
,
'.'
);
ext2
=
_tcsrchr
(
name2
,
'.'
);
ext1
=
strrchrW
(
name1
,
'.'
);
ext2
=
strrchrW
(
name2
,
'.'
);
if
(
ext1
)
ext1
++
;
...
...
@@ -2032,7 +1996,6 @@ static INT_PTR CALLBACK PropertiesDialogDlgProc(HWND hwnd, UINT nmsg, WPARAM wpa
static
const
TCHAR
sByteFmt
[]
=
{
'%'
,
's'
,
' '
,
'B'
,
'y'
,
't'
,
'e'
,
's'
,
'\0'
};
TCHAR
b1
[
BUFFER_LEN
],
b2
[
BUFFER_LEN
];
LPWIN32_FIND_DATA
pWFD
;
ULONGLONG
size
;
dlg
=
(
struct
PropertiesDialog
*
)
lparam
;
pWFD
=
(
LPWIN32_FIND_DATA
)
&
dlg
->
entry
.
data
;
...
...
@@ -2044,8 +2007,7 @@ static INT_PTR CALLBACK PropertiesDialogDlgProc(HWND hwnd, UINT nmsg, WPARAM wpa
format_date
(
&
pWFD
->
ftLastWriteTime
,
b1
,
COL_DATE
|
COL_TIME
);
SetWindowText
(
GetDlgItem
(
hwnd
,
IDC_STATIC_PROP_LASTCHANGE
),
b1
);
size
=
((
ULONGLONG
)
pWFD
->
nFileSizeHigh
<<
32
)
|
pWFD
->
nFileSizeLow
;
_stprintf
(
b1
,
sLongNumFmt
,
size
);
format_longlong
(
b1
,
((
ULONGLONG
)
pWFD
->
nFileSizeHigh
<<
32
)
|
pWFD
->
nFileSizeLow
);
wsprintf
(
b2
,
sByteFmt
,
b1
);
SetWindowText
(
GetDlgItem
(
hwnd
,
IDC_STATIC_PROP_SIZE
),
b2
);
...
...
@@ -2907,17 +2869,18 @@ static void format_bytes(LPTSTR buffer, LONGLONG bytes)
static
const
TCHAR
sFmtGB
[]
=
{
'%'
,
'.'
,
'1'
,
'f'
,
' '
,
'G'
,
'B'
,
'\0'
};
static
const
TCHAR
sFmtMB
[]
=
{
'%'
,
'.'
,
'1'
,
'f'
,
' '
,
'M'
,
'B'
,
'\0'
};
static
const
TCHAR
sFmtkB
[]
=
{
'%'
,
'.'
,
'1'
,
'f'
,
' '
,
'k'
,
'B'
,
'\0'
};
static
const
TCHAR
sFmtB
[]
=
{
'%'
,
'u'
,
0
};
float
fBytes
=
(
float
)
bytes
;
if
(
bytes
>=
1073741824
)
/* 1 GB */
_stprintf
(
buffer
,
sFmtGB
,
fBytes
/
1073741824
.
f
+
.
5
f
);
sprintfW
(
buffer
,
sFmtGB
,
fBytes
/
1073741824
.
f
+
.
5
f
);
else
if
(
bytes
>=
1048576
)
/* 1 MB */
_stprintf
(
buffer
,
sFmtMB
,
fBytes
/
1048576
.
f
+
.
5
f
);
sprintfW
(
buffer
,
sFmtMB
,
fBytes
/
1048576
.
f
+
.
5
f
);
else
if
(
bytes
>=
1024
)
/* 1 kB */
_stprintf
(
buffer
,
sFmtkB
,
fBytes
/
1024
.
f
+
.
5
f
);
sprintfW
(
buffer
,
sFmtkB
,
fBytes
/
1024
.
f
+
.
5
f
);
else
_stprintf
(
buffer
,
sLongNumFmt
,
bytes
);
sprintfW
(
buffer
,
sFmtB
,
(
DWORD
)
bytes
);
}
static
void
set_space_status
(
void
)
...
...
@@ -3141,7 +3104,7 @@ static BOOL is_registered_type(LPCTSTR ext)
static
enum
FILE_TYPE
get_file_type
(
LPCTSTR
filename
)
{
LPCTSTR
ext
=
_tcsrchr
(
filename
,
'.'
);
LPCTSTR
ext
=
strrchrW
(
filename
,
'.'
);
if
(
!
ext
)
ext
=
sEmpty
;
...
...
@@ -3354,11 +3317,7 @@ static void draw_item(Pane* pane, LPDRAWITEMSTRUCT dis, Entry* entry, int calcWi
if
(
!
(
attrs
&
FILE_ATTRIBUTE_DIRECTORY
))
#endif
{
ULONGLONG
size
;
size
=
((
ULONGLONG
)
entry
->
data
.
nFileSizeHigh
<<
32
)
|
entry
->
data
.
nFileSizeLow
;
_stprintf
(
buffer
,
sLongNumFmt
,
size
);
format_longlong
(
buffer
,
((
ULONGLONG
)
entry
->
data
.
nFileSizeHigh
<<
32
)
|
entry
->
data
.
nFileSizeLow
);
if
(
calcWidthCol
==
-
1
)
output_number
(
pane
,
dis
,
col
,
buffer
);
...
...
@@ -3397,10 +3356,15 @@ static void draw_item(Pane* pane, LPDRAWITEMSTRUCT dis, Entry* entry, int calcWi
#ifndef _NO_EXTENSIONS
if
(
entry
->
bhfi_valid
)
{
ULONGLONG
index
=
((
ULONGLONG
)
entry
->
bhfi
.
nFileIndexHigh
<<
32
)
|
entry
->
bhfi
.
nFileIndexLow
;
if
(
visible_cols
&
COL_INDEX
)
{
_stprintf
(
buffer
,
sLongHexFmt
,
index
);
static
const
TCHAR
fmtlow
[]
=
{
'%'
,
'X'
,
0
};
static
const
TCHAR
fmthigh
[]
=
{
'%'
,
'X'
,
'%'
,
'0'
,
'8'
,
'X'
,
0
};
if
(
entry
->
bhfi
.
nFileIndexHigh
)
wsprintf
(
buffer
,
fmthigh
,
entry
->
bhfi
.
nFileIndexHigh
,
entry
->
bhfi
.
nFileIndexLow
);
else
wsprintf
(
buffer
,
fmtlow
,
entry
->
bhfi
.
nFileIndexLow
);
if
(
calcWidthCol
==
-
1
)
output_text
(
pane
,
dis
,
col
,
buffer
,
DT_RIGHT
);
...
...
programs/winefile/winefile.h
View file @
8f2a863f
...
...
@@ -150,11 +150,9 @@ extern WINEFILE_GLOBALS Globals;
#ifdef UNICODE
extern
void
_wsplitpath
(
const
WCHAR
*
path
,
WCHAR
*
drv
,
WCHAR
*
dir
,
WCHAR
*
name
,
WCHAR
*
ext
);
#define _tsplitpath _wsplitpath
#define _stprintf msvcrt_swprintf
#else
extern
void
_splitpath
(
const
CHAR
*
path
,
CHAR
*
drv
,
CHAR
*
dir
,
CHAR
*
name
,
CHAR
*
ext
);
#define _tsplitpath _splitpath
#define _stprintf sprintf
#endif
#else
...
...
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