Browse Source

Plan 9 from Bell Labs 2003-12-03

David du Colombier 20 years ago
parent
commit
e1fba73491

+ 13 - 12
dist/replica/plan9.db

@@ -210,7 +210,7 @@
 386/bin/disk/ksync - 775 sys sys 1020319074 302
 386/bin/disk/mbr - 775 sys sys 1064598127 73194
 386/bin/disk/mk9660 - 775 sys sys 1020319074 144
-386/bin/disk/mkext - 775 sys sys 1064598128 77585
+386/bin/disk/mkext - 775 sys sys 1070344538 77722
 386/bin/disk/mkfs - 775 sys sys 1064598129 87215
 386/bin/disk/mksacfs - 775 sys sys 1020319074 71451
 386/bin/disk/prep - 775 sys sys 1069592365 99123
@@ -399,13 +399,13 @@
 386/bin/swap - 775 sys sys 1064598322 60601
 386/bin/syscall - 775 sys sys 1064598322 72383
 386/bin/tail - 775 sys sys 1064598323 64637
-386/bin/tar - 775 sys sys 1064598323 81078
+386/bin/tar - 775 sys sys 1070342463 81040
 386/bin/tbl - 775 sys sys 1064598324 111550
 386/bin/tcs - 775 sys sys 1064598326 256771
 386/bin/tee - 775 sys sys 1064598326 38656
 386/bin/telco - 775 sys sys 1064598327 104810
 386/bin/telnet - 775 sys sys 1064598327 80561
-386/bin/test - 775 sys sys 1064598328 63668
+386/bin/test - 775 sys sys 1070416286 67968
 386/bin/time - 775 sys sys 1064598328 59564
 386/bin/tlsclient - 775 sys sys 1064598330 196114
 386/bin/tlssrv - 775 sys sys 1064598331 196448
@@ -506,8 +506,8 @@
 386/lib - 20000000775 sys sys 1016826328 0
 386/lib/ape - 20000000775 sys sys 944969312 0
 386/lib/ape/lib9.a - 664 sys sys 1038237538 6378
-386/lib/ape/libap.a - 664 sys sys 1068558290 804974
-386/lib/ape/libbsd.a - 664 sys sys 1068558290 179718
+386/lib/ape/libap.a - 664 sys sys 1070342464 810262
+386/lib/ape/libbsd.a - 664 sys sys 1070342465 179718
 386/lib/ape/libl.a - 664 sys sys 1068558290 9450
 386/lib/ape/libnet.a - 664 sys sys 1068558291 16996
 386/lib/ape/libregexp.a - 664 sys sys 1068558291 47642
@@ -3326,7 +3326,7 @@ sys/include/ape/errno.h - 664 sys sys 1070327359 1525
 sys/include/ape/error.h - 664 sys sys 944948759 356
 sys/include/ape/event.h - 664 sys sys 1070327358 117
 sys/include/ape/fcntl.h - 664 sys sys 969500385 1231
-sys/include/ape/fmt.h - 664 sys sys 1070327361 3276
+sys/include/ape/fmt.h - 664 sys sys 1070377332 3277
 sys/include/ape/grp.h - 664 sys sys 944948759 389
 sys/include/ape/inttypes.h - 664 sys sys 1038237535 452
 sys/include/ape/keyboard.h - 664 sys sys 1070327358 120
@@ -4698,12 +4698,12 @@ sys/man/1/sum - 664 sys sys 984772442 1390
 sys/man/1/syscall - 664 sys sys 1016466457 1439
 sys/man/1/tail - 664 sys sys 1017679307 1413
 sys/man/1/tapefs - 664 sys sys 944959675 1731
-sys/man/1/tar - 664 sys sys 1070287474 2363
+sys/man/1/tar - 664 sys sys 1070371922 2538
 sys/man/1/tbl - 664 sys sys 944959674 4308
 sys/man/1/tcs - 664 sys sys 952627441 2575
 sys/man/1/tee - 664 sys sys 969499886 351
 sys/man/1/tel - 664 sys sys 1045501423 941
-sys/man/1/test - 664 sys sys 1015024741 2871
+sys/man/1/test - 664 sys sys 1070415988 3302
 sys/man/1/thesaurus - 664 sys sys 1068121775 222
 sys/man/1/time - 664 sys sys 944959673 380
 sys/man/1/touch - 664 sys sys 1018369246 461
@@ -7382,7 +7382,7 @@ sys/src/cmd/disk/kfs/sub.c - 664 sys sys 1022008488 10804
 sys/src/cmd/disk/kfs/uid.c - 664 sys sys 1022008489 6719
 sys/src/cmd/disk/kfscmd.c - 664 sys sys 1015009135 1109
 sys/src/cmd/disk/mbr.c - 664 sys sys 1063855285 4325
-sys/src/cmd/disk/mkext.c - 664 sys sys 1070287646 5506
+sys/src/cmd/disk/mkext.c - 664 sys sys 1070377355 5716
 sys/src/cmd/disk/mkfile - 664 sys sys 1022385851 500
 sys/src/cmd/disk/mkfs.c - 664 sys sys 1032059493 14298
 sys/src/cmd/disk/prep - 20000000775 sys sys 988249968 0
@@ -10453,7 +10453,7 @@ sys/src/cmd/telco/mkfile - 664 sys sys 944961290 201
 sys/src/cmd/telco/telco.c - 664 sys sys 1021579996 26253
 sys/src/cmd/telco/telcodata - 775 sys sys 944961290 95
 sys/src/cmd/telco/telcofax - 664 sys sys 944961289 30
-sys/src/cmd/test.c - 664 sys sys 1014926662 4156
+sys/src/cmd/test.c - 664 sys sys 1070416286 4823
 sys/src/cmd/time.c - 664 sys sys 1014926662 1546
 sys/src/cmd/tlsclient.c - 664 sys sys 1024375149 1631
 sys/src/cmd/tlssrv.c - 664 sys sys 1018720167 3254
@@ -11744,7 +11744,7 @@ sys/src/libdisk/test.c - 664 sys sys 960347152 275
 sys/src/libdraw - 20000000775 sys sys 1014927873 0
 sys/src/libdraw/alloc.c - 664 sys sys 1014927873 4095
 sys/src/libdraw/allocimagemix.c - 664 sys sys 1014927873 924
-sys/src/libdraw/arith.c - 664 sys sys 1014927873 2846
+sys/src/libdraw/arith.c - 664 sys sys 1070394447 2628
 sys/src/libdraw/bezier.c - 664 sys sys 1040442969 4948
 sys/src/libdraw/border.c - 664 sys sys 984709663 554
 sys/src/libdraw/buildfont.c - 664 sys sys 984709663 2709
@@ -11761,6 +11761,7 @@ sys/src/libdraw/egetrect.c - 664 sys sys 1014927874 2612
 sys/src/libdraw/ellipse.c - 664 sys sys 1040442971 1936
 sys/src/libdraw/emenuhit.c - 664 sys sys 1014927874 7136
 sys/src/libdraw/event.c - 664 sys sys 1014927875 8985
+sys/src/libdraw/fmt.c - 664 sys sys 1070344369 270
 sys/src/libdraw/font.c - 664 sys sys 1014927875 7542
 sys/src/libdraw/freesubfont.c - 664 sys sys 984709664 259
 sys/src/libdraw/getdefont.c - 664 sys sys 944961724 1082
@@ -11774,7 +11775,7 @@ sys/src/libdraw/line.c - 664 sys sys 1040442973 731
 sys/src/libdraw/loadimage.c - 664 sys sys 1014927876 983
 sys/src/libdraw/makefile - 664 sys sys 944961725 648
 sys/src/libdraw/menuhit.c - 664 sys sys 1014927876 7263
-sys/src/libdraw/mkfile - 664 sys sys 1035389777 1013
+sys/src/libdraw/mkfile - 664 sys sys 1070394450 1022
 sys/src/libdraw/mkfont.c - 664 sys sys 944961725 1283
 sys/src/libdraw/mouse.c - 664 sys sys 1030970092 2559
 sys/src/libdraw/newwindow.c - 664 sys sys 1035232036 424

+ 16 - 0
dist/replica/plan9.log

@@ -12927,3 +12927,19 @@
 1070330908 5 a sys/src/ape/lib/ap/plan9/qlock.c - 664 sys sys 1070330880 5124
 1070330908 6 c sys/src/ape/lib/fmt/werrstr.c - 664 sys sys 1070330902 241
 1070330908 7 c sys/src/ape/lib/mkfile - 664 sys sys 1070330862 203
+1070343108 0 c 386/bin/disk/mkext - 775 sys sys 1070342462 77711
+1070343108 1 c 386/bin/tar - 775 sys sys 1070342463 81040
+1070343108 2 c 386/lib/ape/libap.a - 664 sys sys 1070342464 810262
+1070343108 3 c 386/lib/ape/libbsd.a - 664 sys sys 1070342465 179718
+1070344375 0 a sys/src/libdraw/fmt.c - 664 sys sys 1070344369 270
+1070344908 0 c 386/bin/disk/mkext - 775 sys sys 1070344538 77722
+1070371912 0 c sys/man/1/tar - 664 sys sys 1070371922 2538
+1070377313 0 c sys/include/ape/fmt.h - 664 sys sys 1070377332 3277
+1070377313 1 c sys/src/cmd/disk/mkext.c - 664 sys sys 1070377355 5716
+1070394474 0 c sys/src/libdraw/arith.c - 664 sys sys 1070394447 2628
+1070394474 1 c sys/src/libdraw/mkfile - 664 sys sys 1070394450 1022
+1070413318 0 c sys/src/cmd/test.c - 664 sys sys 1070411879 4824
+1070415118 0 c sys/man/1/test - 664 sys sys 1070415067 3172
+1070416918 0 c 386/bin/test - 775 sys sys 1070416286 67968
+1070416918 1 c sys/man/1/test - 664 sys sys 1070415988 3302
+1070416918 2 c sys/src/cmd/test.c - 664 sys sys 1070416286 4823

+ 1 - 1
sys/include/ape/fmt.h

@@ -99,7 +99,7 @@ extern	int	fmtstrcpy(Fmt*, char*);
 extern	double	fmtstrtod(const char *, char **);
 extern	double	fmtcharstod(int(*)(void*), void*);
 
-extern	int	werrstr(const char*, ...);
+extern	void	werrstr(const char*, ...);
 
 #if defined(__cplusplus)
 }

+ 9 - 4
sys/man/1/tar

@@ -77,8 +77,12 @@ a non-Plan 9 system.
 Use the next (numeric) argument as the group id for files in
 the output archive.
 .TP
-.BR p
-Create files in POSIX ustar format.
+.B p
+Create archive in POSIX ustar format,
+which raises the maximum pathname length from 100 to 256 bytes.
+Ustar archives are recognised automatically by
+.I tar
+when reading archives.
 .TP
 .B R
 When extracting, ignore leading slash on file names,
@@ -94,7 +98,7 @@ of each file to that specified in the archive.
 can be used to copy hierarchies thus:
 .IP
 .EX
-{cd fromdir && tar c .} | {cd todir && tar xT}
+@{cd fromdir && tar cp .} | @{cd todir && tar xT}
 .EE
 .SH SOURCE
 .B /sys/src/cmd/tar.c
@@ -107,7 +111,8 @@ There is no way to ask for any but the last
 occurrence of a file.
 .br
 File path names are limited to
-100 characters.
+100 characters
+(256 when using ustar format).
 .br
 The tar format allows specification of links and symbolic links,
 concepts foreign to Plan 9: they are ignored.

+ 22 - 0
sys/man/1/test

@@ -102,6 +102,28 @@ The (nonstandard) construct
 meaning the length of
 .IR string ,
 may be used in place of an integer.
+.TP
+.IB f " -older " t
+True if the modify time of file
+.I f
+is before
+,IR t .
+If
+.I t
+is a integer followed by the letters
+.BR y (years),
+.BR M (months),
+.BR d (days),
+.BR h (hours),
+.BR m (minutes),
+or
+.BR s (seconds),
+it represents current time minus the specified time.
+If there is no letter, it represents seconds since
+epoch.
+You can also concatenate mixed units.  For example,
+.B 3d12h
+means three days and twelve hours ago.
 .PD
 .PP
 These primaries may be combined with the

+ 19 - 10
sys/src/cmd/disk/mkext.c

@@ -15,6 +15,8 @@ void	seekpast(ulong);
 void	error(char*, ...);
 void	warn(char*, ...);
 void	usage(void);
+#pragma varargck argpos warn 1
+#pragma varargck argpos error 1
 
 Biobufhdr bin;
 uchar	binbuf[2*LEN];
@@ -22,6 +24,7 @@ char	linebuf[LEN];
 int	uflag;
 int	hflag;
 int	vflag;
+int	Tflag;
 
 void
 main(int argc, char **argv)
@@ -47,6 +50,10 @@ main(int argc, char **argv)
 		break;
 	case 'u':
 		uflag = 1;
+		Tflag = 1;
+		break;
+	case 'T':
+		Tflag = 1;
 		break;
 	case 'v':
 		vflag = 1;
@@ -168,22 +175,23 @@ mkdir(char *name, ulong mode, ulong mtime, char *uid, char *gid)
 	if(uflag){
 		d->uid = uid;
 		d->gid = gid;
-		d->mtime = mtime;
 	}
+	if(Tflag)
+		d->mtime = mtime;
 	d->mode = mode;
 	if(dirwstat(name, d) < 0)
 		warn("can't set modes for %q: %r", name);
 
-	if(uflag){
+	if(uflag||Tflag){
 		if((d = dirstat(name)) == nil){
 			warn("can't reread modes for %q: %r", name);
 			return;
 		}
-		if(d->mtime != mtime)
+		if(Tflag && d->mtime != mtime)
 			warn("%q: time mismatch %lud %lud\n", name, mtime, d->mtime);
-		if(strcmp(uid, d->uid))
+		if(uflag && strcmp(uid, d->uid))
 			warn("%q: uid mismatch %q %q", name, uid, d->uid);
-		if(strcmp(gid, d->gid))
+		if(uflag && strcmp(gid, d->gid))
 			warn("%q: gid mismatch %q %q", name, gid, d->gid);
 	}
 }
@@ -227,21 +235,22 @@ extract(char *name, ulong mode, ulong mtime, char *uid, char *gid, ulong bytes)
 	if(uflag){
 		d.uid = uid;
 		d.gid = gid;
-		d.mtime = mtime;
 	}
+	if(Tflag)
+		d.mtime = mtime;
 	d.mode = mode;
 	Bflush(b);
 	if(dirfwstat(Bfildes(b), &d) < 0)
 		warn("can't set modes for %q: %r", name);
-	if(uflag){
+	if(uflag||Tflag){
 		if((nd = dirfstat(Bfildes(b))) == nil)
 			warn("can't reread modes for %q: %r", name);
 		else{
-			if(nd->mtime != mtime)
+			if(Tflag && nd->mtime != mtime)
 				warn("%q: time mismatch %lud %lud\n", name, mtime, nd->mtime);
-			if(strcmp(uid, nd->uid))
+			if(uflag && strcmp(uid, nd->uid))
 				warn("%q: uid mismatch %q %q", name, uid, nd->uid);
-			if(strcmp(gid, nd->gid))
+			if(uflag && strcmp(gid, nd->gid))
 				warn("%q: gid mismatch %q %q", name, gid, nd->gid);
 			free(nd);
 		}

+ 49 - 0
sys/src/cmd/test.c

@@ -23,6 +23,7 @@ int	isdir(char *);
 int	isreg(char *);
 int	isatty(int);
 int	isint(char *, int *);
+int	isolder(char *, char *);
 int	hasmode(char *, ulong);
 int	tio(char *, int);
 int	e(void), e1(void), e2(void), e3(void);
@@ -165,6 +166,9 @@ e3(void) {
 	if(EQ(p2, "!="))
 		return(!EQ(nxtarg(0), a));
 
+	if(EQ(p2, "-older"))
+		return(isolder(nxtarg(0), a));
+
 	if(!isint(a, &int1))
 		return(!EQ(a,""));
 
@@ -301,3 +305,48 @@ isint(char *s, int *pans)
 	*pans = strtol(s, &ep, 0);
 	return (*ep == 0);
 }
+
+int
+isolder(char *pin, char *f)
+{
+	char *p = pin;
+	ulong n, m;
+	Dir dir;
+
+	if(localstat(f,&dir)<0)
+		return(0);
+
+	/* parse time */
+	n = 0;
+	while(*p){
+		m = strtoul(p, &p, 0);
+		switch(*p){
+		case 0:
+			n = m;
+			break;
+		case 'y':
+			m *= 12;
+			/* fall through */
+		case 'M':
+			m *= 30;
+			/* fall through */
+		case 'd':
+			m *= 24;
+			/* fall through */
+		case 'h':
+			m *= 60;
+			/* fall through */
+		case 'm':
+			m *= 60;
+			/* fall through */
+		case 's':
+			n += m;
+			p++;
+			break;
+		default:
+			synbad("bad time syntax, ", pin);
+		}
+	}
+
+	return(dir.mtime+n < time(0));
+}

+ 0 - 18
sys/src/libdraw/arith.c

@@ -186,21 +186,3 @@ setalpha(ulong color, uchar alpha)
 
 Point	ZP;
 Rectangle ZR;
-int
-Rfmt(Fmt *f)
-{
-	Rectangle r;
-
-	r = va_arg(f->args, Rectangle);
-	return fmtprint(f, "%P %P", r.min, r.max);
-}
-
-int
-Pfmt(Fmt *f)
-{
-	Point p;
-
-	p = va_arg(f->args, Point);
-	return fmtprint(f, "[%d %d]", p.x, p.y);
-}
-

+ 22 - 0
sys/src/libdraw/fmt.c

@@ -0,0 +1,22 @@
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+
+int
+Rfmt(Fmt *f)
+{
+	Rectangle r;
+
+	r = va_arg(f->args, Rectangle);
+	return fmtprint(f, "%P %P", r.min, r.max);
+}
+
+int
+Pfmt(Fmt *f)
+{
+	Point p;
+
+	p = va_arg(f->args, Point);
+	return fmtprint(f, "[%d %d]", p.x, p.y);
+}
+

+ 1 - 0
sys/src/libdraw/mkfile

@@ -22,6 +22,7 @@ OFILES=\
 	ellipse.$O\
 	emenuhit.$O\
 	event.$O\
+	fmt.$O\
 	font.$O\
 	freesubfont.$O\
 	getdefont.$O\