/*
 *	On-screen Display Daemon -- Utility Functions
 *
 *	(c) 2010 Martin Mares <mj@ucw.cz>
 */

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

#include "osd.h"
#include "util.h"

void __attribute__((noreturn)) __attribute__((format(printf,1,2)))
die(char *fmt, ...)
{
  va_list args;
  va_start(args, fmt);
  fputs("osdd: ", stderr);
  vfprintf(stderr, fmt, args);
  fputc('\n', stderr);
  exit(1);
}

void *
xmalloc(int size)
{
  void *p = malloc(size);
  if (!p)
    die("Failed to allocate %d bytes of memory", size);
  return p;
}

void *
xrealloc(void *ptr, int size)
{
  void *p = realloc(ptr, size);
  if (!p)
    die("Failed to re-allocate %d bytes of memory", size);
  return p;
}

timestamp_t
get_current_time(void)
{
  struct timeval tv;
  gettimeofday(&tv, NULL);
  return (timestamp_t) tv.tv_sec * 1000 + tv.tv_usec / 1000;
}