Atrinik Server  4.0
stats.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 
38 static const char *const stats[] = {
39  "mempool", "shstr", "metaserver",
40  NULL
41 };
42 
44 void command_stats(object *op, const char *command, char *params)
45 {
46  size_t pos, i;
47  char type[MAX_BUF], buf[HUGE_BUF * 32];
48 
49  pos = 0;
50  string_get_word(params, &pos, ' ', type, sizeof(type), 0);
51  buf[0] = '\0';
52 
53  for (i = 0; stats[i] != NULL; i++) {
54  if (*type != '\0' && strcasecmp(stats[i], type) != 0) {
55  continue;
56  }
57 
58  if (strcmp(stats[i], "mempool") == 0) {
59  params += pos;
60  string_skip_whitespace(params);
61  mempool_stats(params, VS(buf));
62  } else if (strcmp(stats[i], "shstr") == 0) {
63  shstr_stats(VS(buf));
64  } else if (strcmp(stats[i], "metaserver") == 0) {
65  metaserver_stats(VS(buf));
66  }
67 
68  if (!string_isempty(type)) {
69  break;
70  }
71  }
72 
73  if (!string_isempty(type) && stats[i] == NULL) {
74  snprintfcat(VS(buf), "Unknown stats type: %s", type);
75  }
76 
77  draw_info(COLOR_WHITE, op, buf);
78 }
static const char *const stats[]
Definition: stats.c:38
uint8_t type
One of operation types.
Definition: sound_ambient.c:45
void metaserver_stats(char *buf, size_t size)
Definition: metaserver.c:643
void command_stats(object *op, const char *command, char *params)
Definition: stats.c:44