Hello all,
 
I'm exploring my very first external!   But I've run into a snag.
 
I'd like to build an external object which outputs the number of seconds since "epoch" when banged.  Epoch is the beginning of time as the digital world understands it: jan 1 1970.
 
Could somebody look over the following code and tell me why it works only after the FIRST BANG?
 
Many thanks
Regards,
Dave S
 
 
_____________________________
 
 
#include "m_pd.h"
#include "time.h"
 
static t_class *epochtime_class;
 
typedef struct _epochtime {
  t_object  x_obj;
  time_t t;
} t_epochtime;
 
void epochtime_bang(t_epochtime *x)
{
  t_float f=x->t;
  x->t=time( NULL );
 
  outlet_float(x->x_obj.ob_outlet, f);
}
 
void *epochtime_new(t_floatarg f)
{
  t_epochtime *x = (t_epochtime *)pd_new(epochtime_class);
 
  x->t=f;
  outlet_new(&x->x_obj, &s_float);
 
  return (void *)x;
}
 
void epochtime_setup(void) {
  epochtime_class = class_new(gensym("epochtime"),
        (t_newmethod)epochtime_new,
        0, sizeof(t_epochtime),
        CLASS_DEFAULT, 0);
 
  class_addbang(epochtime_class, epochtime_bang);
}