wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

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