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
79118f35
Commit
79118f35
authored
Jun 08, 2015
by
Daniel Lehman
Committed by
Alexandre Julliard
Jun 10, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcp110: Add wide-char days and months to _LocInfo.
parent
1a4db7cd
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
115 additions
and
18 deletions
+115
-18
msvcp110.spec
dlls/msvcp110/msvcp110.spec
+6
-6
msvcp120.spec
dlls/msvcp120/msvcp120.spec
+6
-6
msvcp120_app.spec
dlls/msvcp120_app/msvcp120_app.spec
+6
-6
locale.c
dlls/msvcp90/locale.c
+92
-0
msvcp90.h
dlls/msvcp90/msvcp90.h
+5
-0
No files found.
dlls/msvcp110/msvcp110.spec
View file @
79118f35
...
...
@@ -1818,12 +1818,12 @@
@ cdecl -arch=arm ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAAXXZ(ptr) basic_streambuf_wchar__Unlock
@ thiscall -arch=i386 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAEXXZ(ptr) basic_streambuf_wchar__Unlock
@ cdecl -arch=win64 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ(ptr) basic_streambuf_wchar__Unlock
@
stub -arch=arm ?_W_Getdays@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386 ?_W_Getdays@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
@
stub -arch=arm ?_W_Getmonths@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386 ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
@
cdecl -arch=arm ?_W_Getdays@_Locinfo@std@@QBAPBGXZ(ptr) _Locinfo__W_Getdays
@
thiscall -arch=i386 ?_W_Getdays@_Locinfo@std@@QBEPBGXZ(ptr) _Locinfo__W_Getdays
@
cdecl -arch=win64 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ(ptr) _Locinfo__W_Getdays
@
cdecl -arch=arm ?_W_Getmonths@_Locinfo@std@@QBAPBGXZ(ptr) _Locinfo__W_Getmonths
@
thiscall -arch=i386 ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ(ptr) _Locinfo__W_Getmonths
@
cdecl -arch=win64 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ(ptr) _Locinfo__W_Getmonths
@ stub -arch=arm ?_W_Gettnames@_Locinfo@std@@QBA?AV_Timevec@2@XZ
@ stub -arch=i386 ?_W_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ
@ stub -arch=win64 ?_W_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ
...
...
dlls/msvcp120/msvcp120.spec
View file @
79118f35
...
...
@@ -1779,12 +1779,12 @@
@ cdecl -arch=arm ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAAXXZ(ptr) basic_streambuf_wchar__Unlock
@ thiscall -arch=i386 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAEXXZ(ptr) basic_streambuf_wchar__Unlock
@ cdecl -arch=win64 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ(ptr) basic_streambuf_wchar__Unlock
@
stub -arch=arm ?_W_Getdays@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386 ?_W_Getdays@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
@
stub -arch=arm ?_W_Getmonths@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386 ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
@
cdecl -arch=arm ?_W_Getdays@_Locinfo@std@@QBAPBGXZ(ptr) _Locinfo__W_Getdays
@
thiscall -arch=i386 ?_W_Getdays@_Locinfo@std@@QBEPBGXZ(ptr) _Locinfo__W_Getdays
@
cdecl -arch=win64 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ(ptr) _Locinfo__W_Getdays
@
cdecl -arch=arm ?_W_Getmonths@_Locinfo@std@@QBAPBGXZ(ptr) _Locinfo__W_Getmonths
@
thiscall -arch=i386 ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ(ptr) _Locinfo__W_Getmonths
@
cdecl -arch=win64 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ(ptr) _Locinfo__W_Getmonths
@ stub -arch=arm ?_W_Gettnames@_Locinfo@std@@QBA?AV_Timevec@2@XZ
@ stub -arch=i386 ?_W_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ
@ stub -arch=win64 ?_W_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ
...
...
dlls/msvcp120_app/msvcp120_app.spec
View file @
79118f35
...
...
@@ -1779,12 +1779,12 @@
@ cdecl -arch=arm ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAAXXZ(ptr) msvcp120.?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAAXXZ
@ thiscall -arch=i386 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAEXXZ(ptr) msvcp120.?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAEXXZ
@ cdecl -arch=win64 ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ(ptr) msvcp120.?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAAXXZ
@
stub -arch=arm
?_W_Getdays@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386
?_W_Getdays@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64
?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
@
stub -arch=arm
?_W_Getmonths@_Locinfo@std@@QBAPBGXZ
@
stub -arch=i386
?_W_Getmonths@_Locinfo@std@@QBEPBGXZ
@
stub -arch=win64
?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
@
cdecl -arch=arm ?_W_Getdays@_Locinfo@std@@QBAPBGXZ(ptr) msvcp120.
?_W_Getdays@_Locinfo@std@@QBAPBGXZ
@
thiscall -arch=i386 ?_W_Getdays@_Locinfo@std@@QBEPBGXZ(ptr) msvcp120.
?_W_Getdays@_Locinfo@std@@QBEPBGXZ
@
cdecl -arch=win64 ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ(ptr) msvcp120.
?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ
@
cdecl -arch=arm ?_W_Getmonths@_Locinfo@std@@QBAPBGXZ(ptr) msvcp120.
?_W_Getmonths@_Locinfo@std@@QBAPBGXZ
@
thiscall -arch=i386 ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ(ptr) msvcp120.
?_W_Getmonths@_Locinfo@std@@QBEPBGXZ
@
cdecl -arch=win64 ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ(ptr) msvcp120.
?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ
@ stub -arch=arm ?_W_Gettnames@_Locinfo@std@@QBA?AV_Timevec@2@XZ
@ stub -arch=i386 ?_W_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ
@ stub -arch=win64 ?_W_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ
...
...
dlls/msvcp90/locale.c
View file @
79118f35
...
...
@@ -48,7 +48,9 @@ typedef enum {
}
dateorder
;
char
*
__cdecl
_Getdays
(
void
);
wchar_t
*
__cdecl
_W_Getdays
(
void
);
char
*
__cdecl
_Getmonths
(
void
);
wchar_t
*
__cdecl
_W_Getmonths
(
void
);
void
*
__cdecl
_Gettnames
(
void
);
unsigned
int
__cdecl
___lc_codepage_func
(
void
);
int
__cdecl
___lc_collate_cp_func
(
void
);
...
...
@@ -86,6 +88,12 @@ LCID* __cdecl ___lc_handle_func(void);
#define locale_string_char_dtor(this) _Yarn_char_dtor(this)
#define locale_string_char_c_str(this) _Yarn_char_c_str(this)
#define locale_string_char_assign(this,assign) _Yarn_char_op_assign(this,assign)
#define locale_string_wchar _Yarn_wchar
#define locale_string_wchar_ctor(this) _Yarn_wchar_ctor(this)
#define locale_string_wchar_ctor_cstr(this,str) _Yarn_wchar_ctor(this); _Yarn_wchar_op_assign_cstr(this,str)
#define locale_string_wchar_dtor(this) _Yarn_wchar_dtor(this)
#define locale_string_wchar_c_str(this) _Yarn_wchar__C_str(this)
#endif
typedef
int
category
;
...
...
@@ -111,6 +119,10 @@ typedef struct {
_Lockit
lock
;
locale_string
days
;
locale_string
months
;
#if _MSVCP_VER >= 110
locale_string_wchar
wdays
;
locale_string_wchar
wmonths
;
#endif
locale_string
oldlocname
;
locale_string
newlocname
;
}
_Locinfo
;
...
...
@@ -502,6 +514,9 @@ void* __thiscall _Timevec__Getptr(_Timevec *this)
_Locinfo
*
__cdecl
_Locinfo__Locinfo_ctor_cat_cstr
(
_Locinfo
*
locinfo
,
int
category
,
const
char
*
locstr
)
{
const
char
*
locale
=
NULL
;
#if _MSVCP_VER >= 110
static
const
wchar_t
empty
[]
=
{
'\0'
};
#endif
/* This function is probably modifying more global objects */
FIXME
(
"(%p %d %s) semi-stub
\n
"
,
locinfo
,
category
,
locstr
);
...
...
@@ -512,6 +527,10 @@ _Locinfo* __cdecl _Locinfo__Locinfo_ctor_cat_cstr(_Locinfo *locinfo, int categor
_Lockit_ctor_locktype
(
&
locinfo
->
lock
,
_LOCK_LOCALE
);
locale_string_char_ctor_cstr
(
&
locinfo
->
days
,
""
);
locale_string_char_ctor_cstr
(
&
locinfo
->
months
,
""
);
#if _MSVCP_VER >= 110
locale_string_wchar_ctor_cstr
(
&
locinfo
->
wdays
,
empty
);
locale_string_wchar_ctor_cstr
(
&
locinfo
->
wmonths
,
empty
);
#endif
locale_string_char_ctor_cstr
(
&
locinfo
->
oldlocname
,
setlocale
(
LC_ALL
,
NULL
));
if
(
category
)
...
...
@@ -574,6 +593,10 @@ void __cdecl _Locinfo__Locinfo_dtor(_Locinfo *locinfo)
setlocale
(
LC_ALL
,
locale_string_char_c_str
(
&
locinfo
->
oldlocname
));
locale_string_char_dtor
(
&
locinfo
->
days
);
locale_string_char_dtor
(
&
locinfo
->
months
);
#if _MSVCP_VER >= 110
locale_string_wchar_dtor
(
&
locinfo
->
wdays
);
locale_string_wchar_dtor
(
&
locinfo
->
wmonths
);
#endif
locale_string_char_dtor
(
&
locinfo
->
oldlocname
);
locale_string_char_dtor
(
&
locinfo
->
newlocname
);
_Lockit_dtor
(
&
locinfo
->
lock
);
...
...
@@ -778,6 +801,75 @@ const char* __thiscall _Locinfo__Getdays(_Locinfo *this)
return
ret
;
}
#if _MSVCP_VER >= 110
/* ?_W_Getdays@_Locinfo@std@@QBEPBGXZ */
/* ?_W_Getdays@_Locinfo@std@@QEBAPEBGXZ */
DEFINE_THISCALL_WRAPPER
(
_Locinfo__W_Getdays
,
4
)
const
wchar_t
*
__thiscall
_Locinfo__W_Getdays
(
_Locinfo
*
this
)
{
static
const
wchar_t
defdays
[]
=
{
':'
,
'S'
,
'u'
,
'n'
,
':'
,
'S'
,
'u'
,
'n'
,
'd'
,
'a'
,
'y'
,
':'
,
'M'
,
'o'
,
'n'
,
':'
,
'M'
,
'o'
,
'n'
,
'd'
,
'a'
,
'y'
,
':'
,
'T'
,
'u'
,
'e'
,
':'
,
'T'
,
'u'
,
'e'
,
's'
,
'd'
,
'a'
,
'y'
,
':'
,
'W'
,
'e'
,
'd'
,
':'
,
'W'
,
'e'
,
'd'
,
'n'
,
'e'
,
's'
,
'd'
,
'a'
,
'y'
,
':'
,
'T'
,
'h'
,
'u'
,
':'
,
'T'
,
'h'
,
'u'
,
'r'
,
's'
,
'd'
,
'a'
,
'y'
,
':'
,
'F'
,
'r'
,
'i'
,
':'
,
'F'
,
'r'
,
'i'
,
'd'
,
'a'
,
'y'
,
':'
,
'S'
,
'a'
,
't'
,
':'
,
'S'
,
'a'
,
't'
,
'u'
,
'r'
,
'd'
,
'a'
,
'y'
};
wchar_t
*
wdays
=
_W_Getdays
();
const
wchar_t
*
ret
;
TRACE
(
"(%p)
\n
"
,
this
);
if
(
wdays
)
{
locale_string_wchar_dtor
(
&
this
->
wdays
);
locale_string_wchar_ctor_cstr
(
&
this
->
wdays
,
wdays
);
free
(
wdays
);
}
ret
=
locale_string_wchar_c_str
(
&
this
->
wdays
);
if
(
!
ret
[
0
])
ret
=
defdays
;
return
ret
;
}
/* ?_W_Getmonths@_Locinfo@std@@QBEPBGXZ */
/* ?_W_Getmonths@_Locinfo@std@@QEBAPEBGXZ */
DEFINE_THISCALL_WRAPPER
(
_Locinfo__W_Getmonths
,
4
)
const
wchar_t
*
__thiscall
_Locinfo__W_Getmonths
(
_Locinfo
*
this
)
{
static
const
wchar_t
defmonths
[]
=
{
':'
,
'J'
,
'a'
,
'n'
,
':'
,
'J'
,
'a'
,
'n'
,
'u'
,
'a'
,
'r'
,
'y'
,
':'
,
'F'
,
'e'
,
'b'
,
':'
,
'F'
,
'e'
,
'b'
,
'r'
,
'u'
,
'a'
,
'r'
,
'y'
,
':'
,
'M'
,
'a'
,
'r'
,
':'
,
'M'
,
'a'
,
'r'
,
'c'
,
'h'
,
':'
,
'A'
,
'p'
,
'r'
,
':'
,
'A'
,
'p'
,
'r'
,
'i'
,
'l'
,
':'
,
'M'
,
'a'
,
'y'
,
':'
,
'M'
,
'a'
,
'y'
,
':'
,
'J'
,
'u'
,
'n'
,
':'
,
'J'
,
'u'
,
'n'
,
'e'
,
':'
,
'J'
,
'u'
,
'l'
,
':'
,
'J'
,
'u'
,
'l'
,
'y'
,
':'
,
'A'
,
'u'
,
'g'
,
':'
,
'A'
,
'u'
,
'g'
,
'u'
,
's'
,
't'
,
':'
,
'S'
,
'e'
,
'p'
,
':'
,
'S'
,
'e'
,
'p'
,
't'
,
'e'
,
'm'
,
'b'
,
'e'
,
'r'
,
':'
,
'O'
,
'c'
,
't'
,
':'
,
'O'
,
'c'
,
't'
,
'o'
,
'b'
,
'e'
,
'r'
,
':'
,
'N'
,
'o'
,
'v'
,
':'
,
'N'
,
'o'
,
'v'
,
'e'
,
'm'
,
'b'
,
'e'
,
'r'
,
':'
,
'D'
,
'e'
,
'c'
,
':'
,
'D'
,
'e'
,
'c'
,
'e'
,
'm'
,
'b'
,
'e'
,
'r'
};
wchar_t
*
wmonths
=
_W_Getmonths
();
const
wchar_t
*
ret
;
TRACE
(
"(%p)
\n
"
,
this
);
if
(
wmonths
)
{
locale_string_wchar_dtor
(
&
this
->
wmonths
);
locale_string_wchar_ctor_cstr
(
&
this
->
wmonths
,
wmonths
);
free
(
wmonths
);
}
ret
=
locale_string_wchar_c_str
(
&
this
->
wmonths
);
if
(
!
ret
[
0
])
ret
=
defmonths
;
return
ret
;
}
#endif
/* ?_Getmonths@_Locinfo@std@@QBEPBDXZ */
/* ?_Getmonths@_Locinfo@std@@QEBAPEBDXZ */
DEFINE_THISCALL_WRAPPER
(
_Locinfo__Getmonths
,
4
)
...
...
dlls/msvcp90/msvcp90.h
View file @
79118f35
...
...
@@ -154,6 +154,11 @@ typedef struct
wchar_t
null_str
;
}
_Yarn_wchar
;
_Yarn_wchar
*
__thiscall
_Yarn_wchar_ctor
(
_Yarn_wchar
*
);
const
wchar_t
*
__thiscall
_Yarn_wchar__C_str
(
const
_Yarn_wchar
*
);
void
__thiscall
_Yarn_wchar_dtor
(
_Yarn_wchar
*
);
_Yarn_wchar
*
__thiscall
_Yarn_wchar_op_assign_cstr
(
_Yarn_wchar
*
,
const
wchar_t
*
);
/* class locale::facet */
typedef
struct
{
const
vtable_ptr
*
vtable
;
...
...
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