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