pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/converters/macfork Fix (well, hack around) broken amd6...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/c67e90feb2b2
branches:  trunk
changeset: 545430:c67e90feb2b2
user:      dholland <dholland%pkgsrc.org@localhost>
date:      Sat Aug 02 21:00:29 2008 +0000

description:
Fix (well, hack around) broken amd64 build caused by misuse of va_list.

diffstat:

 converters/macfork/distinfo         |    3 +-
 converters/macfork/patches/patch-ac |  111 ++++++++++++++++++++++++++++++++++++
 2 files changed, 113 insertions(+), 1 deletions(-)

diffs (128 lines):

diff -r d887909e84c6 -r c67e90feb2b2 converters/macfork/distinfo
--- a/converters/macfork/distinfo       Sat Aug 02 20:36:50 2008 +0000
+++ b/converters/macfork/distinfo       Sat Aug 02 21:00:29 2008 +0000
@@ -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 -r d887909e84c6 -r c67e90feb2b2 converters/macfork/patches/patch-ac
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/converters/macfork/patches/patch-ac       Sat Aug 02 21:00:29 2008 +0000
@@ -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);
+ }
+ 



Home | Main Index | Thread Index | Old Index