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); | ||
|  | } |