From: Peep P. <so...@us...> - 2004-06-07 15:44:26
|
Update of /cvsroot/agd/server/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8758 Modified Files: net.c Log Message: Rearranged headers; doesn't use type_xmalloc anymore; destruct_all takes from list to_be_dested Index: net.c =================================================================== RCS file: /cvsroot/agd/server/src/net.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- net.c 1 Apr 2004 19:10:53 -0000 1.14 +++ net.c 7 Jun 2004 15:44:17 -0000 1.15 @@ -10,31 +10,30 @@ #include "sys.h" #include "compile_options.h" #include "list.h" -#include "array.h" #include "lpc.h" #include "object.h" #include "net.h" #include "interpret.h" -#define LOOP_PLAYERS() for(i=0;i<players.length;i++) { player_t *pl = players.data[i]; +#define LOOP_PLAYERS() for(l=&players;l->next;l=l->next) { player_t *pl = l->data; - array_t players; +list_t players; -extern list_t all_objects; +extern list_t all_objects, to_be_dested; extern player_t *this_player; extern object_t *master, *this_ob; static int greatest_sockfd, listenfd; static fd_set readfds, writefds; -int do_write(char *s); +void do_write(char *s); void net_listen(unsigned short port) { struct sockaddr_in sin; int yes = 1; /* setsockopt(); */ -#ifdef WINSOCK +#if HAVE_WINSOCK_H WSADATA wsaData; if(WSAStartup(MAKEWORD(1, 1), &wsaData)) { fprintf(stderr, "Network error: Winsock initialization failed.\n"); @@ -87,9 +86,9 @@ object_t *player_ob; variable_t *login_ob, *pob; - p = type_xmalloc(player_t); + p = xmalloc(sizeof(player_t)); memset(p, 0, sizeof(player_t)); - array_push(&players, p); + list_push(&players, p); p->conn.socket = accept(listenfd, (struct sockaddr *)&p->conn.addr, &size); if(p->conn.socket > greatest_sockfd) @@ -98,7 +97,7 @@ /* p->conn.state = DEFAULT;*/ this_player = p; - player_ob = type_xmalloc(object_t); + player_ob = xmalloc(sizeof(object_t)); player_ob->iaob = p; player_ob->name = NULL; player_ob->prog = NULL; @@ -117,7 +116,7 @@ } p->ob = login_ob->u.ob; - this_ob = login_ob->u.ob; + this_ob = p->ob /*login_ob->u.ob*/; p->ob->iaob = p; apply(login_ob->u.ob, "logon", NULL); @@ -133,6 +132,7 @@ { int i; int fd = p->conn.socket; + list_t *l; if(p->conn.socket >= greatest_sockfd + 1) { p->conn.socket = 0; @@ -143,13 +143,13 @@ greatest_sockfd = pl->conn.socket; } } -#ifdef WINSOCK +#if HAVE_WINSOCK_H closesocket(fd); #else close(fd); #endif - array_remove_by_data(&players, p); + list_remove(&players, p); } void net_send(char *buf, int siz, player_t *p) @@ -216,7 +216,11 @@ void destruct_all(void) { list_t *p; - for(p = &all_objects; p; p=p->next) { + + if(!to_be_dested.data) + return; + + for(p = /*&all_objects*/ &to_be_dested; p; p=p->next) { object_t *ob = p->data; if(ob->flags & O_DESTRUCTED) actual_destruct(ob); @@ -227,6 +231,7 @@ { struct timeval timeout; int i; + list_t *l; while(1) { timeout.tv_sec = 0; |