/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * 10-09-2008 0h57 by Vamps (vamps@alterinet.org) * * */ #include #include #include #include #include "include/struct.h" #include "include/log.h" char buffer_tmp[SIZE_BUFFER]; int ParseKill(char *buf, struct game *game_t) { char *ptr_tmp; int i; ptr_tmp = strstr(buf, "kill "); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } else { #ifdef DEBUG printf("Search type of kill\n"); #endif memset(game_t->killer, 0, SIZE_BUFFER_LOW); memset(game_t->victim, 0, SIZE_BUFFER_LOW); buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("kill "); /* Search the killer ! */ ptr_tmp = strstr(buf, "killer='"); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("killer='"); /* Remove killer's number */ for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == ':') { i++; break; } } buf += i; for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '\'') break; game_t->killer[i] = *(buf + i); } /* Search for the victim ! */ ptr_tmp = strstr(buf, "victim='"); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("victim='"); /* Remove victim's number */ for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == ':') { i++; break; } } buf += i; for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '\'') break; game_t->victim[i] = *(buf + i); } if (strcmp(game_t->killer, game_t->victim) == 0) { memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "'%s' commits suicide", game_t->killer); PutLog(buffer_tmp); } else { memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "'%s' has killed '%s'", game_t->killer, game_t->victim); PutLog(buffer_tmp); } } return 0; } int ParseJoin(char *buf, struct game *game_t) { char *ptr_tmp; int i; ptr_tmp = strstr(buf, "join "); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } else { #ifdef DEBUG printf("Search join type\n"); #endif memset(game_t->player, 0, SIZE_BUFFER_LOW); buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("join "); ptr_tmp = strstr(buf, "player='"); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("player='"); /* Remove player's number */ for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == ':') { i++; break; } } buf += i; for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '\'') break; game_t->player[i] = *(buf + i); } memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "'%s' connected", game_t->player); PutLog(buffer_tmp); } return 0; } int ParseLeave(char *buf, struct game *game_t) { char *ptr_tmp; int i; ptr_tmp = strstr(buf, "leave "); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } else { #ifdef DEBUG printf("Requete de type leave\n"); #endif memset(game_t->player, 0, SIZE_BUFFER_LOW); buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("leave "); ptr_tmp = strstr(buf, "player='"); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("player='"); /* Remove player's number */ for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == ':') { i++; break; } } buf += i; for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '\'') break; game_t->player[i] = *(buf + i); } memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "'%s' leave", game_t->player); PutLog(buffer_tmp); } return 0; } int ParsePartyBegin(char *buf, struct game *game_t) { char *ptr_tmp; int i; ptr_tmp = strstr(buf, "[server]: data/maps/"); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [server]\n"); #endif return 1; } else { #ifdef DEBUG printf("Search map\n"); #endif memset(game_t->map, 0, SIZE_BUFFER_LOW); buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("[server]: data/maps/"); for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '.') break; game_t->map[i] = *(buf + i); } memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "New game (map '%s')", game_t->map); PutLog(buffer_tmp); } return 0; } int ParsePartyType(char *buf, struct game *game_t) { char *ptr_tmp; int i; ptr_tmp = strstr(buf, "[game]: -- "); if (ptr_tmp == NULL) { #ifdef DEBUG printf("Incorrect data : [game]\n"); #endif return 1; } else { #ifdef DEBUG printf("Search type of party\n"); #endif memset(game_t->type, 0, SIZE_BUFFER_LOW); buf += (strlen(buf) - strlen(ptr_tmp)); buf += strlen("game]: -- "); for (i = 0; i < SIZE_BUFFER_LOW; i++) { if (*(buf + i) == '-') break; game_t->type[i] = *(buf + i); } memset(buffer_tmp, 0, SIZE_BUFFER); sprintf(buffer_tmp, "Type : '%s'", game_t->type); PutLog(buffer_tmp); } return 0; }