/* pdx.c */ #include "copyright.h" #include "config.h" #include <stdio.h> #include <sys/time.h> #include <ctype.h> #include "teeny.h" #include "rwho.h" static char buf[BUFFSIZ]; #ifdef PDX extern int atoi(); extern int max_logins; static int last_daemon = 0; #define WEEKDAY_7to5 20 /* 7am to 5pm */ #define WEEKDAY_5to12 25 /* 5pm to midnight */ #define WEEKDAY_12to7 30 /* midnight to 7am */ #define WEEKEND(x) (x *= 2) int current_max() { struct timeval currenttime; struct tm *ltime; int c_max; (void) gettimeofday(¤ttime, (struct timezone *) 0); ltime = localtime(¤ttime.tv_sec); if (ltime->tm_hour > 6 && ltime->tm_hour < 17) { c_max = WEEKDAY_7to5; } else if (ltime->tm_hour > 16) { c_max = WEEKDAY_5to12; } else c_max = WEEKDAY_12to7; if (ltime->tm_wday == 0 || ltime->tm_wday == 6) { WEEKEND(c_max); } return (c_max); } void max_daemon() { if (max_logins != current_max() && current_max() != last_daemon) { max_logins = current_max(); last_daemon = current_max(); (void) sprintf(buf, "* Maximum logins has been changed to %d. *\r\n", max_logins); notify_wall(buf); log_status("STATUS: Daemon reports maximum logins set to %d.\n", max_logins); } } voidfunc do_restrict(player, argone) int player; char *argone; { int new_max; if (!iswiz(player)) { notify_player(player, "Nice try.\r\n"); return; } if (!argone || !*argone || !isdigit(argone[0])) { notify_player(player, "You must specifiy a positive number.\r\n"); return; } new_max = atoi(argone); if (new_max < 0 || (new_max > (current_max() + 10) && !isgod(player))) { notify_player(player, "Illegal amount.\r\n"); return; } max_logins = new_max; (void) sprintf(buf, "* Maximum logins has been changed to %d. *\r\n", max_logins); notify_wall(buf); log_status("STATUS: %s(#%d) changed maximum logins to %d.\n", getname(player), player, max_logins); } #endif /* PDX */ #ifdef SUPPORT_RWHO void rwho_login(player, time) int player; long time; { char *nm; (void) sprintf(buf, "#%d@%s", player, RWHO_NAME); if (get_str_elt(player, NAME, &nm) != -1) { rwhocli_userlogin(buf, nm, time); } else { rwhocli_userlogin(buf, "???", time); } } void rwho_logout(player) int player; { (void) sprintf(buf, "#%d@%s", player, RWHO_NAME); rwhocli_userlogout(buf); } #endif /* SUPPORT_RWHO */