summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/9libs/files/9libs-va_list.patch')
-rw-r--r--dev-libs/9libs/files/9libs-va_list.patch115
1 files changed, 115 insertions, 0 deletions
diff --git a/dev-libs/9libs/files/9libs-va_list.patch b/dev-libs/9libs/files/9libs-va_list.patch
new file mode 100644
index 000000000000..eb8da368de3a
--- /dev/null
+++ b/dev-libs/9libs/files/9libs-va_list.patch
@@ -0,0 +1,115 @@
+diff -ru 9libs-1.0/include/libc.h 9libs-1.0-fixed/include/libc.h
+--- 9libs-1.0/include/libc.h 1998-11-10 22:35:27.000000000 +0000
++++ 9libs-1.0-fixed/include/libc.h 2011-10-02 13:27:38.000000000 +0100
+@@ -57,14 +57,14 @@
+ extern int fprint(int, char *, ...);
+ extern int sprint(char *, char *, ...);
+ extern int snprint(char *, int, char *, ...);
+-extern int fmtinstall(int, int (*)(void *, Fconv *));
++extern int fmtinstall(int, int (*)(va_list, Fconv *));
+ extern void strconv(char *, Fconv *);
+ #if defined(PRINT_RUNES)
+ extern void Strconv(Rune *, Fconv *);
+ #endif
+-extern int numbconv(void *, Fconv *);
++extern int numbconv(va_list, Fconv *);
+ extern int fltconv(double, Fconv *);
+-extern char * doprint(char *, char *, char *, void *);
++extern char * doprint(char *, char *, char *, va_list);
+
+ /*
+ * argument parsing - lifted from tcs
+diff -ru 9libs-1.0/libplan9c/doprint.c 9libs-1.0-fixed/libplan9c/doprint.c
+--- 9libs-1.0/libplan9c/doprint.c 1998-11-10 22:35:28.000000000 +0000
++++ 9libs-1.0-fixed/libplan9c/doprint.c 2011-10-02 13:30:25.000000000 +0100
+@@ -73,12 +73,12 @@
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+-static int (*fmtfns[16])(void *, Fconv *) = {
++static int (*fmtfns[16])(va_list, Fconv *) = {
+ numbconv,
+ };
+
+ int
+-fmtinstall(int c, int (*f)(void *, Fconv *))
++fmtinstall(int c, int (*f)(va_list, Fconv *))
+ {
+ int i;
+
+@@ -95,9 +95,8 @@
+ }
+
+ char *
+-doprint(char *s, char *es, char *format, void *argp)
++doprint(char *s, char *es, char *format, va_list ap)
+ {
+- va_list ap = argp;
+ int c;
+ int percent = 0;
+ int dot = 0;
+@@ -218,7 +217,6 @@
+ if (r < 0)
+ f.f3 |= ~r;
+ else {
+- ap += r;
+ s = f.out;
+ percent = 0;
+ }
+@@ -287,13 +285,12 @@
+ #endif
+
+ int
+-numbconv(void *o, Fconv *fp)
++numbconv(va_list ap, Fconv *fp)
+ {
+ static char digits[16] = "0123456789abcdef";
+ char buf[80]; /* arbitrary limit. enough digits, but no limit on f2 */
+ char *s = buf+sizeof(buf)-1;
+ char sign = 0;
+- va_list ap = o;
+ int uc = 0;
+ unsigned long u;
+
+@@ -362,5 +359,5 @@
+ break;
+ }
+ strconv(s, fp);
+- return ap-(va_list)o;
++ return 0;
+ }
+diff -ru 9libs-1.0/libplan9c/tdp.c 9libs-1.0-fixed/libplan9c/tdp.c
+--- 9libs-1.0/libplan9c/tdp.c 1998-11-10 22:35:28.000000000 +0000
++++ 9libs-1.0-fixed/libplan9c/tdp.c 2011-10-02 13:31:58.000000000 +0100
+@@ -122,27 +122,25 @@
+ } Rectangle;
+
+ int
+-Pconv(void *v, Fconv *fp)
++Pconv(va_list ap, Fconv *fp)
+ {
+ char str[50];
+- va_list ap = v;
+ Point *p = va_arg(ap, Point *);
+
+ sprint(str, "(%d,%d)", p->x, p->y);
+ strconv(str, fp);
+- return ap-(va_list)v;
++ return 0;
+ }
+
+ int
+-Rconv(void *v, Fconv *fp)
++Rconv(va_list ap, Fconv *fp)
+ {
+ char str[50];
+- va_list ap = v;
+ Rectangle *r = va_arg(ap, Rectangle *);
+
+ sprint(str, "(%P,%P)", &r->min, &r->max);
+ strconv(str, fp);
+- return ap-(va_list)v;
++ return 0;
+ }
+
+ int