Conditional (enabled) compilation of Nokia Authentication phase (not needed?)
[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 "config.h"
12
13 #include <string.h>
14 #include <time.h>
15
16 #include "misc.h"
17 #include "gsm-datetime.h"
18 #include "gsm-common.h"
19
20 static char DayOfWeekChar;
21
22 /* Based on article in Polish PC-Kurier 8/1998 page 104 */
23 /* Archive on http://www.pckurier.pl */
24 char *DayOfWeek (int year, int month, int day) {
25   int p,q,r,w;
26
27   p=(14-month) / 12;
28   q=month+12*p-2;
29   r=year-p;
30   w=(day+(31*q) / 12 + r + r / 4 - r / 100 + r / 400) % 7;
31   strcpy(&DayOfWeekChar,"");
32   switch (w) {
33     case 0: strcpy(&DayOfWeekChar,"Sun"); break;
34     case 1: strcpy(&DayOfWeekChar,"Mon"); break;
35     case 2: strcpy(&DayOfWeekChar,"Tue"); break;
36     case 3: strcpy(&DayOfWeekChar,"Wed"); break;
37     case 4: strcpy(&DayOfWeekChar,"Thu"); break;
38     case 5: strcpy(&DayOfWeekChar,"Fri"); break;
39     case 6: strcpy(&DayOfWeekChar,"Sat"); break;
40   }
41   return &DayOfWeekChar;
42 }
43
44 #ifndef UCLINUX
45
46 /* GetMachineDateTime ----------------------------------------------------------
47 Purpose:    Gets system date and time.
48 Use: -
49 Input:    -
50 Output:   date - System date in the format "aaaa-mm-gg".
51           time  - System time in the format "hh:mm:ss".
52 Return:  -
53 ----------------------------------------------------------------------------- */
54 static void GetMachineDateTime( char nowdate[], char nowtime[] )
55 {
56   struct tm *now;
57   time_t nowh;
58
59   nowh=time(NULL);
60   now=localtime(&nowh);
61
62   /* I have 100 (for 2000) Year now :-) */
63   if (now->tm_year>99 && now->tm_year<1900) {
64     now->tm_year=now->tm_year+1900;
65   }
66
67   sprintf(nowdate,"%04d-%02d-%02d",now->tm_year,now->tm_mon+1,now->tm_mday);
68   sprintf(nowtime, "%02d:%02d:%02d",now->tm_hour,now->tm_min,now->tm_sec);
69
70 }
71
72 void EncodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)
73 {
74   buffer[0] = datetime->Year / 256;
75   buffer[1] = datetime->Year % 256;
76   buffer[2] = datetime->Month;
77   buffer[3] = datetime->Day;
78
79   buffer[4] = datetime->Hour;
80   buffer[5] = datetime->Minute;
81 }
82
83 #endif /* UCLINUX */
84
85 void DecodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)
86 {
87   datetime->Year = buffer[0] * 256 + buffer[1];
88   datetime->Month = buffer[2];
89   datetime->Day = buffer[3];
90
91   datetime->Hour = buffer[4];
92   datetime->Minute = buffer[5];
93   datetime->Second = buffer[6];
94 }