summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2020-06-05 11:28:47 -0700
committerOri Bernstein <ori@eigenstate.org>2020-06-05 11:28:47 -0700
commitf08e95cd93b7b6e2e2ee1a61ddd44e81a9337155 (patch)
tree2f09e981db61528cd11a176ef0228ead5cac3531
parent2327b48d77c28dbf70d811b765ddd7e1a72618ac (diff)
ape: make libplumb available under ape.
This adds the mkfiles and plumb.h to ape, similar to how libdraw is made available. This is used for ports such as netsurf.
-rw-r--r--sys/include/ape/plumb.h57
-rw-r--r--sys/src/ape/lib/9/libc.h1
-rw-r--r--sys/src/ape/lib/9/mkfile1
3 files changed, 59 insertions, 0 deletions
diff --git a/sys/include/ape/plumb.h b/sys/include/ape/plumb.h
new file mode 100644
index 000000000..0e1b3ca4d
--- /dev/null
+++ b/sys/include/ape/plumb.h
@@ -0,0 +1,57 @@
+#ifndef _PLAN9_SOURCE
+ This header file is an extension to ANSI/POSIX
+#endif
+
+#ifndef __PLUMB_H_
+#define __PLUMB_H_
+#pragma src "/sys/src/ape/lib/plumb"
+#pragma lib "/$M/lib/ape/libplumb.a"
+
+/*
+ * Message format:
+ * source application\n
+ * destination port\n
+ * working directory\n
+ * type\n
+ * attributes\n
+ * nbytes\n
+ * n bytes of data
+ */
+
+typedef struct Plumbattr Plumbattr;
+typedef struct Plumbmsg Plumbmsg;
+
+struct Plumbmsg
+{
+ char *src;
+ char *dst;
+ char *wdir;
+ char *type;
+ Plumbattr *attr;
+ int ndata;
+ char *data;
+};
+
+struct Plumbattr
+{
+ char *name;
+ char *value;
+ Plumbattr *next;
+};
+
+int plumbsend(int, Plumbmsg*);
+int plumbsendtext(int, char*, char*, char*, char*);
+Plumbmsg* plumbrecv(int);
+char* plumbpack(Plumbmsg*, int*);
+Plumbmsg* plumbunpack(char*, int);
+Plumbmsg* plumbunpackpartial(char*, int, int*);
+char* plumbpackattr(Plumbattr*);
+Plumbattr* plumbunpackattr(char*);
+Plumbattr* plumbaddattr(Plumbattr*, Plumbattr*);
+Plumbattr* plumbdelattr(Plumbattr*, char*);
+void plumbfree(Plumbmsg*);
+char* plumblookup(Plumbattr*, char*);
+int plumbopen(char*, int);
+int eplumb(int, char*);
+
+#endif
diff --git a/sys/src/ape/lib/9/libc.h b/sys/src/ape/lib/9/libc.h
index 93fb26d13..d19232eb6 100644
--- a/sys/src/ape/lib/9/libc.h
+++ b/sys/src/ape/lib/9/libc.h
@@ -159,6 +159,7 @@ extern vlong _NSEC(void);
#define ERRMAX 128
int errstr(char*, unsigned int);
+void rerrstr(char*, unsigned int);
extern void sysfatal(char*, ...);
extern void setmalloctag(void*, uintptr_t);
diff --git a/sys/src/ape/lib/9/mkfile b/sys/src/ape/lib/9/mkfile
index f3e9d7f4f..9854cf0ac 100644
--- a/sys/src/ape/lib/9/mkfile
+++ b/sys/src/ape/lib/9/mkfile
@@ -8,6 +8,7 @@ OFILES=\
crypt.$O\
ctime.$O\
errstr.$O\
+ rerrstr.$O\
getcallerpc.$O\
getfcr.$O\
getfields.$O\