shithub: riscv

Download patch

ref: f08e95cd93b7b6e2e2ee1a61ddd44e81a9337155
parent: 2327b48d77c28dbf70d811b765ddd7e1a72618ac
author: Ori Bernstein <ori@eigenstate.org>
date: Fri Jun 5 07:28:47 EDT 2020

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.

--- /dev/null
+++ b/sys/include/ape/plumb.h
@@ -1,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
--- a/sys/src/ape/lib/9/libc.h
+++ b/sys/src/ape/lib/9/libc.h
@@ -159,6 +159,7 @@
 #define ERRMAX 128
 
 int errstr(char*, unsigned int);
+void rerrstr(char*, unsigned int);
 extern void sysfatal(char*, ...);
 
 extern	void		setmalloctag(void*, uintptr_t);
--- a/sys/src/ape/lib/9/mkfile
+++ b/sys/src/ape/lib/9/mkfile
@@ -8,6 +8,7 @@
 	crypt.$O\
 	ctime.$O\
 	errstr.$O\
+	rerrstr.$O\
 	getcallerpc.$O\
 	getfcr.$O\
 	getfields.$O\