util.c (648B)
1#include "util.h" 2 3#include <stdio.h> 4#include <stdarg.h> 5#include <string.h> 6#include <stdlib.h> 7 8void 9die(const char *fmt, ...) 10{ 11 va_list ap; 12 13 if (cleanup) cleanup(); 14 15 va_start(ap, fmt); 16 fprintf(stderr, "%s: ", progname); 17 vfprintf(stderr, fmt, ap); 18 if (*fmt && fmt[strlen(fmt)-1] == ':') { 19 fputc(' ', stderr); 20 perror(NULL); 21 } else { 22 fputc('\n', stderr); 23 } 24 va_end(ap); 25 26 exit(1); 27} 28 29size_t 30strdcpy(char *dst, const char *src, size_t n) 31{ 32 strncpy(dst, src, n); 33 return strlen(src); 34} 35 36size_t 37strdcat(char *dst, const char *src, size_t n) 38{ 39 size_t len; 40 41 len = strlen(dst); 42 strncpy(dst + len, src, n - len); 43 return strlen(src); 44}