MudOSa4DGD/
MudOSa4DGD/bin/
MudOSa4DGD/data/
MudOSa4DGD/doc/
MudOSa4DGD/doc/driver/
MudOSa4DGD/doc/efun/bitstrings/
MudOSa4DGD/doc/efun/command/
MudOSa4DGD/doc/efun/communication/
MudOSa4DGD/doc/efun/heart_beat/
MudOSa4DGD/doc/efun/interactive/
MudOSa4DGD/doc/efun/inventory/
MudOSa4DGD/doc/efun/living/
MudOSa4DGD/doc/efun/mappings/
MudOSa4DGD/doc/efun/strings/
MudOSa4DGD/doc/efun/uid/
MudOSa4DGD/doc/funs/
MudOSa4DGD/doc/language/
MudOSa4DGD/mudlib/dgd/doc/
MudOSa4DGD/mudlib/dgd/lib/include/dgd/
MudOSa4DGD/mudlib/dgd/lib/std/
MudOSa4DGD/mudlib/dgd/lib/sys/
MudOSa4DGD/mudlib/dgd/log/
MudOSa4DGD/mudlib/log/
MudOSa4DGD/mudlib/std/include/
MudOSa4DGD/mudlib/std/obj/
/*
 * time.c
 *
 * Time topics
 *
 * (C) Frank Schmidt, Jesus@NorseMUD
 *
 */


#ifdef MUDOS_UPTIME

/* return uptime of the driver */
static int uptime() {
  return time() - DRIVER->query_reboot_time();
}

#endif


#ifdef MUDOS_REBOOT_TIME

/* return last reboot time of the driver */
static int reboot_time() {
  return DRIVER->query_reboot_time();
}

#endif


/* convert <time> to days, hours, minutes and seconds. */
static varargs string format_time(int time, int lng) {
  int days, hours, minutes, seconds, sz;
  string ret, *arr;

  /* find all elements */
  seconds = time % 60;
  minutes = (time / 60) % 60;
  hours   = (minutes / 60) % 60;
  days    = hours / 24;

  /* find array to implode */
  arr = ({ });
  if (days > 0 || lng) {
    /* "X days" */
    if (days > 1)
      arr += ({ (string)days+" days" });
    else
      arr += ({ (string)days+" day" });
  }
  if (hours > 0 || lng) {
    /* "X hours" */
    if (hours > 1)
      arr += ({ (string)hours+" hours" });
    else
      arr += ({ (string)hours+" hour" });
  }
  if (minutes > 0 || lng) {
    /* "X minutes" */
    if (minutes > 1)
      arr += ({ (string)minutes+" minutes" });
    else
      arr += ({ (string)minutes+" minute" });
  }
  if (seconds > 0 || lng) {
    /* "X minutes" */
    if (seconds > 1)
      arr += ({ (string)seconds+" seconds" });
    else
      arr += ({ (string)seconds+" second" });
  }

  /* implode into "X, Y and Z". */
  if ((sz=::sizeof(arr)) > 2) {
    ret = implode(arr[..sz-2], ", ");
    ret += " and "+arr[sz-1];
  }
  else {
    ret = implode(arr, " and ");
  }
  return ret;
}