25 lines
593 B
C
25 lines
593 B
C
|
#include "tai.h"
|
||
|
#include "caldate.h"
|
||
|
|
||
|
unsigned int caldate_scan(char *s, struct caldate *cd)
|
||
|
{
|
||
|
int sign = 1;
|
||
|
char *t = s;
|
||
|
unsigned long z;
|
||
|
unsigned long c;
|
||
|
|
||
|
if (*t == '-') { ++t; sign = -1; }
|
||
|
z = 0; while ((c = (unsigned char) (*t - '0')) <= 9) { z = z * 10 + c; ++t; }
|
||
|
cd->year = z * sign;
|
||
|
|
||
|
if (*t++ != '-') return 0;
|
||
|
z = 0; while ((c = (unsigned char) (*t - '0')) <= 9) { z = z * 10 + c; ++t; }
|
||
|
cd->month = z;
|
||
|
|
||
|
if (*t++ != '-') return 0;
|
||
|
z = 0; while ((c = (unsigned char) (*t - '0')) <= 9) { z = z * 10 + c; ++t; }
|
||
|
cd->day = z;
|
||
|
|
||
|
return (unsigned int)(t - s);
|
||
|
}
|