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, seconds. */
static varargs string format_time(int time, int short) {
  int days, hours, minutes, seconds;
  seconds = time % 60;
  minutes = (time / 60) % 60;
  hours   = (minutes / 60) % 60;
  days    = hours / 24;

  if (!short) {
    /* show longest */
    return
      (string)days+" days, "+
      (string)hours+" hours, "+
      (string)minutes+" minutes and "+
      (string)seconds+" seconds";
  }
  else {
    /* show shortest */
    string ret;
    ret = "";
    if (days) ret = (string)days+" days";
    if (hours) {
      if (days) {
	if (!minutes && !seconds)
	  ret += " and ";
	else
	  ret += ", ";
      }
      ret += (string)hours+" hours";
    }
    if (minutes) {
      if (days || hours) {
	if (!seconds)
	  ret += " and ";
	else
	  ret += ", ";
      }
      ret += (string)minutes+" minutes";
    }
    if (seconds) {
      if (days || hours || minutes)
	ret += " and ";
      ret += (string)seconds+" seconds";
    }
  }
}