-#include <stdarg.h>
-#include <string.h>
-
-static void die(const char *fmt, ...) {
- va_list argp;
-
- va_start(argp, fmt);
- vfprintf(stderr, fmt, argp);
- va_end(argp);
- exit(1);
-}
-
-static char *mkString(const char *fmt, ...) {
- char *p;
- int i, j;
- va_list argp;
-
- va_start(argp, fmt);
- i = vsnprintf(NULL, 0, fmt, argp);
- va_end(argp);
-
- if (i < 0) {
- die("snprintf 0 failed: errno %d: %s\n", errno, strerror(errno));
- }
-
- p = malloc(i + 1);
- if (p == NULL) {
- die("malloc failed: errno %d: %s\n", errno, strerror(errno));
- }
-
- va_start(argp, fmt);
- j = vsnprintf(p, i + 1, fmt, argp);
- va_end(argp);
- if (i < 0) {
- die("snprintf with %d failed: errno %d: %s\n",
- i + 1, errno, strerror(errno));
- }
-
- return p;
-}
-
-char *quote(char *str) {
- char *quotedStr;
- char *p;
- int i;
-
- quotedStr = malloc(2 * strlen(str) + 2 + 1);
- if (quotedStr == NULL) {
- die("malloc failed: errno %d: %s\n", errno, strerror(errno));
- }
- p = quotedStr;
- *p++ = '"';
- while (*str) {
- if (*str == '"') {
- *p++ = '\\';
- }
- *p++ = *str++;
- }
- *p++ = '"';
- *p = '\0';
-
- return quotedStr;
-}