hlfw.ca

x9dev

Download patch

ref: f1558a542026692d463e5cb1f25725105063df9d
parent: 81beaaaad4a311e2b784ab9e58b07fca672c2e02
author: halfwit <michaelmisch1985@gmail.com>
date: Thu Oct 15 10:57:55 PDT 2020

Try to flag in a chroot too

--- a/libdraw/draw.h
+++ b/libdraw/draw.h
@@ -342,7 +342,7 @@
 extern int	freeimage(Image*);
 extern int	_freeimage1(Image*);
 extern int	geninitdraw(char*, void(*)(Display*, char*), char*, char*, int);
-extern int	initdraw(void(*)(Display*, char*), char*);
+extern int	initdraw(void(*)(Display*, char*), char*, char*);
 extern int	newwindow(char*);
 extern Display*	initdisplay(char*, char*, void(*)(Display*, char*));
 extern int	loadimage(Image*, Rectangle, uchar*, int);
--- a/libdraw/init.c
+++ b/libdraw/init.c
@@ -107,10 +107,10 @@
 }
 
 int
-initdraw(void(*error)(Display*, char*), char *label)
+initdraw(void(*error)(Display*, char*), char *chroot, char *label)
 {
-	static char dev[] = "/dev";
-
+	char *dev;
+	sprintf(dev, "%s/dev/", chroot);
 	return geninitdraw(dev, error, label, dev, Refnone);
 }
 
--- a/src/x9dev.c
+++ b/src/x9dev.c
@@ -28,6 +28,7 @@
 #include <errno.h>
 #include "x9dev.h"
 
+char *chroot = "/";
 extern x9devInfo x9di;
 int debug = 0;
 
@@ -37,8 +38,7 @@
 	int fd;
     char path[256]; /* Plan9 Maxpath */
 
-    /* We have 9p, we can init */
-    if(initdraw(NULL, "x9dev") < 0)
+    if(initdraw(NULL, chroot, "x9dev") < 0)
         FatalError("can't open display");
 
     x9di.depth = screen->depth;
@@ -104,6 +104,9 @@
     if (!strcmp(argv[i], "-D")){
         debug++;
         return 1;
+    } else if (!strcmp(argv[i], "-p")){
+        if (argc <= i)
+            chroot = argv[i+1];
     }
 
     return 0;
@@ -144,7 +147,7 @@
 void
 OsVendorFatalError(const char *f, va_list args)
 {
-    
+
 }
 
 void