38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
#include "ansi_lib.h"
|
|
#include <execinfo.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "hydroforth/hydroforth.h"
|
|
|
|
bool hf__is_space_like(const char c) { return c == ' ' || c == '\t'; }
|
|
|
|
bool hf__is_numeric(const char c) { return c >= '0' && c <= '9'; }
|
|
|
|
char *hf__quote(const char *const str, const bool double_quote) {
|
|
const char *const q = double_quote ? "\"" : "'";
|
|
const size_t required_size = snprintf(NULL, 0, "%s%s%s", q, str, q);
|
|
char *s = malloc(sizeof(char) * (required_size + 1));
|
|
snprintf(s, required_size + 1, "%s%s%s", q, str, q);
|
|
|
|
return s;
|
|
}
|
|
|
|
char *hf__quote_mem_str(const char *const src, const size_t start,
|
|
const size_t end, const bool double_quote) {
|
|
const size_t str_len = end - start + 1;
|
|
char *str = malloc(sizeof(char) * (str_len + 1));
|
|
strncpy(str, src + start, str_len);
|
|
str[str_len] = '\0';
|
|
|
|
const char *const q = double_quote ? "\"" : "'";
|
|
const size_t required_size = snprintf(NULL, 0, "%s%s%s", q, str, q);
|
|
char *s = malloc(sizeof(char) * (required_size + 1));
|
|
snprintf(s, required_size + 1, "%s%s%s", q, str, q);
|
|
|
|
free(str);
|
|
|
|
return s;
|
|
}
|