waserror.c 382 B

123456789101112131415161718192021222324252627
  1. #include "u.h"
  2. #include "lib.h"
  3. #include "dat.h"
  4. #include "fns.h"
  5. #include "error.h"
  6. Label*
  7. pwaserror(void)
  8. {
  9. if(up->nerrlab == NERR)
  10. panic("error stack overflow");
  11. return &up->errlab[up->nerrlab++];
  12. }
  13. void
  14. nexterror(void)
  15. {
  16. longjmp(up->errlab[--up->nerrlab].buf, 1);
  17. }
  18. void
  19. error(char *e)
  20. {
  21. kstrcpy(up->errstr, e, ERRMAX);
  22. setjmp(up->errlab[NERR-1].buf);
  23. nexterror();
  24. }