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