From: Peep P. <so...@us...> - 2004-07-21 12:07:21
|
Update of /cvsroot/agd/server/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10081 Modified Files: dfuns.c Log Message: debug_info, sizeof, users Index: dfuns.c =================================================================== RCS file: /cvsroot/agd/server/src/dfuns.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- dfuns.c 20 Jun 2004 14:12:11 -0000 1.23 +++ dfuns.c 21 Jul 2004 12:07:13 -0000 1.24 @@ -13,10 +13,12 @@ #include "compile.h" #include "net.h" #include "interpret.h" +#include "array.h" extern player_t *this_player; extern object_t *this_ob, *previous_ob; +extern list_t players; extern list_t all_objects; extern time_t startup_time; /* for uptime() */ @@ -64,8 +66,11 @@ { if(this_player) net_send(s, strlen(s)+1, this_player); - else - printf("] %s", s); + else { + if(s[strlen(s)-1] == '\r') /* :\ */ + printf("] "); + printf("%s", s); + } } void shout(char *s) @@ -181,7 +186,7 @@ push_control_stack(); fp++; - ret = clone_object(csp[-1].fp->u.s); + ret = clone_object(csp[/*-1*/0].fp->u.s); pop_control_stack(1); pop_stack(); @@ -242,6 +247,22 @@ push_int(ret); } +void df_users(void) +{ + list_t *l; + array_t *ret; + ret = xmalloc(sizeof(array_t)); + init_array(ret); + for(l=&players;l;l=l->next) { + player_t *pl = l->data; + ret->length++; + ret->data = xrealloc(ret->data, ret->length * sizeof(variable_t)); + ret->data[ret->length-1].type = T_OBJECT; + ret->data[ret->length-1].u.ob = pl->ob; + } + push_array(ret, T_OBJECT); +} + /* Numbers. */ void df_random(void) { @@ -332,6 +353,15 @@ push_string(s, ST_MALLOC); } +/* Arrays. */ +void df_sizeof(void) +{ + array_t *arr; + arr = fp->u.a; + pop_stack(); + push_int(arr ? arr->length : 0); +} + /* Filesystem. */ void df_read_file(void) { @@ -371,3 +401,34 @@ pop_stack(); push_void(); } + +void show_all_obj(void) +{ + list_t *p; + puts("Printing all objects\n----------------------------------------"); + for(p = &all_objects; p; p=p->next) { + object_t *ob = p->data; + printf("%p", ob); + printf("; name %s;", ob->name); + putchar('\n'); + } + puts("----------------------------------------"); +} + +/* Debugging. */ +void df_debug_info(void) +{ + switch(fp->u.i) { + case 0: + show_all_obj(); + break; +/* case 1: + show_all_str(); + break; + case 2: + show_all_arr(); + break;*/ + } + pop_stack(); + push_void(); +} |