summaryrefslogtreecommitdiff
path: root/converters/macfork
diff options
context:
space:
mode:
authordholland <dholland@pkgsrc.org>2008-08-02 21:00:29 +0000
committerdholland <dholland@pkgsrc.org>2008-08-02 21:00:29 +0000
commit60b651ec81718ba57f3325dd050659e6df658e90 (patch)
treef62f408828d028c3792318bcf193dff13d903aae /converters/macfork
parent60fd974aa24694dea7f92eae166c930920e2bbcf (diff)
downloadpkgsrc-60b651ec81718ba57f3325dd050659e6df658e90.tar.gz
Fix (well, hack around) broken amd64 build caused by misuse of va_list.
Diffstat (limited to 'converters/macfork')
-rw-r--r--converters/macfork/distinfo3
-rw-r--r--converters/macfork/patches/patch-ac111
2 files changed, 113 insertions, 1 deletions
diff --git a/converters/macfork/distinfo b/converters/macfork/distinfo
index 8bd01c510ae..2c65f28a454 100644
--- a/converters/macfork/distinfo
+++ b/converters/macfork/distinfo
@@ -1,7 +1,8 @@
-$NetBSD: distinfo,v 1.4 2005/02/23 16:12:34 agc Exp $
+$NetBSD: distinfo,v 1.5 2008/08/02 21:00:29 dholland Exp $
SHA1 (macfork-1.0.tar.gz) = 86cbf8a7a3c65bd168f40ef9ab1e1a73161abdd0
RMD160 (macfork-1.0.tar.gz) = e37842b9dbec86e235dcd759be002f4810be1421
Size (macfork-1.0.tar.gz) = 15451 bytes
SHA1 (patch-aa) = be6282f1fb0ca57fc3a002e830885ff64eaab233
SHA1 (patch-ab) = 82c91966a3875afdcaaf2ff65957dc97e1e3786a
+SHA1 (patch-ac) = 6ffb0e1eeb3a43167053f0abdc18ff1a8fdc9ea2
diff --git a/converters/macfork/patches/patch-ac b/converters/macfork/patches/patch-ac
new file mode 100644
index 00000000000..7ce6d17fa63
--- /dev/null
+++ b/converters/macfork/patches/patch-ac
@@ -0,0 +1,111 @@
+$NetBSD: patch-ac,v 1.1 2008/08/02 21:00:29 dholland Exp $
+
+Fix misuses of va_list to allow building on amd64.
+
+--- arg.c.orig 1999-08-31 12:49:19.000000000 -0400
++++ arg.c 2008-08-02 16:56:12.000000000 -0400
+@@ -28,5 +28,6 @@
+
+ #include <stdarg.h>
++#include <stdint.h>
+ #include <ctype.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -65,7 +66,11 @@ int arg_warning = 1; /* print warnings
+
+ static Arg_form *regf; /* advancing form ptr used by arg_find_reg */
+
+-va_list arg_doc_parse();
++struct va_holder {
++ va_list ap;
++};
++
++static void arg_doc_parse(Arg_form *, struct va_holder *);
+ int arg_format(Arg_form *f);
+ void arg_init(Arg_form *form);
+ int arg_done();
+@@ -180,7 +185,7 @@ Arg_form *arg_to_form1(va_list ap)
+ }
+ for (; (s = va_arg(ap, char *)) != 0;) {
+ /* note that we continue (not break) in all cases except one */
+- switch ((int)s) {
++ switch ((int)(intptr_t)s) {
+ case ARG_FLAGNEXT: /* ptr to flag vbl */
+ CHECKTYPE(form, "FLAG");
+ form->type = ARG_SIMPFLAG;
+@@ -220,7 +225,12 @@ Arg_form *arg_to_form1(va_list ap)
+ form->doc = prevs = s;
+
+ /* skip over doc args */
+- ap = arg_doc_parse(form, ap);
++ {
++ struct va_holder tmp;
++ va_copy(tmp.ap, ap);
++ arg_doc_parse(form, &tmp);
++ va_copy(ap, tmp.ap);
++ }
+ }
+ va_end(ap);
+ return rootform;
+@@ -289,13 +299,13 @@ int arg_format(Arg_form *f)
+ * documentation string and returns the new ap.
+ */
+
+-va_list arg_doc_parse(Arg_form *f, va_list ap)
++static void arg_doc_parse(Arg_form *f, struct va_holder *app)
+ {
+ char *s, buf[256];
+ int size, gotparam;
+ va_list ap0;
+
+- ap0 = ap;
++ va_copy(ap0, app->ap);
+ gotparam = 0;
+ for (s=f->doc; *s; s++) {
+ for (; *s; s++) /* search for next format code */
+@@ -329,22 +339,22 @@ va_list arg_doc_parse(Arg_form *f, va_li
+ case 'o': case 'O':
+ case 'x': case 'X':
+ case 'c':
+- if (size==2 || *s>='A' && *s<='Z') va_arg(ap, long);
+- else va_arg(ap, int);
++ if (size==2 || *s>='A' && *s<='Z') va_arg(app->ap, long);
++ else va_arg(app->ap, int);
+ break;
+ case 'e':
+ case 'f':
+ case 'g':
+ /* note: float args are converted to doubles by MOST compilers*/
+- va_arg(ap, double);
++ va_arg(app->ap, double);
+ break;
+ case 's':
+- va_arg(ap, char *);
++ va_arg(app->ap, char *);
+ break;
+ default:
+ fprintf(stderr, "arg: unknown format code %%%c in %s\n",
+ *s, f->doc);
+- va_arg(ap, int);
++ va_arg(app->ap, int);
+ break;
+ }
+ }
+@@ -354,7 +364,7 @@ va_list arg_doc_parse(Arg_form *f, va_li
+ strcpy(f->doc, buf);
+ }
+
+- return ap; /* varargs ptr past end of doc params */
++ /*return ap;*/ /* varargs ptr past end of doc params */
+ }
+
+ /*----------------------------------------------------------------------*/
+@@ -851,7 +861,7 @@ static void space(FILE *fp, int c, int c
+ putc('\n', fp);
+ c = 0;
+ }
+- for (; c<c1&~7; c=(c+7)&~7) putc('\t', fp);
++ for (; c<(c1&~7); c=(c+7)&~7) putc('\t', fp);
+ for (; c<c1; c++) putc(' ', fp);
+ }
+