Further WIP on parser
This commit is contained in:
parent
02d47dbdf2
commit
09fd37b4f5
5 changed files with 215 additions and 14 deletions
|
|
@ -15,25 +15,39 @@
|
|||
int do_date(const char* str)
|
||||
{
|
||||
struct iso8601_date earliest, latest;
|
||||
struct iso8601_details details;
|
||||
char buf[100], buf2[100];
|
||||
struct iso8601_details details, fulldetails;
|
||||
char buf[100], buf2[100], buf3[100], buf4[100];
|
||||
|
||||
if(iso8601_parse(str, &earliest, &latest, &details)) {
|
||||
perror("iso8601_parse");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memset(&fulldetails, 0, sizeof(fulldetails));
|
||||
switch((fulldetails.date_prec = details.date_prec)) {
|
||||
case iso8601_prec_month:
|
||||
case iso8601_prec_year:
|
||||
fulldetails.date_prec = iso8601_prec_day;
|
||||
break;
|
||||
case iso8601_prec_week:
|
||||
fulldetails.date_prec = iso8601_prec_wday;
|
||||
break;
|
||||
}
|
||||
fulldetails.time_prec = iso8601_prec_secfrac;
|
||||
|
||||
iso8601_print(buf, sizeof(buf), &earliest, &details);
|
||||
iso8601_print(buf2, sizeof(buf2), &latest, &details);
|
||||
iso8601_print(buf2, sizeof(buf2), &earliest, &fulldetails);
|
||||
iso8601_print(buf3, sizeof(buf3), &latest, &details);
|
||||
iso8601_print(buf4, sizeof(buf4), &latest, &fulldetails);
|
||||
|
||||
printf("Results for ``%s'':\n"
|
||||
" Earliest: day=%d, sec=%05d, nsec=%09d; %s\n"
|
||||
" Latest : day=%d, sec=%05d, nsec=%09d; %s\n"
|
||||
" Earliest: day=%d, sec=%05d, nsec=%09d; %-20s %s\n"
|
||||
" Latest : day=%d, sec=%05d, nsec=%09d; %-20s %s\n"
|
||||
" Details : date_prec=%d, time_prec=%d, extended=%d, tz_sec=%d\n"
|
||||
"\n",
|
||||
str,
|
||||
earliest.day, earliest.sec, earliest.nsec, buf,
|
||||
latest.day, latest.sec, latest.nsec, buf2,
|
||||
earliest.day, earliest.sec, earliest.nsec, buf, buf2,
|
||||
latest.day, latest.sec, latest.nsec, buf3, buf4,
|
||||
details.date_prec, details.time_prec, details.extended, details.tz_sec);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue