diff --git a/srohtml.c b/srohtml.c index 797fd34..8ea9ff6 100644 --- a/srohtml.c +++ b/srohtml.c @@ -177,6 +177,17 @@ array_at(array *a, const size_t i) return (char *) a->data + i * a->unit_size; } +void +array_init(array *a, const size_t size, size_t num) +{ + num = num == 0 ? 1 : num; + + a->data = safe_malloc(size * num); + a->length = 0; + a->size = num; + a->unit_size = size; +} + void * array_pop(array *a) { @@ -199,6 +210,54 @@ array_push(array *a) return (char *) a->data + a->length++ * a->unit_size; } +char * +array_strcat(array *dst, const char *src) +{ + char *c; + size_t i, len; + + len = strlen(src); + + for (i = 0; i < len; i++) { + c = array_push(dst); + *c = src[i]; + } + c = array_push(dst); + *c = '\0'; + dst->length--; + + return dst->data; +} + +char * +array_strcat_html(array *dst, const char *src, const html_val_type t) +{ + char *c; + size_t i, len; + + len = strlen(src); + + for (i = 0; i < len; i++) { + if (t == tag_attribute && src[i] == '"') + array_strcat(dst, """); + else if (src[i] == '&') + array_strcat(dst, "&"); + else if (src[i] == '<') + array_strcat(dst, "<"); + else if (src[i] == '>') + array_strcat(dst, ">"); + else { + c = array_push(dst); + *c = src[i]; + } + } + c = array_push(dst); + *c = '\0'; + dst->length--; + + return dst->data; +} + void cmd(char *line) { @@ -1055,19 +1114,8 @@ init_arrays(void) array_init(&sitography, sizeof(note), NOTES_START); } -void -array_init(array *a, const size_t size, size_t num) -{ - num = num == 0 ? 1 : num; - - a->data = safe_malloc(size * num); - a->length = 0; - a->size = num; - a->unit_size = size; -} - int -main (int argc, char *argv[]) +main(int argc, char *argv[]) { FILE *in, *out; @@ -1443,6 +1491,23 @@ page_head(void) array_strcat(&head, "\t\n"); } +void +pop_closure(array *a) +{ + closure *tag; + + if (a->length <= 0) + return; + + tag = array_at(a, a->length - 1); + if (tag == NULL) { + fprintf(stderr, BIN ": Can't find tag closure at position %i, in array type.\n", a->length - 1); + exit(1); + } + free(tag->name); + array_pop(a); +} + void print_help(void) { @@ -1516,23 +1581,6 @@ read_and_process(FILE *in) free(line); } -void -pop_closure(array *a) -{ - closure *tag; - - if (a->length <= 0) - return; - - tag = array_at(a, a->length - 1); - if (tag == NULL) { - fprintf(stderr, BIN ": Can't find tag closure at position %i, in array type.\n", a->length - 1); - exit(1); - } - free(tag->name); - array_pop(a); -} - void * safe_malloc(const size_t size) { @@ -1615,51 +1663,3 @@ stread_param(const char *src, char **str) return len + p; } - -char * -array_strcat(array *dst, const char *src) -{ - char *c; - size_t i, len; - - len = strlen(src); - - for (i = 0; i < len; i++) { - c = array_push(dst); - *c = src[i]; - } - c = array_push(dst); - *c = '\0'; - dst->length--; - - return dst->data; -} - -char * -array_strcat_html(array *dst, const char *src, const html_val_type t) -{ - char *c; - size_t i, len; - - len = strlen(src); - - for (i = 0; i < len; i++) { - if (t == tag_attribute && src[i] == '"') - array_strcat(dst, """); - else if (src[i] == '&') - array_strcat(dst, "&"); - else if (src[i] == '<') - array_strcat(dst, "<"); - else if (src[i] == '>') - array_strcat(dst, ">"); - else { - c = array_push(dst); - *c = src[i]; - } - } - c = array_push(dst); - *c = '\0'; - dst->length--; - - return dst->data; -}