9front - general discussion about 9front
 help / color / mirror / Atom feed
* Fwd: [9front-commits] ori: hg/plan9front: upas: convert to tmdate, change timezone format
       [not found] <hg.35c4d11d3692.1601144545.4892889753185008284@code.9front.org>
@ 2020-09-28 15:45 ` Stanley Lieber
  0 siblings, 0 replies; only message in thread
From: Stanley Lieber @ 2020-09-28 15:45 UTC (permalink / raw)
  To: 9front

don't forget to rebuild libc first.

sl



-------- Original Message --------
From: The Computer <commits@code.9front.org>
Sent: September 26, 2020 2:22:25 PM EDT
To: 9front-commits@9front.org
Subject: [9front-commits] ori: hg/plan9front: upas: convert to tmdate, change timezone format

details:     http://code.9front.org/hg/plan9front/rev/35c4d11d3692
changeset:   7985:35c4d11d3692
user:        Ori Bernstein <ori@eigenstate.org>
date:        Sat Sep 26 11:20:42 2020 -0700
description: upas: convert to tmdate, change timezone format

Complete the conversion of upas to remove ctime,
use the new date library, and print time zones
in +hhmm format, instead of NNN format.

This may affect code that expects specific names
for timezones. Fix that code.


diffstat:

 sys/src/cmd/upas/Mail/mail.c           |    1 +
 sys/src/cmd/upas/Mail/mesg.c           |   13 +-
 sys/src/cmd/upas/Mail/reply.c          |   13 +-
 sys/src/cmd/upas/common/common.h       |    1 +
 sys/src/cmd/upas/common/folder.c       |   20 +-
 sys/src/cmd/upas/common/libsys.c       |   13 +-
 sys/src/cmd/upas/common/sys.h          |    2 +-
 sys/src/cmd/upas/filterkit/deliver.c   |   12 +-
 sys/src/cmd/upas/filterkit/list.c      |    1 +
 sys/src/cmd/upas/filterkit/mbappend.c  |    7 +-
 sys/src/cmd/upas/filterkit/mbcreate.c  |    1 +
 sys/src/cmd/upas/filterkit/mbremove.c  |    1 +
 sys/src/cmd/upas/filterkit/token.c     |    1 +
 sys/src/cmd/upas/fs/extra/strtotmtst.c |    3 +-
 sys/src/cmd/upas/fs/fs.c               |    8 +-
 sys/src/cmd/upas/fs/mbox.c             |    6 +-
 sys/src/cmd/upas/fs/plan9.c            |    2 +-
 sys/src/cmd/upas/imap4d/date.c         |  257 ++------------------------------
 sys/src/cmd/upas/imap4d/imap4d.c       |    7 +-
 sys/src/cmd/upas/imap4d/nlisttst.c     |    2 -
 sys/src/cmd/upas/imap4d/print.c        |   37 +---
 sys/src/cmd/upas/marshal/marshal.c     |   28 +---
 sys/src/cmd/upas/pop3/pop3.c           |    2 +
 sys/src/cmd/upas/scanmail/scanmail.c   |   14 +-
 sys/src/cmd/upas/send/main.c           |    9 +-
 sys/src/cmd/upas/send/message.c        |    6 +-
 sys/src/cmd/upas/smtp/smtp.c           |    6 +-
 sys/src/cmd/upas/smtp/smtpd.c          |   11 +-
 sys/src/cmd/upas/smtp/spam.c           |   12 +-
 sys/src/cmd/upas/vf/vf.c               |    6 +-
 30 files changed, 139 insertions(+), 363 deletions(-)

diffs (truncated from 1023 to 300 lines):

diff --git a/sys/src/cmd/upas/Mail/mail.c b/sys/src/cmd/upas/Mail/mail.c
--- a/sys/src/cmd/upas/Mail/mail.c
+++ b/sys/src/cmd/upas/Mail/mail.c
@@ -82,6 +82,7 @@ threadmain(int argc, char *argv[])
 
 	doquote = needsrcquote;
 	quotefmtinstall();
+	tmfmtinstall();
 
 	/* open these early so we won't miss notification of new mail messages while we read mbox */
 	plumbsendfd = plumbopen("send", OWRITE|OCEXEC);
diff --git a/sys/src/cmd/upas/Mail/mesg.c b/sys/src/cmd/upas/Mail/mesg.c
--- a/sys/src/cmd/upas/Mail/mesg.c
+++ b/sys/src/cmd/upas/Mail/mesg.c
@@ -224,14 +224,13 @@ mesgadd(Message *mbox, char *dir, Dir *d
 int
 thisyear(char *year)
 {
-	static char now[10];
-	char *s;
+	Tzone *tz;
+	Tm tm;
 
-	if(now[0] == '\0'){
-		s = ctime(time(nil));
-		strcpy(now, s+24);
-	}
-	return strncmp(year, now, 4) == 0;
+	/* ignore errors: screwed means utc */
+	tz = tzload("local");
+	tmnow(&tm, tz);
+	return atoi(year) == (tm.year + 1900);
 }
 
 char*
diff --git a/sys/src/cmd/upas/Mail/reply.c b/sys/src/cmd/upas/Mail/reply.c
--- a/sys/src/cmd/upas/Mail/reply.c
+++ b/sys/src/cmd/upas/Mail/reply.c
@@ -388,7 +388,9 @@ mesgsend(Message *m)
 	Channel *sync;
 	Message *r;
 	int first, nfld, delit, ofd;
-	char *copy, *fld[100], *now;
+	char *copy, *fld[100];
+	Tzone *tz;
+	Tm now;
 
 	body = winreadbody(m->w, &n);
 	/* assemble to: list from first line, to: line, and cc: line */
@@ -467,11 +469,12 @@ mesgsend(Message *m)
 
 	ofd = open(outgoing, OWRITE|OCEXEC);	/* no error check necessary */
 	if(ofd >= 0){
-		/* From dhog Fri Aug 24 22:13:00 EDT 2001 */
-		now = ctime(time(0));
-		fprint(ofd, "From %s %s", user, now);
+		/* From dhog Fri Aug 24 22:13:00 +0500 2001 */
+		tz = tzload("local");
+		tmnow(&now, tz);
+		fprint(ofd, "From %s %τ", user, tmfmt(&now, "WW MMM _D hh:mm:ss Z YYYY"));
 		fprint(ofd, "From: %s\n", user);
-		fprint(ofd, "Date: %s", now);
+		fprint(ofd, "Date: %τ", tmfmt(&now, "WW MMM _D hh:mm:ss Z YYYY"));
 		for(i=0; i<natt; i++)
 			if(included[i])
 				fprint(ofd, "Include: %s\n", attlist[i]);
diff --git a/sys/src/cmd/upas/common/common.h b/sys/src/cmd/upas/common/common.h
--- a/sys/src/cmd/upas/common/common.h
+++ b/sys/src/cmd/upas/common/common.h
@@ -20,6 +20,7 @@ enum{
 	Fstored		= 1<<6, /* S */
 	Nflags		= 7,
 };
+#define Timefmt "WW MMM _D hh:mm:ss ?Z YYYY"
 
 /*
  * flag.c
diff --git a/sys/src/cmd/upas/common/folder.c b/sys/src/cmd/upas/common/folder.c
--- a/sys/src/cmd/upas/common/folder.c
+++ b/sys/src/cmd/upas/common/folder.c
@@ -1,7 +1,5 @@
 #include "common.h"
 
-#define Ctimefmt "WW MMM _D hh:mm:ss ?Z YYYY"
-
 enum{
 	Mbox	= 1,
 	Mdir,
@@ -186,22 +184,24 @@ mboxesc(Biobuf *in, Biobuf *out, int typ
 int
 appendfolder(Biobuf *b, char *addr, int fd)
 {
-	char *s, *t;
-	int r;
+	char *s;
+	int r, n;
 	Biobuf bin;
 	Folder *f;
+	Tzone *tz;
 	Tm tm;
 
 	f = getfolder(b);
 	Bseek(f->out, 0, 2);
 	Binit(&bin, fd, OREAD);
 	s = Brdstr(&bin, '\n', 0);
-	if(s == nil || strncmp(s, "From ", 5) != 0)
-		Bprint(f->out, "From %s %.28s\n", addr, ctime(f->t));
-	else if(strncmp(s, "From ", 5) == 0 
-		&& (t = strchr(s + 5, ' ')) != nil
-		&& tmparse(&tm, Ctimefmt, t + 1, nil, nil) != nil)
-		f->t = tm2sec(&tm);
+	n = strlen(s);
+	if(!s || strncmp(s, "From ", 5) != 0){
+		tz = tzload("local");
+		tmtime(&tm, f->t, tz);
+		Bprint(f->out, "From %s %τ\n", addr, tmfmt(&tm, Timefmt));
+	}else if(n > 5 && tmparse(&tm, Timefmt, s + 5, nil, nil) != nil)
+		f->t = tmnorm(&tm);
 	if(s)
 		Bwrite(f->out, s, strlen(s));
 	free(s);
diff --git a/sys/src/cmd/upas/common/libsys.c b/sys/src/cmd/upas/common/libsys.c
--- a/sys/src/cmd/upas/common/libsys.c
+++ b/sys/src/cmd/upas/common/libsys.c
@@ -5,14 +5,15 @@
 /*
  *  return the date
  */
-char*
-thedate(void)
+Tmfmt
+thedate(Tm *tm)
 {
-	static char now[64];
+	Tzone *tz;
 
-	strcpy(now, ctime(time(0)));
-	now[28] = 0;
-	return now;
+	/* if the local time is screwed, just do gmt */
+	tz = tzload("local");
+	tmnow(tm, tz);
+	return tmfmt(tm, Timefmt);
 }
 
 /*
diff --git a/sys/src/cmd/upas/common/sys.h b/sys/src/cmd/upas/common/sys.h
--- a/sys/src/cmd/upas/common/sys.h
+++ b/sys/src/cmd/upas/common/sys.h
@@ -35,7 +35,7 @@ char	*alt_sysname_read(void);
 char	*domainname_read(void);
 char	**sysnames_read(void);
 char	*getlog(void);
-char	*thedate(void);
+Tmfmt	thedate(Tm*);
 Biobuf	*sysopen(char*, char*, ulong);
 int	sysopentty(void);
 int	sysclose(Biobuf*);
diff --git a/sys/src/cmd/upas/filterkit/deliver.c b/sys/src/cmd/upas/filterkit/deliver.c
--- a/sys/src/cmd/upas/filterkit/deliver.c
+++ b/sys/src/cmd/upas/filterkit/deliver.c
@@ -14,13 +14,15 @@ usage(void)
 void
 main(int argc, char **argv)
 {
-	char *to, *s;
+	char *to;
+	Tmfmt tf;
+	Tm tm;
 	int r;
-	long l;
 	Addr *a;
 
 	ARGBEGIN{
 	}ARGEND;
+	tmfmtinstall();
 	if(argc != 3)
 		usage();
 	if(to = strrchr(argv[0], '!'))
@@ -30,9 +32,9 @@ main(int argc, char **argv)
 	a = readaddrs(argv[1], nil);
 	if(a == nil)
 		sysfatal("missing from address");
-	s = ctime(l = time(0));
+	tf = thedate(&tm);
 	werrstr("");
-	r = fappendfolder(a->val, l, argv[2], 0);
-	syslog(0, "mail", "delivered %s From %s %.28s (%s) %d %r", to, a->val, s, argv[0], r);
+	r = fappendfolder(a->val, tmnorm(&tm), argv[2], 0);
+	syslog(0, "mail", "delivered %s From %s %τ (%s) %d %r", to, a->val, tf, argv[0], r);
 	exits("");
 }
diff --git a/sys/src/cmd/upas/filterkit/list.c b/sys/src/cmd/upas/filterkit/list.c
--- a/sys/src/cmd/upas/filterkit/list.c
+++ b/sys/src/cmd/upas/filterkit/list.c
@@ -306,6 +306,7 @@ main(int argc, char **argv)
 	} ARGEND;
 
 	quotefmtinstall();
+	tmfmtinstall();
 
 	if(argc < 3)
 		usage();
diff --git a/sys/src/cmd/upas/filterkit/mbappend.c b/sys/src/cmd/upas/filterkit/mbappend.c
--- a/sys/src/cmd/upas/filterkit/mbappend.c
+++ b/sys/src/cmd/upas/filterkit/mbappend.c
@@ -7,15 +7,15 @@
 void
 append(int fd, char *mb, char *from, long t)
 {
-	char *folder, *s;
+	char *folder;
+	Tm tm;
 	int r;
 
-	s = ctime(t);
 	folder = foldername(from, getuser(), mb);
 	r = fappendfolder(0, t, folder, fd);
 	if(r == 0)
 		werrstr("");
-	syslog(0, "mail", "mbappend %s %.28s (%s) %r", mb, s, folder);
+	syslog(0, "mail", "mbappend %s %τ (%s) %r", mb, thedate(&tm), folder);
 	if(r)
 		exits("fail");
 }
@@ -36,6 +36,7 @@ main(int argc, char **argv)
 
 	from = nil;
 	t = time(0);
+	tmfmtinstall();
 	ARGBEGIN{
 	case 't':
 		t = strtoul(EARGF(usage()), 0, 0);
diff --git a/sys/src/cmd/upas/filterkit/mbcreate.c b/sys/src/cmd/upas/filterkit/mbcreate.c
--- a/sys/src/cmd/upas/filterkit/mbcreate.c
+++ b/sys/src/cmd/upas/filterkit/mbcreate.c
@@ -24,6 +24,7 @@ main(int argc, char **argv)
 	}ARGEND
 
 	r = 0;
+	tmfmtinstall();
 	for(; *argv; argv++)
 		r |= f(getuser(), *argv);
 	if(r)
diff --git a/sys/src/cmd/upas/filterkit/mbremove.c b/sys/src/cmd/upas/filterkit/mbremove.c
--- a/sys/src/cmd/upas/filterkit/mbremove.c
+++ b/sys/src/cmd/upas/filterkit/mbremove.c
@@ -235,6 +235,7 @@ main(int argc, char **argv)
 	}ARGEND
 
 	r = 0;
+	tmfmtinstall();
 	for(; *argv; argv++)
 		r |= f(getuser(), *argv);
 	if(r)
diff --git a/sys/src/cmd/upas/filterkit/token.c b/sys/src/cmd/upas/filterkit/token.c
--- a/sys/src/cmd/upas/filterkit/token.c
+++ b/sys/src/cmd/upas/filterkit/token.c
@@ -62,6 +62,7 @@ main(int argc, char **argv)
 	ARGBEGIN {
 	} ARGEND;
 
+	tmfmtinstall();
 	switch(argc){
 	case 2:
 		exits(check_token(argv[0], argv[1]));
diff --git a/sys/src/cmd/upas/fs/extra/strtotmtst.c b/sys/src/cmd/upas/fs/extra/strtotmtst.c
--- a/sys/src/cmd/upas/fs/extra/strtotmtst.c
+++ b/sys/src/cmd/upas/fs/extra/strtotmtst.c
@@ -8,9 +8,10 @@ main(int argc, char **argv)
 	ARGBEGIN{
 	}ARGEND
 
+	tmfmtinstall();
 	for(; *argv; argv++)
 		if(strtotm(*argv, &tm) >= 0)
-			print("%s", asctime(&tm));
+			print("%τ\n", tmfmt(&tm, nil));
 		else
 			print("bad\n");
 	exits("");
diff --git a/sys/src/cmd/upas/fs/fs.c b/sys/src/cmd/upas/fs/fs.c
--- a/sys/src/cmd/upas/fs/fs.c
+++ b/sys/src/cmd/upas/fs/fs.c
@@ -174,16 +174,15 @@ Afmt(Fmt *f)
 static int
 Δfmt(Fmt *f)
 {
-	char buf[32];
 	uvlong v;
+	Tm tm;
 
 	v = va_arg(f->args, uvlong);
 	if(f->flags & FmtSharp)
 		if((v>>8) == 0)
 			return fmtstrcpy(f, "");
-	strcpy(buf, ctime(v>>8));
-	buf[28] = 0;
-	return fmtstrcpy(f, buf);
+	tmtime(&tm, v>>8, tzload("local"));


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-09-28 15:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <hg.35c4d11d3692.1601144545.4892889753185008284@code.9front.org>
2020-09-28 15:45 ` Fwd: [9front-commits] ori: hg/plan9front: upas: convert to tmdate, change timezone format Stanley Lieber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).