#include "dowa/dowa.h"


size_t Dowa_File_ReadLine(FILE *restrict stream, char *buffer, size_t buffer_size)
{
  char c;
  size_t res = 0;
  while ((c = getc(stream)) != EOF && c != '\n')
  {
    if (res + 1 > buffer_size)
      break;
    buffer[res++] = c;
  }
  buffer[res] = '\0';
  return res;
}


int main(void)
{
  char c;
  char *comma, *curr;
  char **keys;
  FILE *f = fopen("wedding/invities.csv", "rb");
  if (!f)
    perror("fopen\n");

  char *line = malloc(128);

  Dowa_PArena p_csv_area = Dowa_Arena_Create(4048);
  keys = Dowa_Arena_Allocate(p_csv_area, sizeof(char*) * 10);

  while (Dowa_File_ReadLine(f, line, 128) > 0) 
  {
    curr = line;
    int pos = 0 ;

    while (1)
    {
      comma = memchr(curr, ',', strlen(curr));
      if (!comma)
        break;
      size_t diff = comma - curr;
      keys[pos] = Dowa_Arena_Allocate(p_csv_area, diff+1);
      memcpy(keys[pos], curr, diff);
      curr = comma+1;
      pos += 1;
    }

    int last = strlen(curr);
    keys[pos] = Dowa_Arena_Allocate(p_csv_area, last);
    memcpy(keys[pos], curr, last);

    for (pos = 0; pos < 10; pos++)
    {
      if (!keys[pos])
        break;
      printf("%s, ", keys[pos]);
    }
    printf("\n\n");
  }

  return 0;
}
