error.c (604B)
1 /* Copyright ©2007-2010 Kris Maglione <jg@suckless.org> 2 * See LICENSE file for license details. 3 */ 4 5 #include "dat.h" 6 #include "fns.h" 7 8 static jmp_buf errjmp[16]; 9 static long nerror; 10 11 void 12 error(char *fmt, ...) { 13 char errbuf[IXP_ERRMAX]; 14 va_list ap; 15 16 va_start(ap, fmt); 17 vsnprint(errbuf, IXP_ERRMAX, fmt, ap); 18 va_end(ap); 19 ixp_errstr(errbuf, IXP_ERRMAX); 20 21 nexterror(); 22 } 23 24 void 25 nexterror(void) { 26 assert(nerror > 0); 27 longjmp(errjmp[--nerror], 1); 28 } 29 30 void 31 poperror(void) { 32 assert(nerror > 0); 33 --nerror; 34 } 35 36 jmp_buf* 37 pusherror(void) { 38 assert(nerror < nelem(errjmp)); 39 return &errjmp[nerror++]; 40 } 41