f



[9fans] Plot(1) broken on p9p OSX?

Graph(1) seems to work:

% @{echo 1; echo 2; echo 3} | graph -a
o
ra 0 0 4096 4096
e
li 200 200 4000 200
v 4000 4000
v 200 4000
v 200 200
li 1150 200 1150 4000
li 2100 200 2100 4000
li 3050 200 3050 4000
li 200 1150 4000 1150
li 200 2100 4000 2100
li 200 3050 4000 3050
m 200 140
t "    0 <= x <= 2, 1 <= y <= 3"
pe solid
co kblack
m 200 200
v 2100 2100
v 4000 4000
pe solid
cl

But not plot(1):

% @{echo 1; echo 2; echo 3} | graph -a | plot

Yields only a lonely, blank window.

Has anyone gotten this to work?

-marius

0
marius
4/19/2013 9:23:05 PM
comp.os.plan9 9252 articles. 1 followers. quanstro (3876) is leader. Post Follow

9 Replies
3640 Views

Similar Articles

[PageSpeed] 12

--089e013a1ede00643f04dabd89c3
Content-Type: multipart/alternative; boundary=089e013a1ede00643b04dabd89c1

--089e013a1ede00643b04dabd89c1
Content-Type: text/plain; charset=ISO-8859-1

works here.



2013/4/19 marius a. eriksen <marius@monkey.org>

> Graph(1) seems to work:
>
> % @{echo 1; echo 2; echo 3} | graph -a
> o
> ra 0 0 4096 4096
> e
> li 200 200 4000 200
> v 4000 4000
> v 200 4000
> v 200 200
> li 1150 200 1150 4000
> li 2100 200 2100 4000
> li 3050 200 3050 4000
> li 200 1150 4000 1150
> li 200 2100 4000 2100
> li 200 3050 4000 3050
> m 200 140
> t "    0 <= x <= 2, 1 <= y <= 3"
> pe solid
> co kblack
> m 200 200
> v 2100 2100
> v 4000 4000
> pe solid
> cl
>
> But not plot(1):
>
> % @{echo 1; echo 2; echo 3} | graph -a | plot
>
> Yields only a lonely, blank window.
>
> Has anyone gotten this to work?
>
> -marius
>
>

--089e013a1ede00643b04dabd89c1
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">works here.<div><br></div></div><div class=3D"gmail_extra"=
><br><br><div class=3D"gmail_quote">2013/4/19 marius a. eriksen <span dir=
=3D"ltr">&lt;<a href=3D"mailto:marius@monkey.org" target=3D"_blank">marius@=
monkey.org</a>&gt;</span><br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">Graph(1) seems to work:<br>
<br>
% @{echo 1; echo 2; echo 3} | graph -a<br>
o<br>
ra 0 0 4096 4096<br>
e<br>
li 200 200 4000 200<br>
v 4000 4000<br>
v 200 4000<br>
v 200 200<br>
li 1150 200 1150 4000<br>
li 2100 200 2100 4000<br>
li 3050 200 3050 4000<br>
li 200 1150 4000 1150<br>
li 200 2100 4000 2100<br>
li 200 3050 4000 3050<br>
m 200 140<br>
t &quot; =A0 =A00 &lt;=3D x &lt;=3D 2, 1 &lt;=3D y &lt;=3D 3&quot;<br>
pe solid<br>
co kblack<br>
m 200 200<br>
v 2100 2100<br>
v 4000 4000<br>
pe solid<br>
cl<br>
<br>
But not plot(1):<br>
<br>
% @{echo 1; echo 2; echo 3} | graph -a | plot<br>
<br>
Yields only a lonely, blank window.<br>
<br>
Has anyone gotten this to work?<br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
-marius<br>
<br>
</font></span></blockquote></div><br></div>

--089e013a1ede00643b04dabd89c1--
--089e013a1ede00643f04dabd89c3
Content-Type: image/png; name="Screen Shot 2013-04-19 at 2.36.23 PM.png"
Content-Disposition: attachment; 
	filename="Screen Shot 2013-04-19 at 2.36.23 PM.png"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hfpvpxuj0

iVBORw0KGgoAAAANSUhEUgAAAx0AAAJKCAIAAADGB78/AAAYH2lDQ1BJQ0MgUHJvZmlsZQAAWAmt
eXdYFMuzds9sBnbJOS05Sc45Z5CclZwzSw4iICBBQUARAUVBRUQFUaIkUVCEg4CCiokgEkTFgKCA
3MGj5/zud+/975vn2dl3q9+urq7q6emqBYDjpldkZChMB0BYeAzF1liP7OziSsa9BBDAAwIgAnYv
n+hIXWtrC/B/Xt8mETZyPZLc1fV/0v73Bnpfv2gfACBrpNnbN9onDME3AUC1+URSYgDA7OoTjI+J
3MXHEMxEQQxE8PldHPA3btvF3n/j4V8ce1t9hDMNAJ7Gy4sSAABxBZGT43wCED0kGgCwDOG+QeFI
NzKCtXwCvXwB4PBEOHvCwiJ28REEi3r/h56A/8BeXt7/6PTyCvgH/z0XpCcysEFQdGSoV+KvH/8/
b2GhsYi/fl08yJ0mOsTOHPlmQfyW4ONlaIdgNgQXBPqZWvyWX4yM0bP9Le8MijG1RzATwnkcGGvi
8BsvxoY46CKYC5FvhUSY7/IRP8Fs4d57rRDMgGBBn2h9xPe7Y8FKSYH2Tr85Fr5+BoYIRlYR7EyJ
sP3DD4yOs/sjT0oK1N/7hx/sZbYbbxLCz/OiIOiXPXCZX6jx7rj8iPxKZIz1rp27Y42Eh+79PRf4
jT/FaJezK//hF/1rvru2BcYE2psgcsRmFF0MxX6Xg8wRxeUfZGSKYMQ2lEwgxeSPXCcy9NeaRvqi
7Cmxtrt+EESwv1+4w64Pd+V5vl4Gu75FfIKqBEbAC1CAH/AG4WAbkIEF0AcGv+9kRB6OyHxABAhF
PhQy7Z8WzFvMGGYWM4GZxjz7I0N6/uaBIOCL4L91/Ud/RG4HksB7RKsfiP4zGpoDrYVWR1sgdx3k
I4dWQav+aRtZaV35g3/bGoD0lfytW++39XH/ab1HUAbl/+nj/U+P/2mTEXiDeCDgD0OmXmZJZutP
/39njDXEGmBNsEZYMVQO6gbqHuo2ahDViWoFZFQPqg01jOraxb/t+jOKFyLZ9cquh6OBOeJFPxD7
61f4n/H+m5di/2H81kASJykCW6RXOAhB2oL+GcHxl9VB/0NLLMLwRkYMRrjm/8Tjt11oYcS7img9
tCbiZ8THaBY0B5BEKyAe10VrIzFQRKT/RvG/z0YS+P/ydtyvuYSAt8g8wmL8EmKQtQT0IyITKUEB
gTFkXWS39NtDNg33kdpDlpORlQe7e+8uB4Avtr/2VIjl4b+yCFkAVHf3ykP/yjw/ANAajGw3DP/K
hFsBoJUDYPCkTywl7m996N0vDKACtMhTwQ54gAAQRTwiB5SAOtABhsAMWAF74ALckTUcCMIQi+NB
CkgH2SAfHAMnQDmoAjXgErgKmkAr6AS3wQAYAqNgAjwH02AevAOr4BvYhCAIBxEhRogd4oWEIAlI
DlKBtCBDyAKyhVwgTygACodioRToEJQPFUPl0DmoDroOtUO3oUFoDHoGzUBL0GfoB4yCaWAmmBsW
hqVhFVgXNoft4f1wABwFJ8GZcAFcBlfDV+AW+DY8BE/A0/A7eA0FUNQoFhQfShKlgtJHWaFcUf4o
CioVlYcqRVWjrqE6kLX4CDWNWkF9R2PRjGgyWhKJpAnaAe2DjkKnoo+gy9GX0C3ou+hH6Bn0Kvon
hojhwkhg1DCmGGdMACYek40pxVzENGP6ked5HvMNi8WyYEWwyshqd8EGY5OxR7CnsQ3YXuwYdg67
hsPh2HESOE2cFc4LF4PLxp3CXcH14MZx87gNPDWeFy+HN8K74sPxGfhS/GV8N34cv4DfJNARhAhq
BCuCLyGRUEg4T+ggPCTMEzap6KlEqDSp7KmCqdKpyqiuUfVTvaD6Qk1NzU+tSm1DHUSdRl1G3Uh9
n3qG+jsNA404jT7NPppYmgKaWppemmc0X4hEojBRh+hKjCEWEOuId4iviBskRpIUyZTkSzpIqiC1
kMZJH2gJtEK0urTutEm0pbQ3aB/SrtAR6ITp9Om86FLpKuja6Z7QrdEz0svSW9GH0R+hv0w/SL/I
gGMQZjBk8GXIZKhhuMMwx4hiFGDUZ/RhPMR4nrGfcZ4JyyTCZMoUzJTPdJVphGmVmYFZgdmROYG5
grmLeZoFxSLMYsoSylLI0sQyyfKDlZtVl9WPNZf1Gus46zobJ5sOmx9bHlsD2wTbD3YyuyF7CHsR
eyv7Sw40hziHDUc8xxmOfo4VTiZOdU4fzjzOJs4pLphLnMuWK5mrhmuYa42bh9uYO5L7FPcd7hUe
Fh4dnmCe4zzdPEu8jLxavEG8x3l7eJfJzGRdcii5jHyXvMrHxWfCF8t3jm+Eb5NfhN+BP4O/gf+l
AJWAioC/wHGBPoFVQV5BS8EUwXrBKSGCkIpQoNBJoXtC68Iiwk7Ch4VbhRdF2ERMRZJE6kVeiBJF
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
--089e013a1ede00643f04dabd89c3--

0
skip
4/19/2013 9:38:08 PM
Interesting. Which version of OSX is this? I'm running Mountain Lion.

-marius

0
marius
4/19/2013 11:33:58 PM
Ditto.

On Apr 19, 2013, at 4:33 PM, "marius a. eriksen" <marius@monkey.org> wrote:

> Interesting. Which version of OSX is this? I'm running Mountain Lion.
> 
> -marius
> 

0
skip
4/19/2013 11:55:49 PM
I'm on 10.8.3 and I see the grey screen w/ no plot.

Skip's still on that "Blue" Quartz UI setting, the stop light colors on =
the window buttons give it away, so he may not have done a full rebuild =
of p9p in a while.  I can't get all of p9p to compile on 10.8, that =
mean's there are likely a few bits missing that never made it forward =
from my pre 10.7 builds.

I've tried forcing a flush image in during the event loop and after =
resizing the window.  All that does is give a clean white background =
that didn't use to exist.  Still no real plot info.

To get around the drawing problems I always went w/ grap | pic | troff | =
tr2post | psfonts > t.ps.

-jas



On Apr 19, 2013, at 6:33 PM, marius a. eriksen <marius@monkey.org> =
wrote:

> Interesting. Which version of OSX is this? I'm running Mountain Lion.
>=20
> -marius
>=20

0
jas
4/20/2013 12:20:48 AM
--089e011763b9363edc04dac0e13f
Content-Type: text/plain; charset=ISO-8859-1

right... uname says, 10.7.5 -- which i can see now is a Lion, but not of
the Mountains


On Fri, Apr 19, 2013 at 5:20 PM, Jeff Sickel <jas@corpus-callosum.com>wrote:

> I'm on 10.8.3 and I see the grey screen w/ no plot.
>
> Skip's still on that "Blue" Quartz UI setting, the stop light colors on
> the window buttons give it away, so he may not have done a full rebuild of
> p9p in a while.  I can't get all of p9p to compile on 10.8, that mean's
> there are likely a few bits missing that never made it forward from my pre
> 10.7 builds.
>
> I've tried forcing a flush image in during the event loop and after
> resizing the window.  All that does is give a clean white background that
> didn't use to exist.  Still no real plot info.
>
> To get around the drawing problems I always went w/ grap | pic | troff |
> tr2post | psfonts > t.ps.
>
> -jas
>
>
>
> On Apr 19, 2013, at 6:33 PM, marius a. eriksen <marius@monkey.org> wrote:
>
> > Interesting. Which version of OSX is this? I'm running Mountain Lion.
> >
> > -marius
> >
>
>
>

--089e011763b9363edc04dac0e13f
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">right... uname says, 10.7.5 -- which i can see now is a Li=
on, but not of the=A0Mountains=A0</div><div class=3D"gmail_extra"><br><br><=
div class=3D"gmail_quote">On Fri, Apr 19, 2013 at 5:20 PM, Jeff Sickel <spa=
n dir=3D"ltr">&lt;<a href=3D"mailto:jas@corpus-callosum.com" target=3D"_bla=
nk">jas@corpus-callosum.com</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">I&#39;m on 10.8.3 and I see the grey screen =
w/ no plot.<br>
<br>
Skip&#39;s still on that &quot;Blue&quot; Quartz UI setting, the stop light=
 colors on the window buttons give it away, so he may not have done a full =
rebuild of p9p in a while. =A0I can&#39;t get all of p9p to compile on 10.8=
, that mean&#39;s there are likely a few bits missing that never made it fo=
rward from my pre 10.7 builds.<br>

<br>
I&#39;ve tried forcing a flush image in during the event loop and after res=
izing the window. =A0All that does is give a clean white background that di=
dn&#39;t use to exist. =A0Still no real plot info.<br>
<br>
To get around the drawing problems I always went w/ grap | pic | troff | tr=
2post | psfonts &gt; <a href=3D"http://t.ps" target=3D"_blank">t.ps</a>.<br=
>
<br>
-jas<br>
<div class=3D"im HOEnZb"><br>
<br>
<br>
On Apr 19, 2013, at 6:33 PM, marius a. eriksen &lt;<a href=3D"mailto:marius=
@monkey.org">marius@monkey.org</a>&gt; wrote:<br>
<br>
</div><div class=3D"HOEnZb"><div class=3D"h5">&gt; Interesting. Which versi=
on of OSX is this? I&#39;m running Mountain Lion.<br>
&gt;<br>
&gt; -marius<br>
&gt;<br>
<br>
<br>
</div></div></blockquote></div><br></div>

--089e011763b9363edc04dac0e13f--

0
skip
4/20/2013 1:37:33 AM
On 19/04/2013 23:23, marius a. eriksen wrote:
> % @{echo 1; echo 2; echo 3} | graph -a | plot
>
> Yields only a lonely, blank window.

Using drawterm connected to a native Plan 9, it's working
but if I drag the window, the plot disappears (the window
becomes blank).

Nicolas

0
nbercher
4/20/2013 8:00:22 AM
Plot doesn't have any redraw in eresized().  It would need to redraw
the screen and reprocess the data for the new size.  Fixing this
would probably fix devdraw cocoa versions as well and enable the
server option.

This could be why devdraw on Mountain Lion also ends up with a
blank screen.

-jas

On Apr 20, 2013, at 3:00 AM, Nicolas Bercher <nbercher@yahoo.fr> wrote:

> On 19/04/2013 23:23, marius a. eriksen wrote:
>> % @{echo 1; echo 2; echo 3} | graph -a | plot
>> 
>> Yields only a lonely, blank window.
> 
> Using drawterm connected to a native Plan 9, it's working
> but if I drag the window, the plot disappears (the window
> becomes blank).
> 
> Nicolas
> 

0
jas
4/20/2013 6:24:42 PM
This is a multi-part message in MIME format.
--upas-gklqhbppfjhljxtiyiuzsuafwn
Content-Disposition: inline
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

On Sat Apr 20 14:25:53 EDT 2013, jas@corpus-callosum.com wrote:
> Plot doesn't have any redraw in eresized().  It would need to redraw
> the screen and reprocess the data for the new size.  

yes.  this is a problem for plan 9.  you cannot move or hide the plot
window.  imho this is pretty antisocial.

i've attached a version that always uses the double-buffer buffer
to allow for resize events.  double-buffering now only prevents
the draw from going directly to the screen.  it is also possible to
select exit from the menu before the input is exhausted.  for
programs like mapdemo, this is important.

a better solution would be to additionally save all the draw commands
(between clears) and if the screen size has changed, recompute.  otherwise
if redrawing is necessary, the double-buffer buffer can be reused.

unfortunately, i'm too lazy for that.

> Fixing this
> would probably fix devdraw cocoa versions as well and enable the
> server option.
> 
> This could be why devdraw on Mountain Lion also ends up with a
> blank screen.

it would seem that mountain lion devdraw has a bug.  devdraw should not
send a resize event until there is a, er, resize event.  this spurious
event is an error.

- erik
--upas-gklqhbppfjhljxtiyiuzsuafwn
Content-Disposition: attachment; filename=plotdiff
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

diff -c /n/dump/2013/0421/sys/src/cmd/plot/plot.c plot.c
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:3,9 - plot.c:3,11
  #include <bio.h>
  #include "plot.h"
  #include <draw.h>
- #include <event.h>
+ #include <thread.h>
+ #include <mouse.h>
+ #include <keyboard.h>
  
  void	define(char*);
  void	call(char*);
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:106,111 - plot.c:108,114
  
  #define	NFSTACK	50
  struct fstack{
+ 	char name[128];
  	int peekc;
  	int lineno;
  	char *corebuf;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:124,146 - plot.c:127,228
  int cnt[NPTS];			/* control-polygon vertex counts */
  double *pts[NPTS];		/* control-polygon vertex pointers */
  
- extern void m_swapbuf(void);
+ extern void m_swapbuf(void);	/* reaching into implementation.  ick. */
+ extern Image *offscreen;
  
  void
- eresized(int new){
- 	if(new && getwindow(display, Refnone) < 0){
- 		fprint(2, "Can't reattach to window: %r\n");
- 		exits("resize");
+ resize(Point p)
+ {
+ 	int fd;
+ 
+ 	fd = open("/dev/wctl", OWRITE);
+ 	if(fd >= 0){
+ 		fprint(fd, "resize -dx %d -dy %d", p.x+4*2, p.y+4*2);
+ 		close(fd);
  	}
+ }
+ 
+ void
+ resizeto(Point p)
+ {
+ 	Point s;
+ 
+ 	s = (Point){Dx(screen->r), Dy(screen->r)};
+ 	if(eqpt(p, s))
+ 		return;
+ 	resize(p);
+ }
+ 
+ void
+ eresized(int new)
+ {
+ 	if(new && getwindow(display, Refnone) < 0)
+ 		sysfatal("plot: can't reattach to window: %r\n");
+ //	resizeto((Point){Dx(offscreen->r)+4, Dy(offscreen->r)+4});
  	m_swapbuf();
  }
+ 
  char *items[]={
  	"exit",
  	0
  };
  Menu menu={items};
+ 
  void
- main(int arc, char *arv[]){
+ mouseproc(void*)
+ {
+ 	void *v;
+ 	Rune r;
+ 	Alt alts[4];
+ 	Keyboardctl *k;
+ 	Mousectl *m;
+ 	Mouse mc;
+ 	enum{Amouse, Akbd, Aresize, Aend};
+ 
+ 	m = initmouse(nil, screen);
+ 	k = initkeyboard(nil);
+ 
+ 	memset(alts, 0, sizeof alts);
+ 	alts[Amouse].c = m->c;
+ 	alts[Amouse].v = &mc;
+ 	alts[Amouse].op = CHANRCV;
+ 
+ 	alts[Akbd].c = k->c;
+ 	alts[Akbd].v = &r;
+ 	alts[Akbd].op = CHANRCV;
+ 
+ 	alts[Aresize].c = m->resizec;
+ 	alts[Aresize].v = &v;
+ 	alts[Aresize].op = CHANRCV;
+ 
+ 	alts[Aend].op = CHANEND;
+ 
+ 	for(;;)
+ 		switch(alt(alts)){
+ 		default:
+ 			sysfatal("mouse!");
+ 		case Amouse:
+ 			if(mc.buttons & 4) {
+ 				if(menuhit(3, m, &menu, nil) == 0)
+ 					threadexitsall("");
+ 			}
+ 			break;
+ 		case Akbd:
+ 			switch(r){
+ 			case 'q':
+ 			case 0x7f:
+ 			case 0x04:
+ 				threadexitsall("");
+ 			}
+ 			break;
+ 		case Aresize:
+ 			eresized(1);
+ 			;
+ 		}
+ }
+ 
+ void
+ threadmain(int arc, char *arv[]){
  	char *ap;
  	Biobuf *bp;
  	int fd;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:147,157 - plot.c:229,240
  	int i;
  	int dflag;
  	char *oflag;
- 	Mouse m;
+ 
  	bp = 0;
  	fd = dup(0, -1);		/* because openpl will close 0! */
  	dflag=0;
  	oflag="";
+ 	argv0 = arv[0];
  	for(i=1;i!=arc;i++) if(arv[i][0]=='-') switch(arv[i][1]){
  	case 'd': dflag=1; break;
  	case 'o': oflag=arv[i]+2; break;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:158,164 - plot.c:241,249
  	case 's': fd=server(); break;
  	}
  	openpl(oflag);
- 	if(1||dflag) doublebuffer();
+ 	proccreate(mouseproc, nil, 32*1024);
+ 	if(dflag)
+ 		doublebuffer();
  	for (; arc > 1; arc--, arv++) {
  		if (arv[1][0] == '-') {
  			ap = arv[1];
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:196,205 - plot.c:281,288
  	}
  	closepl();
  	flushimage(display, 1);
- 	for(;;){
- 		m=emouse();
- 		if(m.buttons&4 && emenuhit(3, &m, &menu)==0) exits(0);
- 	}
+ 	for(;;)
+ 		sleep(1000);
  }
  int isalpha(int c)
  {
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:324,333 - plot.c:407,414
  			c=nextc();
  		}while(strchr(" \t\n", c) || c!='.' && c!='+' && c!='-' && ispunct(c));
  		fsp->peekc=c;
- 		if(!numstring()){
- 			fprint(2, "line %d: number expected\n", fsp->lineno);
- 			exits("input error");
- 		}
+ 		if(!numstring())
+ 			sysfatal("%s:%d: number expected\n", fsp->name, fsp->lineno);
  		x[i]=atof(argstr)*fsp->scale;
  	}
  }
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:358,374 - plot.c:439,449
  		c=nextc();
  		if(c==r){
  			if(*cntp){
- 				if(*cntp&1){
- 					fprint(2, "line %d: phase error\n",
- 						fsp->lineno);
- 					exits("bad input");
- 				}
+ 				if(*cntp&1)
+ 					sysfatal("%s:%d: phase error", fsp->name, fsp->lineno);
  				*cntp/=2;
- 				if(ptsp==&pts[NPTS]){
- 					fprint(2, "line %d: out of polygons\n",
- 						fsp->lineno);
- 					exits("exceeded limit");
- 				}
+ 				if(ptsp==&pts[NPTS])
+ 					sysfatal("%s:%d: out of polygons", fsp->name, fsp->lineno);
  				*++ptsp=xp;
  				*++cntp=0;
  			}
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:383,396 - plot.c:458,467
  		case '0': case '1': case '2': case '3': case '4':
  		case '5': case '6': case '7': case '8': case '9':
  			fsp->peekc=c;
- 			if(!numstring()){
- 				fprint(2, "line %d: expected number\n", fsp->lineno);
- 				exits("bad input");
- 			}
- 			if(xp==&x[NX]){
- 				fprint(2, "line %d: out of space\n", fsp->lineno);
- 				exits("exceeded limit");
- 			}
+ 			if(!numstring())
+ 				sysfatal("%s:%d: expected number", fsp->name, fsp->lineno);
+ 			if(xp==&x[NX])
+ 				sysfatal("%s:%d: out of space", fsp->name, fsp->lineno);
  			*xp++=atof(argstr);
  			++*cntp;
  			break;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:447,465 - plot.c:518,531
  			for(pplots=plots;pplots->cc;pplots++)
  				if(strncmp(argstr, pplots->cc, pplots->numc)==0)
  					break;
- 			if(pplots->cc==0){
- 				fprint(2, "line %d, %s unknown\n", fsp->lineno,
- 					argstr);
- 				exits("bad command");
- 			}
+ 			if(pplots->cc==0)
+ 				sysfatal("%s:%d: %s unknown", fsp->name, fsp->lineno, argstr);
  		}
  		else{
  			fsp->peekc=c;
  		}
- 		if(!pplots){
- 			fprint(2, "line %d, no command!\n", fsp->lineno);
- 			exits("no command");
- 		}
+ 		if(!pplots)
+ 			sysfatal("%s:%d: no command\n", fsp->name, fsp->lineno);
  		switch(pplots-plots){
  		case ARC:	numargs(7); rarc(x[0],x[1],x[2],x[3],x[4],x[5],x[6]); break;
  		case BOX:	numargs(4); box(x[0], x[1], x[2], x[3]); break;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:498,505 - plot.c:564,570
  		case TEXT:	strarg();   text(argstr); pplots=0; break;
  		case VEC:	numargs(2); vec(x[0], x[1]); break;
  		default:
- 			fprint(2, "plot: missing case %ld\n", pplots-plots);
- 			exits("internal error");
+ 			sysfatal("%s:%d: plot: missing case %ld\n", fsp->name, fsp->lineno, pplots-plots);
  		}
  	}
  	return 1;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:516,525 - plot.c:581,588
  	int curly = 0;
  	ap = a;
  	while(isalpha(*ap))ap++;
- 	if(ap == a){
- 		fprint(2,"no name with define\n");
- 		exits("define");
- 	}
+ 	if(ap == a)
+ 		sysfatal("plot: no name with define\n");
  	i = ap - a;
  	if(names+i+1 > enames){
  		names = malloc((unsigned)512);
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:536,545 - plot.c:599,606
  	fptr->stash = nstash;
  	while(*ap != '{')
  		if(*ap == '\n'){
- 			if((ap=Brdline(fsp->fd, '\n'))==0){
- 				fprint(2,"unexpected end of file\n");
- 				exits("eof");
- 			}
+ 			if((ap=Brdline(fsp->fd, '\n'))==0)
+ 				sysfatal("plot: unexpected eof");
  		}
  		else ap++;
  	while((j=Bgetc(fsp->fd))!= Beof){
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:553,566 - plot.c:614,627
  			free(bstash);
  			size += 1024;
  			bstash = realloc(bstash,size);
+ 			if(bstash == nil)
+ 				sysfatal("plot: realloc: %r");
  			estash = bstash+size;
  		}
  	}
  	*nstash++ = '\0';
- 	if(fptr++ >= &flibr[MAXL]){
- 		fprint(2,"Too many objects\n");
- 		exits("too many objects");
- 	}
+ 	if(fptr++ >= &flibr[MAXL])
+ 		sysfatal("too many objects");
  }
  void call(char *a){
  	char *ap;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:575,584 - plot.c:636,643
  		if (!(strcmp(a, f->name)))
  			break;
  	}
- 	if(f == fptr){
- 		fprint(2, "object %s not defined\n",a);
- 		exits("undefined");
- 	}
+ 	if(f == fptr)
+ 		sysfatal("plot: object %s not defined",a);
  	*ap = sav;
  	while (isspace(*ap) || *ap == ',') 
  		ap++;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:585,594 - plot.c:644,652
  	if (*ap != '\0')
  		SC = atof(ap);
  	else SC = 1.;
- 	if(++fsp==&fstack[NFSTACK]){
- 		fprint(2, "input stack overflow\n");
- 		exits("blew stack");
- 	}
+ 	if(++fsp==&fstack[NFSTACK])
+ 		sysfatal("plot: input stack overflow");
+ 	snprint(fsp->name, sizeof fsp->name, "call %s", f->name);
  	fsp->peekc=Beof;
  	fsp->lineno=1;
  	fsp->corebuf=f->stash;
/n/dump/2013/0421/sys/src/cmd/plot/plot.c:598,611 - plot.c:656,666
  void include(char *a){
  	Biobuf *fd;
  	fd=Bopen(a, OREAD);
- 	if(fd==0){
- 		perror(a);
- 		exits("can't include");
- 	}
- 	if(++fsp==&fstack[NFSTACK]){
- 		fprint(2, "input stack overflow\n");
- 		exits("blew stack");
- 	}
+ 	if(fd==0)
+ 		sysfatal("plot: cant include %s: %r", a);
+ 	if(++fsp==&fstack[NFSTACK])
+ 		sysfatal("plot: input stack overflow");
+ 	snprint(fsp->name, sizeof fsp->name, "%s", a);
  	fsp->peekc=Beof;
  	fsp->lineno=1;
  	fsp->corebuf=0;
diff -c /n/dump/2013/0421/sys/src/cmd/plot/libplot/machdep.c libplot/machdep.c
/n/dump/2013/0421/sys/src/cmd/plot/libplot/machdep.c:1,10 - libplot/machdep.c:1,38
  #include "mplot.h"
  Image *offscreen;
+ static int buffer;
+ 
+ static Point
+ xlp(Point p)
+ {
+ 	p.x += screen->r.min.x + 4 - offscreen->r.min.x;
+ 	p.y += screen->r.min.y + 4 - offscreen->r.min.y;
+ 	return p;
+ }
+ 
+ static Rectangle
+ xlr(Rectangle r)
+ {
+ 	int dx, dy;
+ 
+ 	dx = screen->r.min.x + 4 - offscreen->r.min.x;
+ 	dy = screen->r.min.y + 4 - offscreen->r.min.y;
+ 	r.min.x += dx;
+ 	r.min.y += dy;
+ 	r.max.x += dx;
+ 	r.max.y += dy;
+ 	return r;
+ }
+ 
  /*
   * Clear the window from x0, y0 to x1, y1 (inclusive) to color c
   */
- void m_clrwin(int x0, int y0, int x1, int y1, int c){
+ void
+ m_clrwin(int x0, int y0, int x1, int y1, int c)
+ {
  	draw(offscreen, Rect(x0, y0, x1+1, y1+1), getcolor(c), nil, ZP);
+ 	if(offscreen != screen && !buffer)
+ 		draw(screen, xlr(Rect(x0, y0, x1+1, y1+1)), getcolor(c), nil, ZP);
  }
  /*
   * Draw text between pointers p and q with first character centered at x, y.
/n/dump/2013/0421/sys/src/cmd/plot/libplot/machdep.c:11,114 - libplot/machdep.c:39,135
   * Use color c.  Centered if cen is non-zero, right-justified if right is non-zero.
   * Returns the y coordinate for any following line of text.
   */
- int m_text(int x, int y, char *p, char *q, int c, int cen, int right){
+ int
+ m_text(int x, int y, char *p, char *q, int c, int cen, int right)
+ {
  	Point tsize;
- 	USED(c);
- 	tsize=stringsize(font, p);
- 	if(cen) x -= tsize.x/2;
- 	else if(right) x -= tsize.x;
+ 
+ 	tsize = stringsize(font, p);
+ 	if(cen)
+ 		x -= tsize.x/2;
+ 	else if(right)
+ 		x -= tsize.x;
  	stringn(offscreen, Pt(x, y-tsize.y/2), getcolor(c), ZP, font, p, q-p);
+ 	if(offscreen != screen && !buffer)
+ 		stringn(screen, xlp(Pt(x, y-tsize.y/2)), getcolor(c), ZP, font, p, q-p);
  	return y+tsize.y;
  }
  /*
+  * draw point x, y
+  */
+ void
+ m_dpt(double x, double y)
+ {
+ 	Image *c;
+ 
+ 	c = getcolor(e1->foregr);
+ 	draw(offscreen, Rect(SCX(x), SCY(y), SCX(x)+1, SCY(y)+1), c, nil, ZP);
+ 	if(offscreen != screen && !buffer)
+ 		draw(screen, xlr(Rect(SCX(x), SCY(y), SCX(x)+1, SCY(y)+1)), c, nil, ZP);
+ }
+ 
+ /*
   * Draw the vector from x0, y0 to x1, y1 in color c.
   * Clipped by caller
   */
- void m_vector(int x0, int y0, int x1, int y1, int c){
+ void
+ m_vector(int x0, int y0, int x1, int y1, int c)
+ {
  	line(offscreen, Pt(x0, y0), Pt(x1, y1), Endsquare, Endsquare, 0, getcolor(c), ZP);
+ 	if(offscreen != screen && !buffer)
+ 		line(screen, xlp(Pt(x0, y0)), xlp(Pt(x1, y1)), Endsquare, Endsquare, 0, getcolor(c), ZP);
  }
- char *scanint(char *s, int *n){
- 	while(*s<'0' || '9'<*s){
- 		if(*s=='\0'){
- 			fprint(2, "plot: bad -Wxmin,ymin,xmax,ymax\n");
- 			exits("bad arg");
- 		}
- 		s++;
- 	}
- 	*n=0;
- 	while('0'<=*s && *s<='9'){
- 		*n=*n*10+*s-'0';
- 		s++;
- 	}
- 	return s;
- }
- char *rdenv(char *name){
- 	char *v;
- 	int fd, size;
- 	fd=open(name, OREAD);
- 	if(fd<0) return 0;
- 	size=seek(fd, 0, 2);
- 	v=malloc(size+1);
- 	if(v==0){
- 		fprint(2, "Can't malloc: %r\n");
- 		exits("no mem");
- 	}
- 	seek(fd, 0, 0);
- 	read(fd, v, size);
- 	v[size]=0;
- 	close(fd);
- 	return v;
- }
  /*
   * Startup initialization
   */
- void m_initialize(char *s){
- 	static int first=1;
+ void m_initialize(char*)
+ {
+ 	static int once;
  	int dx, dy;
- 	USED(s);
- 	if(first){
- 		if(initdraw(0,0,"plot") < 0)
- 			sysfatal("initdraw: %r");
- 		einit(Emouse);
- 		clipminx=mapminx=screen->r.min.x+4;
- 		clipminy=mapminy=screen->r.min.y+4;
- 		clipmaxx=mapmaxx=screen->r.max.x-5;
- 		clipmaxy=mapmaxy=screen->r.max.y-5;
- 		dx=clipmaxx-clipminx;
- 		dy=clipmaxy-clipminy;
- 		if(dx>dy){
- 			mapminx+=(dx-dy)/2;
- 			mapmaxx=mapminx+dy;
- 		}
- 		else{
- 			mapminy+=(dy-dx)/2;
- 			mapmaxy=mapminy+dx;
- 		}
- 		first=0;
- 		offscreen = screen;
+ 
+ 	if(once)
+ 		return;
+ 	once = 1;
+ 
+ 	if(initdraw(nil, nil, "plot") < 0)
+ 		sysfatal("initdraw: %r");
+ /////	einit(Emouse);
+ 	offscreen = allocimage(display, insetrect(screen->r, 4), screen->chan, 0, -1);
+ 	if(offscreen == nil)
+ 		sysfatal("Can't double buffer\n");
+ 	clipminx = mapminx = screen->r.min.x+4;
+ 	clipminy = mapminy = screen->r.min.y+4;
+ 	clipmaxx = mapmaxx = screen->r.max.x-5;
+ 	clipmaxy = mapmaxy = screen->r.max.y-5;
+ 	dx = clipmaxx-clipminx;
+ 	dy = clipmaxy-clipminy;
+ 	if(dx>dy){
+ 		mapminx += (dx-dy)/2;
+ 		mapmaxx = mapminx+dy;
  	}
+ 	else{
+ 		mapminy += (dy-dx)/2;
+ 		mapmaxy = mapminy+dx;
+ 	}
  }
  /*
   * Clean up when finished
   */
- void m_finish(void){
+ void m_finish(void)
+ {
  	m_swapbuf();
  }
- void m_swapbuf(void){
- 	if(offscreen!=screen)
- 		draw(screen, offscreen->r, offscreen, nil, offscreen->r.min);
+ void m_swapbuf(void)
+ {
+ 	draw(screen, insetrect(screen->r, 4), offscreen, nil, offscreen->r.min);
  	flushimage(display, 1);
  }
- void m_dblbuf(void){
- 	if(offscreen==screen){
- 		offscreen=allocimage(display, insetrect(screen->r, 4), screen->chan, 0, -1);
- 		if(offscreen==0){
- 			fprint(2, "Can't double buffer\n");
- 			offscreen=screen;
- 		}
- 	}
+ void m_dblbuf(void)
+ {
+ 	buffer = 1;
  }
- /* Assume colormap entry because
+ 
+ /*
   * Use cache to avoid repeated allocation.
   */
  struct{
/n/dump/2013/0421/sys/src/cmd/plot/libplot/machdep.c:127,136 - libplot/machdep.c:148,155
  			return icache[j].i;
  
  	i = allocimage(display, Rect(0, 0, 1, 1), RGB24, 1, v);
- 	if(i == nil){
- 		fprint(2, "plot: can't allocate image for color: %r\n");
- 		exits("allocimage");
- 	}
+ 	if(i == nil)
+ 		sysfatal("plot: can't allocate image for color: %r");
  	for(j=0; j<nelem(icache); j++)
  		if(icache[j].i == nil){
  			icache[j].v = v;
/n/dump/2013/0421/sys/src/cmd/plot/libplot/machdep.c:137,142 - libplot/machdep.c:156,161
  			icache[j].i = i;
  			break;
  		}
- 
+ if(j == nelem(icache))sysfatal("icache: too small");
  	return i;
  }
diff -c /n/dump/2013/0421/sys/src/cmd/plot/libplot/mplot.h libplot/mplot.h
/n/dump/2013/0421/sys/src/cmd/plot/libplot/mplot.h:1,6 - libplot/mplot.h:1,5
  #include <u.h>
  #include <libc.h>
- //#include <stdio.h>
  #include <draw.h>
  #include <event.h>
  #define SCX(A) ((((A) - e1->xmin)*e1->scalex  + e1->left)+.5)
--upas-gklqhbppfjhljxtiyiuzsuafwn--

0
quanstro
4/22/2013 3:58:08 AM
also, /n/sources/patch/plotresize

- erik

0
quanstro
4/22/2013 4:17:02 AM
Reply:

Similar Artilces:

plot 1, -1, 1, -1, -1
Hi, How to plot those numbers in a rectangle style? thanks x = linspace(-4*pi,4*pi,1000); y = sin(x); plot(x,sign(y)), axis([-12 12 -2 2]) PZ <patrick.zou@gmail.com> wrote in message <d64c545f-f2ac-4f87-af89-051bda896707@x6g2000vbg.googlegroups.com>... > Hi, > > How to plot those numbers in a rectangle style? > > thanks help stairs stairs([-1 1 -1 1 -1 1]) hth Jos ...

[ANN] Graphviz for Mac OS X 1.12 (v10) [ANN] Graphviz for Mac OS X 1.12 (v8) [ANN] Graphviz for Mac OS X 1.12 (v8)
Hi all, Yet another Graphviz version. The old application icon had been voted off the island, and brand new application and document icons flown in for the task. Comprehensive help features in this version too. http://www.pixelglow.com/graphviz/ What's new: ------------ Added new application and document icons. Added comprehensive help. Fixed changes not affecting graph size displaying incorrectly [BTr]. Fixed export then close crashing the export of an open window. Improved shadowed frame for graph [NRi]. Improved status display [NRi]. Changed sources to pure BSD license. Cheers, Gl...

[ANN] Graphviz for Mac OS X 1.13 (v13) [ANN] Graphviz for Mac OS X 1.12 (v8) [ANN] Graphviz for Mac OS X 1.12 (v8)
Dear All, I've just released the newest version of Mac Graphviz, featuring shapefile support and enhanced zoom. http://www.pixelglow.com/graphviz/ Shapefiles supported include PDF, EPS, PS, JPEG, PNG and all Quicktime formats. Either specify an absolute or relative (to working directory) file path, or a URL using the shapefile attribute. Developers can now also use the graphviz.framework directly with #include headers in C e.g. using Xcode "Add Frameworks..."; documentation is available from the main Graphviz site -- http://www.research.att.com/sw/tools/graphviz/libguide.pdf...

[ANN] Graphviz for Mac OS X 1.12 (v8) [ANN] Graphviz for Mac OS X 1.12 (v8) [ANN] Graphviz for Mac OS X 1.12 (v8)
Hi all, It's been a busy week or two at Pixelglow Software. Here's a brand new version of Graphviz, all spit and polish now. You'll enjoy the integrated color and font panel support, hand cursor panning and remembered settings. And everyone's most asked for -- a single click on the Edit tool will now bring up the DOT code for you to edit, and of course when you save it the graph automatically re-renders. http://www.pixelglow.com/graphviz/download/ Here's the lowdown: Added edit, render and stop toolbar items [PCh]. Added integrated font and color fields and panels. Adde...

[ANN] Graphviz for Mac OS X 1.12 (v12) [ANN] Graphviz for Mac OS X 1.12 (v8) [ANN] Graphviz for Mac OS X 1.12 (v8)
Dear All: Them pesky bugs. A few more squashed courtesy of the sleepy pixel. http://www.pixelglow.com/graphviz/ What's new in v11 ------------ Fixed some comprehensive help [NRi]. Fixed scale option placeholder [NRi]. Improved application and document icons. Example files now double-click to open in application. What's new in v12 ------------ Added layout option tooltips [NRi]. Fixed layout popup button changing wrong graph [MKe]. Clicking on warning icon now opens Activity window [NRi, AM]. Revert menu item now disabled. Cheers, Glen Low --- pixelglow software | simply brillian...

FLAC 1.1.1 on OS/2
Did anybody succeed in building a correctly working FLAC on OS/2? The distribution page claims that OS/2 build is supported, but actually it is not even close to be supported... Fixing "obvious flaws", I can make the test scripts run, but they show subtle (?) corruption of the sound. Typical errors are like simple iterator on writable file creating APPLICATION block creating PADDING block is writable = 1 [S]VP try to write over STREAMINFO block... FLAC__metadata_simple_iterator_set_block() returned false like it should [S]VP next...

1 - 1, 1 -1, 1-1, 1
Hi, I have a question regarding lexical analysis. I recently came across a bug in our lexical analyser in phc (www.phpcompiler.org), that I am unsure how to solve. This is the problem: our current definition for integer constant looks something like INT ([1-9][0-9]*)|0 In particular, note that it does not allow for an (optional) "+" or "-" at the start of the integer. This means that the strings "1 - 1", "1 -1" and "1-1" all generate the same sequence of three tokens INT(1), OP(-), INT(1), for which the syntax analyser generates the subtree BIN_OP(-, 1, 1). For the string "1 - -1", the lexer (unsurprisingly) generates INT(1), OP(-), OP(-), INT(1). The syntax analyser recognises this as BIN_OP(1, UNARY_OP(-, 1)). In other words, the second "-" is treated as a unary operator, rather than as part of the number. This works fine, with the sole exception of the number "-2147483648". The problem is, of course, overflow: -2147483648 is a valid negative number (assuming 32-bit numbers), but the integer 2147483648 is _not_ a valid positive number. Thus, the above method of dealing with "-" as a unary operator breaks down. The solution is to interpret the "-" as part of the number, and generate INT(-2147483648), rather than OP(-), INT(...). However, changing the definition of INT to INT [+-]?([1-9][0-9]*)|0 causes "1-1" to be recognised as INT(1), INT(-1), which is...

[9fans] Plan9 as an everyday OS
--0016364273773c02e8046e5c23bf Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi all, I've just installed (with few difficulties, I must admit) a fresh Plan9 on my Dell Inspiron laptop. I played with it and I'd really like to study it and get used to it. Ideally, I would like to make it my "everyday OS", to do all the nice stuff you can do with a computer (a part from work and study), like browsing the web, watching movies and so on... Is anyone using it for such things? Is there, for example, a decent browser for Plan9 (I haven't found any)...

1.1.1.1 ?
hi my firewall logs dropped packets from an internal IP address trying to contact 1.1.1.1 through port 9999. Any ideas whether 1.1.1.1 is valid IP? and what is port 9999?? thanks mike wrote: > hi > > my firewall logs dropped packets from an internal IP address trying to > contact 1.1.1.1 through port 9999. Any ideas whether 1.1.1.1 is valid > IP? and what is port 9999?? > thanks These trojans *BlitzNet*, *Backdoor.Oracle*, *Backdoor.Spadeace* uses port 9999 -- S.S. "StarScripter" <Star@privacy.net> wrote in message news:<bv8ejj$p54t3$1@ID-185702.new...

[9fans] plot(1) to file?
Hey guys, I've got some data I want to put in a graph. I got graph |plot going easy enough, which gets me a nice pic on the screen, but I can't work out how to generate an image file instead. plot(1) mentions troff which convinces me that it is possible, I just can't figure out how. I'm using p9p, otherwise I could probably do something clever with /dev/screen... -sqweek > I've got some data I want to put in a graph. I got graph |plot going > easy enough, which gets me a nice pic on the screen, but I can't work > out how to generate an image file instead....

[9fans] osx updates for p9p
--Apple-Mail-29-528579474 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit A few changes for p9p on OS X: Here's a set of patches and a merge to get fuse and a few other bits working on OSX 10.5: 2916.patch :: [9pfuse] updates to support current MacFUSE 2921.patch :: [file.c] X3F support 2922.patch :: [mount] macfuse change 2923.patch :: (tip) merge in macfuse changes and file update 2916.patch is needed to use the latest MacFUSE release for OS X 10.5. Skip's been testing the patch w/ OS X 10.4. -jas --Apple-...

ActivePython 3.1.1.2 vs Python 3.1.1 for OSX?
I am just curious which I should use. I am going to start learning Python soon. Are they comparable and I just do a "eenie meenie minie moe"? Bob On 1 Oct, 00:51, Robert Hicks <sigz...@gmail.com> wrote: > I am just curious which I should use. I am going to start learning > Python soon. Are they comparable and I just do a "eenie meenie minie > moe"? > > Bob First off, a great choice of language to begin trying! Is it your first language (I'm guessing not), or do you come from another 'background'. Basically, Active is a possible 'supe...

[9fans] dvips(1) for Plan9: done
Hello, With some delay, as usual, the work is done and now dvips(1) is up and running in kerTeX 0.8.0.0. As an "advertising" feature, I have put on the site a (poor resolution) jpeg conversion of Tomas Rokicki test page (generated on Plan9 so it works...) just to give you the incentive to look. Next step (and last for first complete release) will be MetaPost. Here is an extract of the README file to give you a taste of the work and modifications. But mind you, it is called README, and I really mean it ;-) ----------8< KerTeX dvips(1) is a modified version. S...

[9fans] Broken links on Plan9 homepage
I'm getting HTTP 403 (i.e., not authorized) errors when trying the links on the homepage (http://www.cs.bell-labs.com/plan9dist/ or http://plan9.bell-labs.com/plan9/) for the Papers, Release Notes and Manual pages. On Sat, Nov 15, 2003 at 04:08:37PM -0800, John E. Barham wrote: > I'm getting HTTP 403 (i.e., not authorized) errors when trying the links on > the homepage (http://www.cs.bell-labs.com/plan9dist/ or > http://plan9.bell-labs.com/plan9/) for the Papers, Release Notes and Manual > pages. me too. looks like something whacky happened earlier today - i sent an ema...

[9fans] p9p host os recommendation
Hi Everyone, thanks for all the help with qemu and such. I've managed to get it running, but it appears to completely hog my XP laptop. So I'm abandoning my quest for P9 in a VM for the moment. I will now attempt at running P9P instead. Since it runs on so many platforms, what would people recommend I use as the host OS? Bearing in mind that I am working in a Windows only environment with an XP laptop, I'm looking for something I can run under VMWare. (I've got a reasonably chunky laptop with 1.5GB and 1.7GHz.) Essentially, which Unix variant is easiest to install on VMWa...

[9fans] p9p for Mac OS X
--S1BNGpv0yoYahz37 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Dear List, I would like to use the p9p tools for Mac OS X. As stupid as its defaults are the filesystem is case insensitive. Therefore font files for troff conflict (namely Hb and HB, maybe others too). Is anyone on this list using p9p on Mac OS X? If yes, what's been our solution for this issue? Kind regards, Christian --=20 You may use my gpg key for replies: pub 1024D/47F79788 2005/02/02 Christian Kellermann (C-Keen) --S1BNGpv0yoYahz37 Content-Typ...

[9fans] p9p acme freeze under osx
When I'm using p9p acme under OSX and I have a compile/svn commit etc... running in a win window and if I click on other windows a few times acme will freeze. Has any one else noticed this behavior? Noah On Wed, Nov 12, 2008 at 1:16 PM, Noah Evans <noah.evans@gmail.com> wrote: > When I'm using p9p acme under OSX and I have a compile/svn commit > etc... running in a win window and if I click on other windows a few > times acme will freeze. Has any one else noticed this behavior? When was the last time you rebuilt? Sounds like the behavior fixed by http://hg.pdos.csail...

[9fans] Getting output from plot(1)
I'm writing a little script to make venti usage graphs, and now that I'm near the end I'm trying to use plot(1) to plot my data. However, I can't seem to figure out any way of actually getting plot's output into something like a png file. Suggestions? Thanks John Floren -- Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn the only output driver for plot on plan9 is /dev/draw, you can display it and then grab the image from /dev/wsys - not so easy from cron though. You could use grap(1) but you can only get to ps and pdf from there (I think). -Steve ho...

PL/1 Version 1.1 and z/OS support
Hi guys, Can anyone tell me please if z/OS version 1.7 still supports PL/1 ver 1.1? Thanks, Ron. ronsho.shoshani@gmail.com wrote: > Hi guys, > > Can anyone tell me please if z/OS version 1.7 still supports PL/1 ver > 1.1? > I would expect it would probably *run*, baring LE incompatibalities (score one for static libraries). Hasn't EOS been announced for 1.1? Most of the incompatibilities with Enterprise PL/I have now been corrected. ronsho.shoshani@gmail.com wrote: > Hi guys, > > Can anyone tell me please if z/OS version 1.7 still supports PL/1 ver &g...

[9fans] p9p os x
If you run OS X, the next time you update your p9p tree and run ./INSTALL, your graphics programs will use native OS X windows instead of X11. This means that people interested in trying p9p on OS X no longer have to dig up the X11 install CD first. If you prefer X11 windows (and you might, if for example you ssh from other machines into your Mac and use X forwarding to run p9p programs), you can create a file $PLAN9/LOCAL.config containing the line WSYSTYPE=x11 to keep the old behavior. Russ ------=_Part_5111_5227966.1215621215124 Content-Type: text/plain; charset=ISO-8859-1 Content...

MacJanitor or OSX 10.5.1 broken?
Anyone been able to use MacJanitor after upgrading to 10.5.1? This is what happens when I run the weekly script Running weekly task.. Fri Nov 16 09:20:00 CST 2007 Rebuilding locate database: mktemp: mkdtemp failed on /var/folders/tX/tXzBVVrh2RW2OE+87xVs6U+++TI/-Tmp-//locateWhkFRbzgHV: Permission denied Rebuilding whatis database: makewhatis: /usr/share/man//usr/share/man:/usr/X11/man: No such file or directory makewhatis: /usr/X11/man//usr/share/man:/usr/X11/man: No such file or directory -- End of weekly output -- I'm having the same exact problem. Found anything on it yet? J...

[9fans] p9p OS X native resize
--GTGEtWEe6jD60dxL Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi there, while there I want to mention that the resizing event from os X does not seem to trigger a redraw of sam/acme. Am I right? Kind regards, Christian --=20 You may use my gpg key for replies: pub 1024D/47F79788 2005/02/02 Christian Kellermann (C-Keen) --GTGEtWEe6jD60dxL Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (OpenBSD) iEYEARECAAYFAkjsp3AACgkQXYob3Uf3l4hevACgnE8OdyZ1P...

Cetus 1.1, OSX
I'm having trouble getting Cetus to recognize a set of UTM waypoints I processed in MacBabel and then transfered as a .pdb file. to my T5. The original file was in csv format, with the first column the name of the waypoint, the second the x coordiante and the third the y coordinate. I know other Mac users are working w/Cetus without problems, so it has to be something in the formatting of the file. Suggestions much appreciated ... ...

[9fans] p9p win(1) body file
Hello, Suppose $winid is the id of an acme window running win(1). An echo ls > /mnt/acme/$winid/body will execute ls, i.e. the input to body will be treated as if we had just typed ls in $winid. P9p on the other hand, will show ls in $winid but not execute it. Code reads: win.c:372: case 'E': /* write to body or tag; can't affect us */ Is there a reason for the p9p behavior? iru ...

Web resources about - [9fans] Plot(1) broken on p9p OSX? - comp.os.plan9

GSoC (Plan 9 wiki)
Open source distributed operating system Plan 9 from Bell Labs.

[9fans] SO for plan9?
9fans archive / 2000 / 06 / 529 prev next search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: ...

Blog Archive
John Floren Home - Blog 2012 12/22 - Disassembling MyVu Shades 301 Video Glasses - ( Comments ) 9/27 - Found some old RIT pictures - ( Comments ...

Nielsen research: Social media impressions in Facebook ads
AdvertisingEffectiveness: Understanding the Value of a Social Media Impression APRIL 2010 INSIDE: …

Plan 9 from User Space
quotes - docs - repo - golang - sam - man - acme - Glenda - 9times - harmful - 9P - cat-v.org Related sites: - site updates - site map - man(1) ...

9fans archive /
9fans archive / search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: lines before: yyyy ...

[9fans] 9pi
9fans archive / 2012 / 08 / 129 prev next search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: ...

Resources last updated: 3/6/2016 7:07:17 AM