#include #include #include #include "gramscii.h" static int LONG_STEP; /* line_t and lineset_t management */ void ensure_line_length(line_t *l, int len){ char *tmp; if (l->sz < len + 1){ tmp = realloc(l->s, (len+1) * 2 * sizeof(char)); if (!tmp){ fprintf(stderr, "Unable to allocate string\n"); exit(1); } l->s = tmp; l->sz = (len + 1) * 2; } } void alloc_line(line_t *l){ char *tmp; l->sz = WIDTH+1; tmp = malloc((l->sz) * sizeof(char)); if (tmp == NULL){ fprintf(stderr, "unable to allocate line\n"); exit(1); } l->s = tmp; memset(l->s, BG, l->sz); l->lst = -1; l->s[0]='\0'; } void ensure_num_lines(lineset_t *ls, int n){ line_t *tmp; if (n > ls->sz){ if (ls->sz == 0) ls->l=NULL; tmp = realloc(ls->l, (n + LONG_STEP) * sizeof(line_t)); if (tmp == NULL){ fprintf(stderr, "Unable to allocate memory for more lines"); exit(1); } else { ls->l = tmp; while ( ls->sz < n + LONG_STEP){ alloc_line(&(ls->l[ls->sz])); ls->sz ++; } } } } void dump_lines(lineset_t ls, FILE *f){ int i; for (i=0; i