* icaltime_from_webform_date_only() now does that too. The edge case doesn't apply...
authorArt Cancro <ajc@citadel.org>
Mon, 5 Jan 2009 21:10:21 +0000 (21:10 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 5 Jan 2009 21:10:21 +0000 (21:10 +0000)
webcit/calendar_tools.c

index 334e6a7d313186b3e033c9c7c004d2a83271d809..b595d74a50fbdc8d6e961937fd8b22cc0feb138f 100644 (file)
@@ -123,6 +123,8 @@ void display_icaltimetype_as_webform(struct icaltimetype *t, char *prefix, int d
 void icaltime_from_webform(struct icaltimetype *t, char *prefix) {
        char vname[32];
 
+       if (!t) return;
+
        /* Stuff with zero values */
        memset(t, 0, sizeof(struct icaltimetype));
 
@@ -139,6 +141,7 @@ void icaltime_from_webform(struct icaltimetype *t, char *prefix) {
 
        /* time zone is set to the default zone for this server */
        t->is_utc = 0;
+       t->is_date = 0;
        t->zone = get_default_icaltimezone();
 }
 
@@ -147,18 +150,17 @@ void icaltime_from_webform(struct icaltimetype *t, char *prefix) {
  * Get date (no time) from a web form and convert it into an icaltimetype struct.
  */
 void icaltime_from_webform_dateonly(struct icaltimetype *t, char *prefix) {
-       struct tm tm;
-       time_t tm_t;
-       struct icaltimetype t2;         
-
-       /* Stuff tm with zero values */
-       memset(&tm, 0, sizeof(struct tm));
-
-       /* Convert from string to icaltimetype */
-       strptime((char *)BSTR(prefix), "%Y-%m-%d", &tm);
-       tm_t = mktime(&tm);
-       t2 = icaltime_from_timet(tm_t, 1);
-       memcpy(t, &t2, sizeof(struct icaltimetype));
+       if (!t) return;
+
+       /* Stuff with zero values */
+       memset(t, 0, sizeof(struct icaltimetype));
+
+       /* Get the year/month/date all in one shot -- it will be in ISO YYYY-MM-DD format */
+       sscanf((char*)BSTR(prefix), "%04d-%02d-%02d", &t->year, &t->month, &t->day);
+
+       /* time zone is set to the default zone for this server */
+       t->is_utc = 1;
+       t->is_date = 1;
 }