9front - general discussion about 9front
 help / color / mirror / Atom feed
* [9front] 9pfid(2): add Qid declaration (patch)
@ 2021-01-06 10:02 sirjofri+ml-9front
  2021-01-06 10:09 ` sirjofri+ml-9front
  0 siblings, 1 reply; 2+ messages in thread
From: sirjofri+ml-9front @ 2021-01-06 10:02 UTC (permalink / raw)
  To: 9front

[-- Attachment #1: Type: text/plain, Size: 311 bytes --]

Hey all,

this patch adds the declaration for the Qid struct to the 9pfid(2) man page.

The Qid struct seems to be used frequently when writing filesystems and it's not described anywhere else in the man pages.
Only the note that it's declared in /sys/include/libc.h:635 in stat(2) but that's all.

sirjofri

.

[-- Attachment #2: Type: text/plain, Size: 4833 bytes --]

diff -r b24b6b01d46a lib/vgadb
--- a/lib/vgadb	Tue Dec 29 19:38:59 2020 +0000
+++ b/lib/vgadb	Wed Jan 06 10:56:36 2021 +0100
@@ -1772,6 +1772,19 @@
 	hsync=- vsync=-
 	lcd=1
 
+t61_60=1400x1050	# 60Hz
+	clock=108
+	shb=1448 ehb=1560 ht=1688
+	vrs=1051 vre=1054 vt=1066
+	hsync=- vsync=-
+	lcd=1
+t61_50=1400x1050	#50 Hz
+	clock=89.97
+	shb=1448 ehb=1560 ht=1688
+	vrs=1051 vre=1054 vt=1066
+	hsync=- vsync=-
+	lcd=1
+
 #
 # NEC LCD2190uXp
 #
diff -r b24b6b01d46a rc/bin/juke
--- a/rc/bin/juke	Tue Dec 29 19:38:59 2020 +0000
+++ b/rc/bin/juke	Wed Jan 06 10:56:36 2021 +0100
@@ -26,7 +26,7 @@
 		sname=$2
 		shift
 	case -*
-		echo usage: juke [-d level] [-tw] [-s srv] [-h srvhost] >[1=2]
+		echo Usage: classical [-d level] [-t] [-h srvhost]
 		exit usage
 	}
 	shift
diff -r b24b6b01d46a sys/man/1/tweak
--- a/sys/man/1/tweak	Tue Dec 29 19:38:59 2020 +0000
+++ b/sys/man/1/tweak	Wed Jan 06 10:56:36 2021 +0100
@@ -155,6 +155,16 @@
 Quit
 .IR tweak .
 The program will complain once about modified but unwritten files.
+.PP
+.I Tweak
+listens to the
+.I plumber
+channel
+.B imageedit
+for filenames as well as image data. Plumbed image data is stored as files in
+.B /tmp
+and is automatically cleaned when exiting
+.IR tweak .
 .SH SOURCE
 .B /sys/src/cmd/tweak.c
 .SH "SEE ALSO"
diff -r b24b6b01d46a sys/man/2/9pfid
--- a/sys/man/2/9pfid	Tue Dec 29 19:38:59 2020 +0000
+++ b/sys/man/2/9pfid	Wed Jan 06 10:56:36 2021 +0100
@@ -14,6 +14,17 @@
 .PP
 .ft L
 .nf
+.ta \w'\fL    'u +\w'\fLuvlong 'u
+typedef struct Qid
+{
+	uvlong	path;
+	ulong	vers;
+	uchar	type;
+} Qid;
+.fi
+.PP
+.ft L
+.nf
 .ta \w'\fL    'u +\w'\fLulong 'u
 typedef struct Fid
 {
diff -r b24b6b01d46a sys/src/cmd/tweak.c
--- a/sys/src/cmd/tweak.c	Tue Dec 29 19:38:59 2020 +0000
+++ b/sys/src/cmd/tweak.c	Wed Jan 06 10:56:36 2021 +0100
@@ -3,8 +3,11 @@
 #include <draw.h>
 #include <cursor.h>
 #include <event.h>
+#include <plumb.h>
 #include <bio.h>
 
+#define Eplumb 128
+
 typedef struct	Thing	Thing;
 
 struct Thing
@@ -157,6 +160,8 @@
 int		but1val = 0;
 int		but2val = 255;
 int		invert = 0;
+int		blockinput = 0;
+int		tmpindex = 0;
 Image		*values[256];
 Image		*greyvalues[256];
 uchar		data[8192];
@@ -172,12 +177,60 @@
 void	tclose1(Thing*);
 
 void
+flushevents(ulong keys)
+{
+	Event e;
+	if(keys == 0)
+		return;
+	while(ecanread(keys))
+		eread(keys, &e);
+}
+
+char*
+pshowdata(Plumbmsg *pm)
+{
+	int fd;
+	char *file;
+	file = smprint("/tmp/tweaktmp.%d.%d", getpid(), tmpindex++);
+	if(file == 0)
+		sysfatal("malloc failed: %r");
+	fd = create(file, OWRITE|OEXCL, 0600);
+	if(fd < 0){
+		free(file);
+		mesg("cannot create tmpfile.");
+		return nil;
+	}
+	if(write(fd, pm->data, pm->ndata) != pm->ndata){
+		mesg("error writing tmpfile: %r");
+		close(fd);
+		free(file);
+		return nil;
+	}
+	close(fd);
+	return file;
+}
+
+char*
+pfilename(Plumbmsg *pm)
+{
+	char *file;
+	if(pm->data[0] == '/')
+		file = smprint("%.*s", pm->ndata, pm->data);
+	else
+		file = smprint("%s/%.*s", pm->wdir, pm->ndata, pm->data);
+	return cleanname(file);
+}
+
+void
 main(int argc, char *argv[])
 {
 	int i;
 	Event e;
 	Thing *t;
+	Plumbmsg *pm;
+	char *s;
 
+	srand(time(0));
 	mag = Mag;
 	if(initdraw(error, 0, "tweak") < 0){
 		fprint(2, "tweak: initdraw failed: %r\n");
@@ -190,6 +243,7 @@
 			drawerror(display, "can't allocate image");
 	}
 	einit(Emouse|Ekeyboard);
+	eplumb(Eplumb, "imageedit");
 	eresized(0);
 	i = 1;
 	setjmp(err);
@@ -214,10 +268,42 @@
 			}
 			if(mouse.buttons & 4)
 				menu();
+			break;
+		case Eplumb:
+			pm = e.v;
+			if(pm->ndata == 0)
+				break;
+			s = plumblookup(pm->attr, "action");
+			if(s && strcmp(s, "showdata") == 0)
+				file = pshowdata(pm);
+			else
+				file = pfilename(pm);
+			if(!file){
+				mesg("invalid plumb data");
+				plumbfree(pm);
+				break;
+			}
+			plumbfree(pm);
+			t = tget(file);
+			if(t)
+				drawthing(t, 1);
+			flushimage(display, 1);
+			file = 0;
 		}
 }
 
 void
+cleantmpfiles(void)
+{
+	char *s;
+	for(tmpindex--; tmpindex >= 0; tmpindex--){
+		s = smprint("/tmp/tweaktmp.%d.%d", getpid(), tmpindex);
+		remove(s);
+		free(s);
+	}
+}
+
+void
 error(Display*, char *s)
 {
 	if(file)
@@ -226,6 +312,7 @@
 		mesg("/dev/bitblt error: %s", s);
 	if(err[0])
 		longjmp(err, 1);
+	cleantmpfiles();
 	exits(s);
 }
 
@@ -531,6 +618,12 @@
 	nt->tr.max.y = nt->tr.min.y + nl;
 	nt->er.max.y = nt->tr.max.y + Border;
 	text(nt);
+
+	mesg("");
+	if(blockinput){
+		flushevents(Emouse|Ekeyboard);
+		blockinput = 0;
+	}
 }
 
 int
@@ -557,6 +650,9 @@
 	uchar buf[256];
 	char *data;
 
+	mesg("reading %s", file);
+	blockinput = 1;
+
 	buf[0] = '\0';
 	errstr((char*)buf, sizeof buf);	/* flush pending error message */
 	memmove(oerr, err, sizeof err);
@@ -2041,6 +2137,7 @@
 		buttons(Down);
 		if(mouse.buttons == 4){
 			buttons(Up);
+			cleantmpfiles();
 			exits(0);
 		}
 		buttons(Up);

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-01-06 10:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-06 10:02 [9front] 9pfid(2): add Qid declaration (patch) sirjofri+ml-9front
2021-01-06 10:09 ` sirjofri+ml-9front

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).