/* Copyright 1989, 1990 by James Aspnes, David Applegate, and Bennet Yee */ /* See the file COPYING for distribution information */ #include "db.h" #include "globals.h" static char tell_buffer[TELL_BUFFER_SIZE]; static int tell_top; datum tell_victim; void tell_init(datum victim) { struct object *v; tell_top = 0; if((v = object(victim)) == 0 || !oflag_set(v, F_CONNECTED)) { tell_victim = NOTHING; } else { tell_victim = victim; if(oflag_set(v, F_PARANOID)) { sprintf(tell_buffer, "%d:", me); tell_top = strlen(tell_buffer); } } } static void buffer_string(const char *s) { int len; if(s != 0) { len = strlen(s); if(len + tell_top >= TELL_BUFFER_SIZE - 1) { tell_victim = NOTHING; } else { strcpy(tell_buffer + tell_top, s); tell_top += len; } } } void add_buffer(datum str) { if(tell_victim != NOTHING) { buffer_string(string(str)); } } void add_num_buffer(datum num) { char buf[256]; if(tell_victim != NOTHING) { sprintf(buf, "%d", num); buffer_string(buf); } } void add_time_buffer(datum t) { extern const char *time_string(datum); if(tell_victim != NOTHING) { buffer_string(time_string(t)); } } datum do_tell(void) { if(tell_victim != NOTHING) { tell_buffer[tell_top] = '\0'; notify(tell_victim, tell_buffer); return 1; } else { return 0; } }