diff --git a/sys/man/2/tmdate b/sys/man/2/tmdate index e4123c3e1..ba5c4441a 100644 --- a/sys/man/2/tmdate +++ b/sys/man/2/tmdate @@ -134,8 +134,7 @@ For example, will format to a width of 3. When parsing, this acts as whitespace. .TP .B ? -When parsing, this makes the following argument match fuzzily. -Fuzzy matching means that all formats are tried, from most to least specific. +When parsing, all formats of the following argument are tried from most to least specific. For example, .I ?M will match @@ -144,7 +143,9 @@ will match .IR 01 , and .IR 1 , -in that order of preference. +in that order. When formatting, +.B ? +is ignored. .TP .B ~ When parsing a date, this slackens range enforcement, accepting diff --git a/sys/src/libc/port/date.c b/sys/src/libc/port/date.c index 1c90a7985..7be6cb52f 100644 --- a/sys/src/libc/port/date.c +++ b/sys/src/libc/port/date.c @@ -428,6 +428,9 @@ static int switch(c0){ case 0: break; + /* Ignore '?' so we can share parse and format strings */ + case '?': + continue; case 'Y': switch(w){ case 1: n += fmtprint(f, "%*d", pad, tm->year + 1900); break;