summaryrefslogtreecommitdiff
path: root/src/KM_util.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2007-10-20 19:43:18 +0000
committerjhurst <>2007-10-20 19:43:18 +0000
commit70bbc088b0b8f079c41b07141bec35447be469c5 (patch)
treee49dfeead6921dd637608ee40cbaca8d25c80448 /src/KM_util.cpp
parentf457a7ea8fa446b71e7802a20f575ae5bcc9926b (diff)
3-D love
Diffstat (limited to 'src/KM_util.cpp')
-rwxr-xr-xsrc/KM_util.cpp41
1 files changed, 26 insertions, 15 deletions
diff --git a/src/KM_util.cpp b/src/KM_util.cpp
index 6dd3d33..f9a88cd 100755
--- a/src/KM_util.cpp
+++ b/src/KM_util.cpp
@@ -849,6 +849,7 @@ Kumu::Timestamp::DecodeString(const char* datestr)
|| ! ( isdigit(datestr[8]) && isdigit(datestr[9]) ) )
return false;
+ ui32_t char_count = 10;
TmpStamp.Year = atoi(datestr);
TmpStamp.Month = atoi(datestr + 5);
TmpStamp.Day = atoi(datestr + 8);
@@ -861,6 +862,7 @@ Kumu::Timestamp::DecodeString(const char* datestr)
|| ! ( isdigit(datestr[14]) && isdigit(datestr[15]) ) )
return false;
+ char_count += 6;
TmpStamp.Hour = atoi(datestr + 11);
TmpStamp.Minute = atoi(datestr + 14);
@@ -869,28 +871,37 @@ Kumu::Timestamp::DecodeString(const char* datestr)
if ( ! ( isdigit(datestr[17]) && isdigit(datestr[18]) ) )
return false;
+ char_count += 3;
TmpStamp.Second = atoi(datestr + 17);
}
- }
- if ( datestr[19] == '-' || datestr[19] == '+' )
- {
- if ( ! ( isdigit(datestr[20]) && isdigit(datestr[21]) )
- || datestr[22] != ':'
- || ! ( isdigit(datestr[23]) && isdigit(datestr[24]) ) )
- return false;
+ if ( datestr[19] == '-' || datestr[19] == '+' )
+ {
+ if ( ! ( isdigit(datestr[20]) && isdigit(datestr[21]) )
+ || datestr[22] != ':'
+ || ! ( isdigit(datestr[23]) && isdigit(datestr[24]) ) )
+ return false;
- ui32_t TZ_hh = atoi(datestr + 20);
- ui32_t TZ_mm = atoi(datestr + 23);
+ char_count += 6;
+ ui32_t TZ_hh = atoi(datestr + 20);
+ ui32_t TZ_mm = atoi(datestr + 23);
- if ( TZ_mm != 0 )
- DefaultLogSink().Error("Ignoring minutes in timezone offset: %u\n", TZ_mm);
+ if ( TZ_mm != 0 )
+ DefaultLogSink().Warn("Ignoring minutes in timezone offset: %u\n", TZ_mm);
+
+ if ( TZ_hh > 12 )
+ return false;
- if ( TZ_hh > 12 )
- return false;
+ else
+ AddHours( (datestr[19] == '-' ? (-TZ_hh) : TZ_hh));
+ }
+ }
- else
- AddHours( (datestr[19] == '-' ? (-TZ_hh) : TZ_hh));
+ if ( datestr[char_count] != 0 )
+ {
+ DefaultLogSink().Error("Unexpected extra characters in string: %s (%ld)\n",
+ datestr, char_count);
+ return false;
}
#ifdef KM_WIN32