int main(int argc, const char *argv[]) { hid_t fid; /* File ID for file opened */ long nops = 0; /* # of times to grow or shrink the dataset */ long flush_count = 1000; /* # of records to write between flushing file */ unsigned verbose = 1; /* Whether to emit some informational messages */ unsigned use_seed = 0; /* Set to 1 if a seed was set on the command line */ unsigned random_seed = 0; /* Random # seed */ unsigned u; /* Local index variable */ int temp; /* Parse command line options */ if(argc < 2) usage(); if(argc > 1) { u = 1; while(u < (unsigned)argc) { if(argv[u][0] == '-') { switch(argv[u][1]) { /* # of records to write between flushing file */ case 'f': flush_count = atol(argv[u + 1]); if(flush_count < 0) usage(); u += 2; break; /* Be quiet */ case 'q': verbose = 0; u++; break; /* Random # seed */ case 'r': use_seed = 1; temp = atoi(argv[u + 1]); if(temp < 0) usage(); else random_seed = (unsigned)temp; u += 2; break; default: usage(); break; } /* end switch */ } /* end if */ else { /* Get the number of records to append */ nops = atol(argv[u]); if(nops <= 0) usage(); u++; } /* end else */ } /* end while */ } /* end if */ if(nops <= 0) usage(); if(flush_count >= nops) usage(); /* Emit informational message */ if(verbose) { fprintf(stderr, "Parameters:\n"); fprintf(stderr, "\t# of operations between flushes = %ld\n", flush_count); fprintf(stderr, "\t# of operations = %ld\n", nops); } /* end if */ /* Set the random seed */ if(0 == use_seed) { struct timeval t; gettimeofday(&t, NULL); random_seed = (unsigned)((t.tv_sec * 1000) + t.tv_usec); } /* end if */ srandom(random_seed); /* ALWAYS emit the random seed for possible debugging */ fprintf(stderr, "Using writer random seed: %u\n", random_seed); /* Emit informational message */ if(verbose) fprintf(stderr, "Generating symbol names\n"); /* Generate dataset names */ if(generate_symbols() < 0) return -1; /* Emit informational message */ if(verbose) fprintf(stderr, "Opening skeleton file: %s\n", FILENAME); /* Open file skeleton */ if((fid = open_skeleton(FILENAME, verbose)) < 0) { fprintf(stderr, "Error opening skeleton file!\n"); exit(1); } /* end if */ /* Send a message to indicate "H5Fopen" is complete--releasing the file lock */ h5_send_message(WRITER_MESSAGE); /* Emit informational message */ if(verbose) fprintf(stderr, "Adding and removing records\n"); /* Grow and shrink datasets */ if(addrem_records(fid, verbose, (unsigned long)nops, (unsigned long)flush_count) < 0) { fprintf(stderr, "Error adding and removing records from datasets!\n"); exit(1); } /* end if */ /* Emit informational message */ if(verbose) fprintf(stderr, "Releasing symbols\n"); /* Clean up the symbols */ if(shutdown_symbols() < 0) { fprintf(stderr, "Error releasing symbols!\n"); exit(1); } /* end if */ /* Emit informational message */ if(verbose) fprintf(stderr, "Closing objects\n"); /* Close objects opened */ if(H5Fclose(fid) < 0) { fprintf(stderr, "Error closing file!\n"); exit(1); } /* end if */ return 0; }
int main(int argc, const char *argv[]) { hid_t fid; /* File ID for file opened */ long nrecords = 0; /* # of records to append */ long flush_count = 1000; /* # of records to write between flushing file */ unsigned verbose = 1; /* Whether to emit some informational messages */ unsigned u; /* Local index variable */ /* Parse command line options */ if(argc < 2) usage(); if(argc > 1) { u = 1; while(u < (unsigned)argc) { if(argv[u][0] == '-') { switch(argv[u][1]) { /* # of records to write between flushing file */ case 'f': flush_count = HDatol(argv[u + 1]); if(flush_count < 0) usage(); u += 2; break; /* Be quiet */ case 'q': verbose = 0; u++; break; default: usage(); break; } /* end switch */ } /* end if */ else { /* Get the number of records to append */ nrecords = HDatol(argv[u]); if(nrecords <= 0) usage(); u++; } /* end else */ } /* end while */ } /* end if */ if(nrecords <= 0) usage(); if(flush_count >= nrecords) usage(); /* Emit informational message */ if(verbose) { HDfprintf(stderr, "Parameters:\n"); HDfprintf(stderr, "\t# of records between flushes = %ld\n", flush_count); HDfprintf(stderr, "\t# of records to write = %ld\n", nrecords); } /* end if */ /* Emit informational message */ if(verbose) HDfprintf(stderr, "Generating symbol names\n"); /* Generate dataset names */ if(generate_symbols() < 0) return -1; /* Emit informational message */ if(verbose) HDfprintf(stderr, "Opening skeleton file: %s\n", FILENAME); /* Open file skeleton */ if((fid = open_skeleton(FILENAME, verbose)) < 0) { HDfprintf(stderr, "Error opening skeleton file!\n"); HDexit(1); } /* end if */ /* Send a message to indicate "H5Fopen" is complete--releasing the file lock */ h5_send_message(WRITER_MESSAGE); /* Emit informational message */ if(verbose) HDfprintf(stderr, "Adding records\n"); /* Append records to datasets */ if(add_records(fid, verbose, (unsigned long)nrecords, (unsigned long)flush_count) < 0) { HDfprintf(stderr, "Error appending records to datasets!\n"); HDexit(1); } /* end if */ /* Emit informational message */ if(verbose) HDfprintf(stderr, "Releasing symbols\n"); /* Clean up the symbols */ if(shutdown_symbols() < 0) { HDfprintf(stderr, "Error releasing symbols!\n"); HDexit(1); } /* end if */ /* Emit informational message */ if(verbose) HDfprintf(stderr, "Closing objects\n"); /* Close objects opened */ if(H5Fclose(fid) < 0) { HDfprintf(stderr, "Error closing file!\n"); HDexit(1); } /* end if */ return 0; }