tUse va_args in cosadd/sinadd (Michael Teichgräber) - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2ad582ee88c98eefdd00d4f16704783f3db52d6f
 (DIR) parent dfbaaaa65076fe72b99e3953efc3baf1ec487332
 (HTM) Author: rsc <devnull@localhost>
       Date:   Sat, 27 May 2006 18:35:26 +0000
       
       Use va_args in cosadd/sinadd (Michael Teichgräber)
       
       Diffstat:
         M src/cmd/astro/astro.h               |       4 ++--
         M src/cmd/astro/cosadd.c              |      24 +++++++++++++++++-------
       
       2 files changed, 19 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/astro/astro.h b/src/cmd/astro/astro.h
       t@@ -152,7 +152,7 @@ extern        void        args(int, char**);
        extern        void        bdtsetup(double, Tim*);
        extern        double        betcross(double);
        extern        double        convdate(Tim*);
       -extern        double        cosadd(int, double, ...);
       +extern        double        cosadd(int, ...);
        extern        double        cosx(double, int, int, int, int, double);
        extern        double        dist(Obj1*, Obj1*);
        extern        double        dsrc(double, Tim*, int);
       t@@ -201,7 +201,7 @@ extern        void        setime(double);
        extern        void        setobj(Obj1*);
        extern        void        setpt(Occ*, double);
        extern        void        shad(void);
       -extern        double        sinadd(int, double, ...);
       +extern        double        sinadd(int, ...);
        extern        double        sinx(double, int, int, int, int, double);
        extern        char*        skip(int);
        extern        double        solstice(int);
 (DIR) diff --git a/src/cmd/astro/cosadd.c b/src/cmd/astro/cosadd.c
       t@@ -10,15 +10,20 @@ icosadd(double *fp, char *cp)
        }
        
        double
       -cosadd(int n, double coef, ...)
       +cosadd(int n, ...)
        {
       -        double *coefp;
       +        double *coefp, coef[10];
                char *cp;
                int i;
                double sum, a1, a2;
       -
       +        va_list arg;
       +        
                sum = 0;
                cp = cacp;
       +        va_start(arg, n);
       +        for(i=0; i<n; i++)
       +                coef[i] = va_arg(arg, double);
       +        va_end(arg);
        
        loop:
                a1 = *cafp++;
       t@@ -28,7 +33,7 @@ loop:
                }
                a2 = *cafp++;
                i = n;
       -        coefp = &coef;
       +        coefp = coef;
                do
                        a2 += *cp++ * *coefp++;
                while(--i);
       t@@ -37,15 +42,20 @@ loop:
        }
        
        double
       -sinadd(int n, double coef, ...)
       +sinadd(int n, ...)
        {
       -        double *coefp;
       +        double *coefp, coef[10];
                char *cp;
                int i;
                double sum, a1, a2;
       +        va_list arg;
        
                sum = 0;
                cp = cacp;
       +        va_start(arg, n);
       +        for(i=0; i<n; i++)
       +                coef[i] = va_arg(arg, double);
       +        va_end(arg);
        
        loop:
                a1 = *cafp++;
       t@@ -55,7 +65,7 @@ loop:
                }
                a2 = *cafp++;
                i = n;
       -        coefp = &coef;
       +        coefp = coef;
                do
                        a2 += *cp++ * *coefp++;
                while(--i);