diff options
author | dholland <dholland@pkgsrc.org> | 2008-08-02 21:00:29 +0000 |
---|---|---|
committer | dholland <dholland@pkgsrc.org> | 2008-08-02 21:00:29 +0000 |
commit | 60b651ec81718ba57f3325dd050659e6df658e90 (patch) | |
tree | f62f408828d028c3792318bcf193dff13d903aae /converters/macfork | |
parent | 60fd974aa24694dea7f92eae166c930920e2bbcf (diff) | |
download | pkgsrc-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/distinfo | 3 | ||||
-rw-r--r-- | converters/macfork/patches/patch-ac | 111 |
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); + } + |