diff options
| -rw-r--r-- | src/time/strptime.c | 21 | 
1 files changed, 16 insertions, 5 deletions
| diff --git a/src/time/strptime.c b/src/time/strptime.c index d1d141e5..4d9eea41 100644 --- a/src/time/strptime.c +++ b/src/time/strptime.c @@ -8,7 +8,7 @@  char *strptime(const char *restrict s, const char *restrict f, struct tm *restrict tm)  { -	int i, w, neg, adj, min, range, *dest; +	int i, w, neg, adj, min, range, *dest, dummy;  	const char *ex;  	size_t len;  	while (*f) { @@ -40,6 +40,10 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri  			if (!s) return 0;  			break;  		case 'C': +			/* FIXME */ +			dest = &dummy; +			if (w<0) w=2; +			goto numeric_digits;  		case 'd': case 'e':  			dest = &tm->tm_mday;  			min = 1; @@ -112,8 +116,11 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri  			break;  		case 'U':  		case 'W': -			//FIXME -			return 0; +			/* Throw away result, for now. (FIXME?) */ +			dest = &dummy; +			min = 0; +			range = 54; +			goto numeric_range;  		case 'w':  			dest = &tm->tm_wday;  			min = 0; @@ -128,8 +135,10 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri  			if (!s) return 0;  			break;  		case 'y': -			//FIXME -			return 0; +			/* FIXME */ +			dest = &dummy; +			w = 2; +			goto numeric_digits;  		case 'Y':  			dest = &tm->tm_year;  			if (w<0) w=4; @@ -138,6 +147,8 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri  		case '%':  			if (*s++ != '%') return 0;  			break; +		default: +			return 0;  		numeric_range:  			if (!isdigit(*s)) return 0;  			*dest = 0; | 
