aboutsummaryrefslogtreecommitdiff
path: root/src/template.c
blob: e3ce60ac2fcd7bf2948be4ac8e200510ed5b895a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define _GNU_SOURCE

#include <filehandler.h>
#include <lexer.h>
#include <stdio.h>
#include <stdlib.h>
#include <template.h>

#include "../config.h"

template_t *
template_create(void)
{
  template_t *template = malloc(sizeof(template_t));

  FILE *base = fopen(DIRECTORY "/" BASE_TEMPLATE, "r");

  unsigned int size = fsize(base);
  char *contents = fcontent(base, size);
  fclose(base);

  key_match_t *match = find_next_key(contents);
  asprintf(&template->pre, "%.*s", match->offset, contents);
  asprintf(&template->post,
           "%.*s",
           size - match->offset - match->length,
           contents + match->offset + match->length);

  free(contents);
  free(match);
  return template;
}