This commit was manufactured by cvs2svn to create branch 'uc'.
[gnokii.git] / common / gsm-datetime.c
1 /*
2
3   G N O K I I
4
5   A Linux/Unix toolset and driver for Nokia mobile phones.
6
7   Released under the terms of the GNU GPL, see file COPYING for more details.
8
9 */
10
11 #include <string.h>\r
12 #include <time.h>\r
13 \r
14 #include "misc.h"\r
15 #include "gsm-datetime.h"\r
16 #include "gsm-common.h"\r
17
18 char DayOfWeekChar;
19
20 /* Based on article in Polish PC-Kurier 8/1998 page 104 */
21 /* Archive on http://www.pckurier.pl */
22 char *DayOfWeek (int year, int month, int day) {
23   int p,q,r,w;
24
25   p=(14-month) / 12;
26   q=month+12*p-2;
27   r=year-p;
28   w=(day+(31*q) / 12 + r + r / 4 - r / 100 + r / 400) % 7;
29   strcpy(&DayOfWeekChar,"");
30   switch (w) {
31     case 0: strcpy(&DayOfWeekChar,"Sun"); break;
32     case 1: strcpy(&DayOfWeekChar,"Mon"); break;
33     case 2: strcpy(&DayOfWeekChar,"Tue"); break;
34     case 3: strcpy(&DayOfWeekChar,"Wed"); break;
35     case 4: strcpy(&DayOfWeekChar,"Thu"); break;
36     case 5: strcpy(&DayOfWeekChar,"Fri"); break;
37     case 6: strcpy(&DayOfWeekChar,"Sat"); break;
38   }
39   return &DayOfWeekChar;
40 }\r
41
42 /* GetMachineDateTime ----------------------------------------------------------
43 Purpose:    Gets system date and time.
44 Use: -
45 Input:    -
46 Output:   date - System date in the format "aaaa-mm-gg".
47           time  - System time in the format "hh:mm:ss".
48 Return:  -
49 ----------------------------------------------------------------------------- */
50 void GetMachineDateTime( char nowdate[], char nowtime[] )\r
51 {\r
52   struct tm *now;\r
53   time_t nowh;\r
54 \r
55   nowh=time(NULL);\r
56   now=localtime(&nowh);\r
57 \r
58   /* I have 100 (for 2000) Year now :-) */\r
59   if (now->tm_year>99 && now->tm_year<1900) {\r
60     now->tm_year=now->tm_year+1900;\r
61   }\r
62 \r
63   sprintf(nowdate,"%04d-%02d-%02d",now->tm_year,now->tm_mon+1,now->tm_mday);
64   sprintf(nowtime, "%02d:%02d:%02d",now->tm_hour,now->tm_min,now->tm_sec);\r
65 \r
66 }\r
67 \r
68 void EncodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)\r
69 {\r
70   buffer[0] = datetime->Year / 256;\r
71   buffer[1] = datetime->Year % 256;\r
72   buffer[2] = datetime->Month;\r
73   buffer[3] = datetime->Day;\r
74 \r
75   buffer[4] = datetime->Hour;\r
76   buffer[5] = datetime->Minute;\r
77 }\r
78 \r
79 void DecodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)\r
80 {\r
81   datetime->Year = buffer[0] * 256 + buffer[1];\r
82   datetime->Month = buffer[2];\r
83   datetime->Day = buffer[3];\r
84 \r
85   datetime->Hour = buffer[4];\r
86   datetime->Minute = buffer[5];\r
87   datetime->Second = buffer[6];\r
88 }\r