IoObject *IoCertificate_asnTimeToDate(IoCertificate *self, ASN1_TIME *tm) { char *v; int gmt=0; int i; int y=0,M=0,d=0,h=0,m=0,s=0; i=tm->length; v=(char *)tm->data; if (i < 10) return IONIL(self); if (v[i-1] == 'Z') gmt=1; for (i=0; i<10; i++) if ((v[i] > '9') || (v[i] < '0')) return IONIL(self); y= (v[0]-'0')*10+(v[1]-'0'); if (y < 50) y+=100; M= (v[2]-'0')*10+(v[3]-'0'); if ((M > 12) || (M < 1)) return IONIL(self); d= (v[4]-'0')*10+(v[5]-'0'); h= (v[6]-'0')*10+(v[7]-'0'); m= (v[8]-'0')*10+(v[9]-'0'); if ( (v[10] >= '0') && (v[10] <= '9') && (v[11] >= '0') && (v[11] <= '9')) s= (v[10]-'0')*10+(v[11]-'0'); struct tm ctm; ctm.tm_sec = s; ctm.tm_min = m; ctm.tm_hour = h; ctm.tm_mday = d; ctm.tm_mon = M-1; ctm.tm_year = y; ctm.tm_gmtoff = 0; return IoDate_newWithTime_(IoObject_state(self), timegm(&ctm)); }
IO_METHOD(IoClutterEvent, getTime) { return IoDate_newWithTime_(IOSTATE, clutter_event_get_time(IOCEVENT(self))); }
IO_METHOD(IoClutter, currentEventTime) { return IoDate_newWithTime_(IOSTATE, clutter_get_current_event_time()); }