Handle WM_CHARs and pass them to TREEVIEW_ProcessLetterKeys. See also
[wine] / dlls / msvcrt / time.c
1 /*
2  * msvcrt.dll date/time functions
3  *
4  * Copyright 1996,1998 Marcus Meissner
5  * Copyright 1996 Jukka Iivonen
6  * Copyright 1997,2000 Uwe Bonnes
7  * Copyright 2000 Jon Griffiths
8  */
9 #include <time.h>
10 #include <sys/times.h>
11 #include "msvcrt.h"
12
13 DEFAULT_DEBUG_CHANNEL(msvcrt);
14
15 typedef struct __MSVCRT_timeb
16 {
17   time_t  time;
18   unsigned short  millitm;
19   short   timezone;
20   short   dstflag;
21 } MSVCRT_timeb;
22
23
24 /* INTERNAL: Return formatted current time/date */
25 char * MSVCRT_get_current_time(char * out, const char * format)
26 {
27   static const time_t bad_time = (time_t)-1;
28   time_t t;
29   struct tm *_tm = NULL;
30   char *retval = NULL;
31
32   if (time(&t) != bad_time && (_tm = localtime(&t)) &&
33       strftime(out,9,format,_tm) == 8)
34     retval = out;
35   if (_tm)
36     MSVCRT_free(_tm);
37   return retval;
38 }
39
40 /**********************************************************************
41  *              _strdate (MSVCRT.@)
42  */
43 char * __cdecl MSVCRT__strdate (char * date)
44 {
45   return MSVCRT_get_current_time(date,"%m/%d/%y");
46 }
47
48 /*********************************************************************
49  *              _strtime (MSVCRT.@)
50  */
51 char * __cdecl MSVCRT__strtime (char * date)
52 {
53   return MSVCRT_get_current_time(date,"%H:%M:%S");
54 }
55
56 /*********************************************************************
57  *              clock (MSVCRT.@)
58  */
59 clock_t __cdecl MSVCRT_clock(void)
60 {
61   struct tms alltimes;
62   clock_t res;
63
64   times(&alltimes);
65   res = alltimes.tms_utime + alltimes.tms_stime +
66         alltimes.tms_cutime + alltimes.tms_cstime;
67   /* FIXME: We need some symbolic representation for CLOCKS_PER_SEC,
68    *  10 holds only for Windows/Linux_i86)
69    */
70   return 10*res;
71 }
72
73 /*********************************************************************
74  *              difftime (MSVCRT.@)
75  */
76 double __cdecl MSVCRT_difftime (time_t time1, time_t time2)
77 {
78     return (double)(time1 - time2);
79 }
80
81 /*********************************************************************
82  *              time (MSVCRT.@)
83  */
84 time_t __cdecl MSVCRT_time(time_t *buf)
85 {
86   time_t curtime = time(NULL);
87   return buf ? *buf = curtime : curtime;
88 }
89
90 /*********************************************************************
91  *              _ftime (MSVCRT.@)
92  */
93 void __cdecl MSVCRT__ftime (MSVCRT_timeb *buf)
94 {
95   buf->time = MSVCRT_time(NULL);
96   buf->millitm = 0; /* FIXME */
97   buf->timezone = 0;
98   buf->dstflag = 0;
99 }