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; }
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)); }