コード例 #1
0
ファイル: main.c プロジェクト: nresare/sparkey
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)) {
    line[end] = '\0'; // trim '\n' off the end
    // Split on the first delimiter
    key = strtok(line, delim);
    value = strtok(NULL, delim);
    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;
}
コード例 #2
0
ファイル: bench.c プロジェクト: haikusw/sparkey
static void sparkey_create(int n, sparkey_compression_type compression_type, int block_size) {
    sparkey_logwriter *mywriter;
    sparkey_assert(sparkey_logwriter_create(&mywriter, "test.spl", compression_type, block_size));
    for (int i = 0; i < n; i++) {
        char mykey[100];
        char myvalue[100];
        sprintf(mykey, "key_%d", i);
        sprintf(myvalue, "value_%d", i);
        sparkey_assert(sparkey_logwriter_put(mywriter, strlen(mykey), (uint8_t*)mykey, strlen(myvalue), (uint8_t*)myvalue));
    }
    sparkey_assert(sparkey_logwriter_close(&mywriter));
    sparkey_assert(sparkey_hash_write("test.spi", "test.spl", 0));
}