summaryrefslogtreecommitdiff
path: root/navit/util.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-03-10 16:31:08 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-03-10 16:31:08 +0000
commitec5c303cfcf266a61db576b340d84e715ae9b387 (patch)
treee09cd783aa4ea58408a512159f1f70ecbda3fdc6 /navit/util.c
parenta6eb96537cb4f3b62c7432d3cf1a541fc8d82384 (diff)
downloadnavit-ec5c303cfcf266a61db576b340d84e715ae9b387.tar.gz
Fix:Core:Avoid strptime (not available on win32/wince)
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2094 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/util.c')
-rw-r--r--navit/util.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/navit/util.c b/navit/util.c
index 9fb374f2b..6a8e71040 100644
--- a/navit/util.c
+++ b/navit/util.c
@@ -19,6 +19,7 @@
#include <glib.h>
#include <ctype.h>
+#include <stdlib.h>
#include <stdarg.h>
#include "util.h"
@@ -253,3 +254,30 @@ char * newSysString(const char *toconvert)
}
#endif
#endif
+
+unsigned int
+iso8601_to_secs(char *iso8601)
+{
+ int a,b,d,val[6],i=0;
+ char *start=iso8601,*pos=iso8601;
+ while (*pos && i < 6) {
+ if (*pos < '0' || *pos > '9') {
+ val[i++]=atoi(start);
+ pos++;
+ start=pos;
+ }
+ pos++;
+ }
+
+ a=val[0]/100;
+ b=2-a+a/4;
+
+ if (val[1] < 2) {
+ val[0]--;
+ val[1]+=12;
+ }
+
+ d=1461*(val[0]+4716)/4+306001*(val[1]+1)/10000+val[2]+b-2442112;
+
+ return ((d*24+val[3])*60+val[4])*60+val[5];
+}