Daniel Lehman : msvcrt: Add _W_Getdays.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jun 10 10:09:18 CDT 2015


Module: wine
Branch: master
Commit: bc1eaf7a0fbc7ee0aa58fe603b42c225dea11249
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bc1eaf7a0fbc7ee0aa58fe603b42c225dea11249

Author: Daniel Lehman <dlehman at esri.com>
Date:   Mon Jun  8 16:24:00 2015 -0700

msvcrt: Add _W_Getdays.

---

 dlls/msvcr110/msvcr110.spec         |  2 +-
 dlls/msvcr120/msvcr120.spec         |  2 +-
 dlls/msvcr120_app/msvcr120_app.spec |  2 +-
 dlls/msvcrt/locale.c                | 36 +++++++++++++++++++++++++++++++++++-
 dlls/msvcrt/msvcrt.h                | 15 ++++++++++++++-
 5 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index e99df42..2438b5e 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -864,7 +864,7 @@
 @ stub -arch=win64 _SetThrowImageBase
 @ cdecl _Strftime(str long str ptr ptr)
 @ stub _Unlock_shared_ptr_spin_lock
-@ stub _W_Getdays
+@ cdecl _W_Getdays()
 @ stub _W_Getmonths
 @ stub _W_Gettnames
 @ stub _Wcsftime
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 2beb51b..dbbf05f 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -846,7 +846,7 @@
 @ stub -arch=win64 _SetImageBase
 @ stub -arch=win64 _SetThrowImageBase
 @ cdecl _Strftime(str long str ptr ptr)
-@ stub _W_Getdays
+@ cdecl _W_Getdays()
 @ stub _W_Getmonths
 @ stub _W_Gettnames
 @ stub _Wcsftime
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index e262aa9..6f6a980 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -842,7 +842,7 @@
 @ stub -arch=win64 _SetImageBase
 @ stub -arch=win64 _SetThrowImageBase
 @ cdecl _Strftime(str long str ptr ptr) msvcr120._Strftime
-@ stub _W_Getdays
+@ cdecl _W_Getdays() msvcr120._W_Getdays
 @ stub _W_Getmonths
 @ stub _W_Gettnames
 @ stub _Wcsftime
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index 2b1efc6..8a5c110 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -35,6 +35,7 @@
 #include "mtdll.h"
 
 #include "wine/debug.h"
+#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
 
@@ -440,6 +441,39 @@ char* CDECL _Getdays(void)
 }
 
 /*********************************************************************
+ *		_W_Getdays (MSVCRT.@)
+ */
+MSVCRT_wchar_t* CDECL _W_Getdays(void)
+{
+    MSVCRT___lc_time_data *cur = get_locinfo()->lc_time_curr;
+    MSVCRT_wchar_t *out;
+    int i, len, size;
+
+    TRACE("\n");
+
+    size = cur->wstr.names.short_mon[0]-cur->wstr.names.short_wday[0];
+    out = MSVCRT_malloc((size+1)*sizeof(*out));
+    if(!out)
+        return NULL;
+
+    size = 0;
+    for(i=0; i<7; i++) {
+        out[size++] = ':';
+        len = strlenW(cur->wstr.names.short_wday[i]);
+        memcpy(&out[size], cur->wstr.names.short_wday[i], len*sizeof(*out));
+        size += len;
+
+        out[size++] = ':';
+        len = strlenW(cur->wstr.names.wday[i]);
+        memcpy(&out[size], cur->wstr.names.wday[i], len*sizeof(*out));
+        size += len;
+    }
+    out[size] = '\0';
+
+    return out;
+}
+
+/*********************************************************************
  *		_Getmonths (MSVCRT.@)
  */
 char* CDECL _Getmonths(void)
@@ -1381,7 +1415,7 @@ MSVCRT__locale_t CDECL MSVCRT__create_locale(int category, const char *locale)
         }
     }
     for(i=0; i<sizeof(time_data)/sizeof(time_data[0]); i++) {
-        loc->locinfo->lc_time_curr->wstr[i] = (MSVCRT_wchar_t*)&loc->locinfo->lc_time_curr->data[ret];
+        loc->locinfo->lc_time_curr->wstr.wstr[i] = (MSVCRT_wchar_t*)&loc->locinfo->lc_time_curr->data[ret];
         if(time_data[i]==LOCALE_SSHORTDATE && !lcid[MSVCRT_LC_TIME]) {
             memcpy(&loc->locinfo->lc_time_curr->data[ret], cloc_short_dateW, sizeof(cloc_short_dateW));
             ret += sizeof(cloc_short_dateW);
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index 806c4bf..e11400b 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -134,7 +134,20 @@ typedef struct {
     } str;
     LCID lcid;
     int  unk[2];
-    MSVCRT_wchar_t *wstr[43];
+    union {
+        MSVCRT_wchar_t *wstr[43];
+        struct {
+            MSVCRT_wchar_t *short_wday[7];
+            MSVCRT_wchar_t *wday[7];
+            MSVCRT_wchar_t *short_mon[12];
+            MSVCRT_wchar_t *mon[12];
+            MSVCRT_wchar_t *am;
+            MSVCRT_wchar_t *pm;
+            MSVCRT_wchar_t *short_date;
+            MSVCRT_wchar_t *date;
+            MSVCRT_wchar_t *time;
+        } names;
+    } wstr;
     char data[1];
 } MSVCRT___lc_time_data;
 




More information about the wine-cvs mailing list