/* update_clock: figUres out the current time and returns it in a nice format */ char *update_clock(int flag) { static int min = -1, hour = -1; static time_t last_minute = -1; time_t idlet; static struct tm time_val; time_t hideous; int new_minute = 0; int new_hour = 0; hideous = now; #if !defined(NO_CHEATING) if (hideous / 60 > last_minute) { last_minute = hideous / 60; time_val = *localtime(&hideous); } #else time_val = *localtime(&hideous); #endif if (flag == RESET_TIME || time_val.tm_min != min || time_val.tm_hour != hour) { if (time_format) /* XXXX Bogus XXXX */ strftime(time_str, 60, time_format, &time_val); else if (get_int_var(CLOCK_24HOUR_VAR)) strftime(time_str, 60, strftime_24hour, &time_val); else strftime(time_str, 60, strftime_12hour, &time_val); lower(time_str); if ((time_val.tm_min != min) || (time_val.tm_hour != hour)) { if (time_val.tm_hour != hour) new_hour = 1; new_minute = 1; hour = time_val.tm_hour; min = time_val.tm_min; do_hook(TIMER_LIST, "%02d:%02d", hour, min); if (min == 0 || new_hour) do_hook(TIMER_HOUR_LIST, "%02d:%02d", hour, min); idlet = (hideous - idle_time) / 60L; do_hook(IDLE_LIST, "%lu", (unsigned long)idlet); } if (!((hideous - start_time) % 20)) check_serverlag(-1); if (flag != RESET_TIME || new_minute) return time_str; else return NULL; } if (flag == GET_TIME) return time_str; else return NULL; }
/* update_clock: figUres out the current time and returns it in a nice format */ char *BX_update_clock(int flag) { static int min = -1, hour = -1; static time_t last_minute = -1; time_t idlet; static struct tm time_val; time_t hideous; int new_minute = 0; int new_hour = 0; hideous = now; #if !defined(NO_CHEATING) if (hideous / 60 > last_minute) { last_minute = hideous / 60; time_val = *localtime(&hideous); } #else time_val = *localtime(&hideous); #endif if (flag == RESET_TIME || time_val.tm_min != min || time_val.tm_hour != hour) { int ofs = from_server; from_server = primary_server; if (time_format) /* XXXX Bogus XXXX */ strftime(time_str, 60, time_format, &time_val); else if (get_int_var(CLOCK_24HOUR_VAR)) strftime(time_str, 60, strftime_24hour, &time_val); else strftime(time_str, 60, strftime_12hour, &time_val); lower(time_str); if ((time_val.tm_min != min) || (time_val.tm_hour != hour)) { int is_away = 0; if (time_val.tm_hour != hour) new_hour = 1; new_minute = 1; hour = time_val.tm_hour; min = time_val.tm_min; do_hook(TIMER_LIST, "%02d:%02d", hour, min); if (min == 0 || new_hour) do_hook(TIMER_HOUR_LIST, "%02d:%02d", hour, min); idlet = (hideous - idle_time) / 60L; if (from_server != -1) is_away = get_server_away(from_server) ? 1 : 0; if (do_hook(IDLE_LIST, "%lu", (unsigned long)idlet)) { if (is_away && new_hour && get_int_var(TIMESTAMP_AWAYLOG_HOURLY_VAR)) logmsg(LOG_CRAP, NULL, 4, NULL); if (!is_away && get_int_var(AUTO_AWAY_TIME_VAR) && (idlet >= get_int_var(AUTO_AWAY_TIME_VAR)/60)) auto_away(idlet); } check_channel_limits(); } if (!((hideous - start_time) % 20)) check_serverlag(); from_server = ofs; if (flag != RESET_TIME || new_minute) return time_str; else return NULL; } if (flag == GET_TIME) return time_str; else return NULL; }