ox

The Ox programming language, compiler and tools (WIP)
Log | Files | Refs | README | LICENSE

utils.c (641B)


      1 #include "utils.h"
      2 
      3 #include <errno.h>
      4 #include <stdio.h>
      5 #include <stdlib.h>
      6 #include <stdarg.h>
      7 #include <string.h>
      8 
      9 void
     10 panic(const char *fmt, ...)
     11 {
     12 	va_list args;
     13 	int saved_errno;
     14 	saved_errno = errno;
     15 	va_start(args, fmt);
     16 	fprintf(stderr, "Error: ");
     17 	vfprintf(stderr, fmt, args);
     18 	fprintf(stderr, "\n");
     19 	va_end(args);
     20 	if (fmt[0] && fmt[strlen(fmt) - 1] == ':') fprintf(stderr, " %s", strerror(saved_errno));
     21 	fputc('\n', stderr);
     22 	exit(1);
     23 }
     24 
     25 void
     26 softpanic(const char *fmt, ...)
     27 {
     28 	va_list args;
     29 	va_start(args, fmt);
     30 	fprintf(stderr, "Error: ");
     31 	vfprintf(stderr, fmt, args);
     32 	fprintf(stderr, "\n");
     33 	va_end(args);
     34 	exit(0);
     35 }