static int append()

in src/main.c [211:244]


static int append(sparkey_logwriter *writer, char delimiter, FILE *input) {
  char *line = NULL;
  char *key = NULL;
  char *value = NULL;
  size_t size = 0;
  sparkey_returncode returncode;
  char delim[2];
  delim[0] = delimiter;
  delim[1] = '\0';

  for (size_t end = read_line(&line, &size, input); line[end] == '\n'; end = read_line(&line, &size, input)) {
    // Split on the first delimiter
    key = strtok(line, delim);
    value = strtok(NULL, "\n");
    if (value != NULL) {
      // Write to log
      TRY(sparkey_logwriter_put(writer, strlen(key), (uint8_t*)key, strlen(value), (uint8_t*)value), put_fail);
    } else {
      goto split_fail;
    }
  }

  free(line);
  return 0;

split_fail:
  free(line);
  fprintf(stderr, "Cannot split input line, aborting early.\n");
  return 1;
put_fail:
  free(line);
  fprintf(stderr, "Cannot append line to log file, aborting early: %s\n", sparkey_errstring(returncode));
  return 1;
}