/* Copyright 1989, 1990 by James Aspnes, David Applegate, and Bennet Yee */ /* See the file COPYING for distribution information */ #include "db.h" #include "globals.h" #include "interface.h" #include "externs.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, "%ld:", 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, "%ld", num); buffer_string (buf); } } void add_time_buffer (datum t) { 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; } }