summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2020-09-25 16:51:08 -0700
committerOri Bernstein <ori@eigenstate.org>2020-09-25 16:51:08 -0700
commiteb6b1e672c33a9dce0de368a0e954b801f2035d3 (patch)
treeb1b351f20fc3f5591723ceebc74b635bf33fe0e8
parent022bc980b88ca6c06df2f4055ecc0b62231f01ea (diff)
parent9f8d62ab644553b11286dbcd283db56c83d6ebdd (diff)
downloadplan9front-eb6b1e672c33a9dce0de368a0e954b801f2035d3.tar.xz
merge
-rw-r--r--sys/man/2/tmdate7
-rw-r--r--sys/src/libc/port/date.c5
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/man/2/tmdate b/sys/man/2/tmdate
index ea8a67125..a99da78c7 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 44ae15696..7be6cb52f 100644
--- a/sys/src/libc/port/date.c
+++ b/sys/src/libc/port/date.c
@@ -330,7 +330,7 @@ tmfill(Tm *tm, vlong abs, vlong nsec)
if(d < 0)
d += mdays[m - 1];
- tm->yday = d;
+ tm->yday = d - 1;
for(i = 0; i < m - 1; i++)
tm->yday += mdays[i];
if(m > 1 && isleap(y))
@@ -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;