http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / common / gsm-datetime.c
diff --git a/common/gsm-datetime.c b/common/gsm-datetime.c
new file mode 100644 (file)
index 0000000..589dcb3
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+
+  G N O K I I
+
+  A Linux/Unix toolset and driver for Nokia mobile phones.
+
+  Released under the terms of the GNU GPL, see file COPYING for more details.
+
+*/
+
+#include <string.h>\r
+#include <time.h>\r
+\r
+#include "misc.h"\r
+#include "gsm-datetime.h"\r
+#include "gsm-common.h"\r
+
+char DayOfWeekChar;
+
+/* Based on article in Polish PC-Kurier 8/1998 page 104 */
+/* Archive on http://www.pckurier.pl */
+char *DayOfWeek (int year, int month, int day) {
+  int p,q,r,w;
+
+  p=(14-month) / 12;
+  q=month+12*p-2;
+  r=year-p;
+  w=(day+(31*q) / 12 + r + r / 4 - r / 100 + r / 400) % 7;
+  strcpy(&DayOfWeekChar,"");
+  switch (w) {
+    case 0: strcpy(&DayOfWeekChar,"Sun"); break;
+    case 1: strcpy(&DayOfWeekChar,"Mon"); break;
+    case 2: strcpy(&DayOfWeekChar,"Tue"); break;
+    case 3: strcpy(&DayOfWeekChar,"Wed"); break;
+    case 4: strcpy(&DayOfWeekChar,"Thu"); break;
+    case 5: strcpy(&DayOfWeekChar,"Fri"); break;
+    case 6: strcpy(&DayOfWeekChar,"Sat"); break;
+  }
+  return &DayOfWeekChar;
+}\r
+
+/* GetMachineDateTime ----------------------------------------------------------
+Purpose:    Gets system date and time.
+Use: -
+Input:    -
+Output:   date - System date in the format "aaaa-mm-gg".
+          time  - System time in the format "hh:mm:ss".
+Return:  -
+----------------------------------------------------------------------------- */
+void GetMachineDateTime( char nowdate[], char nowtime[] )\r
+{\r
+  struct tm *now;\r
+  time_t nowh;\r
+\r
+  nowh=time(NULL);\r
+  now=localtime(&nowh);\r
+\r
+  /* I have 100 (for 2000) Year now :-) */\r
+  if (now->tm_year>99 && now->tm_year<1900) {\r
+    now->tm_year=now->tm_year+1900;\r
+  }\r
+\r
+  sprintf(nowdate,"%04d-%02d-%02d",now->tm_year,now->tm_mon+1,now->tm_mday);
+  sprintf(nowtime, "%02d:%02d:%02d",now->tm_hour,now->tm_min,now->tm_sec);\r
+\r
+}\r
+\r
+void EncodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)\r
+{\r
+  buffer[0] = datetime->Year / 256;\r
+  buffer[1] = datetime->Year % 256;\r
+  buffer[2] = datetime->Month;\r
+  buffer[3] = datetime->Day;\r
+\r
+  buffer[4] = datetime->Hour;\r
+  buffer[5] = datetime->Minute;\r
+}\r
+\r
+void DecodeDateTime(unsigned char* buffer, GSM_DateTime *datetime)\r
+{\r
+  datetime->Year = buffer[0] * 256 + buffer[1];\r
+  datetime->Month = buffer[2];\r
+  datetime->Day = buffer[3];\r
+\r
+  datetime->Hour = buffer[4];\r
+  datetime->Minute = buffer[5];\r
+  datetime->Second = buffer[6];\r
+}\r