chiark / gitweb /
b6c44948f8f7a14fb9b0a4e706f21702c5b2bc9f
[trains.git] / hostside / utils.c
1 /**/
2
3 #include <stdarg.h>
4 #include <errno.h>
5 #include <string.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8
9 #include "hostside.h"
10
11 void vdie(const char *fmt, int ev, va_list al) {
12   vfprintf(stderr,fmt,al);
13   if (ev) fprintf(stderr,": %s",strerror(ev));
14   fputc('\n',stderr);
15   exit(12);
16 }
17
18 void die(const char *fmt, ...)
19   { va_list al; va_start(al,fmt); vdie(fmt,0,al); }
20 void diee(const char *fmt, ...)
21   { va_list al; va_start(al,fmt); vdie(fmt,errno,al); }
22 void diem(void)
23   { diee("malloc failed"); }
24
25 void *mmalloc(size_t sz) {
26   void *p;
27   if (!sz) return 0;
28   p= malloc(sz);
29   if (!p) diem();
30   return p;
31 }
32                   
33 char *mstrdupl(const char *s, int l) {
34   char *p;
35   p= mmalloc(l+1);
36   memcpy(p,s,l);
37   p[l]= 0;
38   return p;
39 }
40                   
41 char *mstrdup(const char *s) { return mstrdupl(s,strlen(s)); }