#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>

typedef struct {
  struct timeval tv[1];
  struct timezone tz[1];
} Time;

Time *make_time ()
{
  Time *time = (Time *) malloc (sizeof(Time));
  return time;
}

/* What's wrong with this?

Time *make_time ()
{
  Time time;
  return &time;
}
*/

double get_seconds(Time *time)
{
  return time->tv->tv_sec + time->tv->tv_usec / 1e6;
}

int get_time(Time *time)
{
  return gettimeofday(time->tv, time->tz);
}

int main()
{
  Time *time = make_time();
  get_time(time);

  double x = get_seconds(time);
  printf ("%f\n", x);
}
