/* * shortcut.c -- includes all our fun shortcut commands */ #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <string.h> #include "config.h" #include "player.h" /* and those joyous externs, dont you love em? */ extern char *end_string(); extern void log(char *, char *), tell_player(player *, char *), su_wall(char *), au_wall(char *), su_wall_but(player *, char *), au_wall_but(player *, char *), tell_room(room *, char *), tell_room_but2(player *, room *, char *); /* experimental printf clone for log -- if it works, we'll add it for tell_player and su_wall too -- cuz its easier to debug one error than 100000 */ void LOGF(char *file, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); log(file, oldstack); stack = oldstack; } void TELLPLAYER(player *pl, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); tell_player(pl, oldstack); stack = oldstack; } void SUWALL(char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); su_wall(oldstack); stack = oldstack; } void AUWALL(char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); au_wall(oldstack); stack = oldstack; } void SW_BUT(player *but, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); su_wall_but(but, oldstack); stack = oldstack; } void AW_BUT(player *but, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); au_wall_but(but, oldstack); stack = oldstack; } void TELLROOM(room *here, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); tell_room(here, oldstack); stack = oldstack; } void TELLROOM_BUT(player * p, room *here, char *format, ...) { va_list argum; char *oldstack; oldstack = stack; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); tell_room_but2(p, here, oldstack); stack = oldstack; } /* these two are a bit different, no? Well, um.. yeah, kinda... */ void ADDSTACK(char *format, ...) { va_list argum; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = strchr(stack, 0); } void ENDSTACK(char *format, ...) { va_list argum; va_start(argum, format); vsprintf(stack, format, argum); va_end(argum); stack = end_string(stack); }