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