Atrinik Server  4.0
shutdown.c
Go to the documentation of this file.
1 /*************************************************************************
2  * Atrinik, a Multiplayer Online Role Playing Game *
3  * *
4  * Copyright (C) 2009-2014 Alex Tokar and Atrinik Development Team *
5  * *
6  * Fork from Crossfire (Multiplayer game for X-windows). *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
21  * *
22  * The author can be reached at admin@atrinik.org *
23  ************************************************************************/
24 
32 #include <global.h>
33 #include <toolkit/string.h>
34 #include <player.h>
35 
37 void command_shutdown(object *op, const char *command, char *params)
38 {
39  char when[MAX_BUF];
40  int mins, secs;
41  size_t pos;
42 
43  pos = 0;
44 
45  if (!string_get_word(params, &pos, ' ', when, sizeof(when), 0)) {
46  return;
47  }
48 
49  if (strcasecmp(when, "stop") == 0) {
50  shutdown_timer_stop();
51  draw_info_type(CHAT_TYPE_CHAT, NULL, COLOR_GREEN, NULL, "[Server]: Server shut down stopped.");
52  } else if (sscanf(when, "%d:%d", &mins, &secs) == 2) {
53  char *reason;
54 
55  secs = MAX(30, MAX(0, MIN(60, secs)) + MAX(0, mins) * 60);
56  reason = player_sanitize_input(params + pos);
57 
58  shutdown_timer_start(secs);
59  draw_info_type_format(CHAT_TYPE_CHAT, NULL, COLOR_GREEN, NULL, "[Server]: Server shut down started; will shut down in %02d:%02d minutes.", secs / 60, secs % 60);
60 
61  if (reason) {
62  draw_info_type_format(CHAT_TYPE_CHAT, NULL, COLOR_GREEN, NULL, "[Server]: %s", reason);
63  }
64  }
65 }
char * player_sanitize_input(char *str)
Definition: player.c:1311
void command_shutdown(object *op, const char *command, char *params)
Definition: shutdown.c:37