diff options
| author | jhurst <jhurst@cinecert.com> | 2007-10-20 19:43:18 +0000 |
|---|---|---|
| committer | jhurst <> | 2007-10-20 19:43:18 +0000 |
| commit | 70bbc088b0b8f079c41b07141bec35447be469c5 (patch) | |
| tree | e49dfeead6921dd637608ee40cbaca8d25c80448 /src/KM_util.cpp | |
| parent | f457a7ea8fa446b71e7802a20f575ae5bcc9926b (diff) | |
3-D love
Diffstat (limited to 'src/KM_util.cpp')
| -rwxr-xr-x | src/KM_util.cpp | 41 |
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 |
