9term, win: work around bsd linker nonsense

Change-Id: Ifcef0636ee1e1fd0f9b06a8d1a99d58fae831318
Reviewed-on: https://plan9port-review.googlesource.com/2780
Reviewed-by: Russ Cox <rsc@swtch.com>
diff --git a/include/draw.h b/include/draw.h
index 2bc9b4b..3a01295 100644
--- a/include/draw.h
+++ b/include/draw.h
@@ -525,6 +525,8 @@
 extern	void	_setdrawop(Display*, Drawop);
 extern	Display	*_initdisplay(void(*)(Display*,char*), char*);
 
+extern	void	needdisplay(void); /* call instead of initdraw to get (null) variable linked in */
+
 #define	BGSHORT(p)		(((p)[0]<<0) | ((p)[1]<<8))
 #define	BGLONG(p)		((BGSHORT(p)<<0) | (BGSHORT(p+2)<<16))
 #define	BPSHORT(p, v)		((p)[0]=(v), (p)[1]=((v)>>8))
diff --git a/src/cmd/9term/bsdpty.c b/src/cmd/9term/bsdpty.c
index fe0367f..3128132 100644
--- a/src/cmd/9term/bsdpty.c
+++ b/src/cmd/9term/bsdpty.c
@@ -77,10 +77,10 @@
 	ws.ws_col = col;
 	ws.ws_xpixel = dx;
 
-
+	needdisplay(); // in case this is 'win' and not 9term
 	// Leave "is this a hidpi display" in the low bit of the ypixel height for mc.
 	dy &= ~1;
-	if(display->dpi >= DefaultDPI*3/2)
+	if(display != nil && display->dpi >= DefaultDPI*3/2)
 		dy |= 1;
 	ws.ws_ypixel = dy;
 
diff --git a/src/libdraw/init.c b/src/libdraw/init.c
index 452b6da..e5a367f 100644
--- a/src/libdraw/init.c
+++ b/src/libdraw/init.c
@@ -19,6 +19,11 @@
 Image	*mousesave;
 Mouse	_drawmouse;
 
+void
+needdisplay(void)
+{
+}
+
 /*
 static void
 drawshutdown(void)