int main(int argc, char *argv[]) { if (argc != 3) invocation_error(argv[0], "[input file] [output file]"); puts(argv[0]); Parts db; time_t start_time = time(NULL); clock_t start_clock = clock(); if ((db = load_parts(argv[1])) == NULL) print_error( __FILE__, argv[1]); time_t end_time = time(NULL); clock_t end_clock = clock() - start_clock; printf("p %g:\tr %g:\tReading %ld from %s\n", end_clock / (double) CLOCKS_PER_SEC, difftime(end_time, start_time), size(db), argv[1]); start_time = time(NULL); start_clock = clock(); if (dump(argv[2], db) != 0) print_error( __FILE__, argv[2]); end_time = time(NULL); end_clock = clock() - start_clock; printf("p %g:\tr %g:\tWriting %s\n", end_clock / (double) CLOCKS_PER_SEC, difftime(end_time, start_time), argv[2]); puts(""); return 0; }
int main(int argc, char *argv[]) { if (argc != 3) invocation_error(argv[0], "[output file] [size]"); char *output_file = argv[1]; size_t records = atol(argv[2]); size_t i, part_number, noun_count, adj_count; char *nouns[NOUN_MAX], noun_file_content[NOUN_BYTES]; char *adjectives[ADJ_MAX], adj_file_content[ADJ_BYTES]; int rc; Part p; Parts db = new_db(CHUNK_SIZE); noun_count = get_word_pointers(nouns, NOUN_FILE, noun_file_content, NOUN_BYTES); adj_count = get_word_pointers(adjectives, ADJ_FILE, adj_file_content, ADJ_BYTES); init_locale(); srand((unsigned int) time(NULL)); remove(output_file); for (part_number = 0, i = 0; i < records; i++) { part_number = jagged_sequence(part_number); p = set_part(part_number, random_part_name(nouns, noun_count, adjectives, adj_count), random_int(), random_int()); printf("%9ld: ", i + 1); print_part(p); if ((rc = insert_part(db, p))) { fprintf(stderr, "%s: %d insert_part() failed: return code %d on iteration %ld\n", __FILE__, __LINE__, rc, i); destroy_db(db); exit(EXIT_FAILURE); } if (i % CHUNK_SIZE == 0) { if (flush_to_disk(output_file, db) != 0) { destroy_db(db); exit_error(argv[0], output_file); } } } if (flush_to_disk(output_file, db) != 0) { destroy_db(db); exit_error(argv[0], output_file); } destroy_db(db); return 0; }
int main(int argc, char *argv[]) { if (argc != 4) invocation_error(argv[0], "[input file 1] [input file 2] [output file]"); char *output_filename = argv[3]; struct stat file1_stat, file2_stat; FileInfo larger, smaller; off_t record_size = (off_t)get_part_record_size(); validate_input_file(argv[1], &file1_stat, record_size); validate_input_file(argv[2], &file2_stat, record_size); sort_input_files(argv[1], &file1_stat, argv[2], &file2_stat, &larger, &smaller, record_size); Part out_buffer = (Part)malloc(larger.size + smaller.size); if (!out_buffer) memory_error(__FILE__, __LINE__, __func__); if (read_input(&larger, out_buffer, record_size) != 0) { free(out_buffer); exit(EXIT_FAILURE); } Part in_buffer = malloc(smaller.size); if (!in_buffer) { free(out_buffer); memory_error(__FILE__, __LINE__, __func__); } if (read_input(&smaller, in_buffer, record_size) != 0) { free(in_buffer); free(out_buffer); exit(EXIT_FAILURE); } size_t out_count = merge_buffers(in_buffer, smaller.count, out_buffer, larger.count); free(in_buffer); if (write_output(output_filename, out_buffer, out_count, record_size) != 0) { free(out_buffer); exit(EXIT_FAILURE); } free(out_buffer); return 0; }
int main(int argc, char *argv[]) { char *program = argv[0]; if (argc != 2) invocation_error(program, "[file]"); char *iname = argv[1]; FILE *istream; if ((istream = fopen(iname, "rb")) == NULL) exit_error(errno, program, iname); char *oname = build_output_file_name(iname); FILE *ostream; if ((ostream = fopen(oname, "wb")) == NULL) { print_error(errno, program, oname); free(oname); if (fclose(istream) == EOF) exit_error(errno, program, iname); exit(EXIT_FAILURE); } /* * Process */ if (is_rle_file(oname)) encode_rle(istream, ostream); else decode_rle(istream, ostream); /* * Clean up */ free(oname); if (fclose(istream) == EOF) print_error(errno, program, iname); if (fclose(ostream) == EOF) exit_error(errno, program, oname); return 0; }