On Friday, March 31, 2006 09:49:24 AM -0500 Jim Rees <[EMAIL PROTECTED]> wrote:
code =
sscanf(adate, "%d / %d / %d %d : %d : %d%1s", &month, &day2, &year,
@@ -528,13 +529,28 @@
&hour, &min, &c[0]);
I still think we should do _something_ about the mismatched format string
and arguments here. Either nuke the last %d, or add another input argument
for seconds, but as it stands now, this code is wrong and may crash.
+ /* New ISO 8601 (subset) format */
+
+ if (code < 0) {
+ hour = min = sec = 0;
+ code =
+ sscanf(adate, "%d-%d-%d %d:%d:%d%1s", &year, &month, &day2,
+ &hour, &min, &sec, c);
Your last patch had whitespace in the sscanf format string, like the one
above. Did you intend to remove that?
+ if (code != 3 && code != 5 && code != 6)
+ code = -1;
OK; now it has the same level of validation as the old code. We might want
to consider making it more strict at some point; see my previous message.
But I don't consider the lack of additional strictness a showstopper.
+ afs_int32 code;
+ long l;
+ char c[2];
+
+ if (sscanf(adate, "%ld%1s", &l, c) == 1)
+ *aint32 = l;
+ else {
+ /* parse the date into a ktime_date structure */
+ code = ktime_ParseDate(adate, &tdate);
+ if (code)
+ return code; /* failed to parse */
+ code = ktime_InterpretDate(&tdate); /* interpret as seconds since 1970
*/ + *aint32 = code; /* return it */
+ }
Good...
-- Jeff
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel