static int info_file(const char *filename) { sparkey_logheader logheader; sparkey_hashheader hashheader; sparkey_returncode res = sparkey_load_logheader(&logheader, filename); if (res == SPARKEY_SUCCESS) { printf("Filename: %s\n", filename); print_logheader(&logheader); printf("\n"); return 0; } if (res != SPARKEY_WRONG_LOG_MAGIC_NUMBER) { fprintf(stderr, "%s: %s\n", filename, sparkey_errstring(res)); return 1; } res = sparkey_load_hashheader(&hashheader, filename); if (res == SPARKEY_SUCCESS) { printf("Filename: %s\n", filename); print_hashheader(&hashheader); printf("\n"); return 0; } if (res != SPARKEY_WRONG_HASH_MAGIC_NUMBER) { fprintf(stderr, "%s: %s\n", filename, sparkey_errstring(res)); return 1; } fprintf(stderr, "%s: Not a sparkey file.\n", filename); return 1; }
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 assert(sparkey_returncode rc) { if (rc != SPARKEY_SUCCESS) { fprintf(stderr, "%s\n", sparkey_errstring(rc)); // skip cleanup - program exit will clean up implicitly. exit(1); } }
static void _sparkey_assert(const char *file, int line, sparkey_returncode i) { if (i != SPARKEY_SUCCESS) { printf("%s:%d: assertion failed: %s\n", file, line, sparkey_errstring(i)); exit(i); } }