+ dst[0] = '\0';
+
+ for (uint16_t i = 0; i < FPGA_BITSTREAM_FIXED_HEADER_SIZE; i++) {
+ if (fgetc(infile) != bitparse_fixed_header[i]) {
+ fprintf(stderr, "Invalid FPGA file. Aborting...\n\n");
+ return(EXIT_FAILURE);
+ }
+ }
+
+ strncat(dst, basename(infile_name), len-1);
+ // if (bitparse_find_section(infile, 'a', &fpga_info_len)) {
+ // for (uint16_t i = 0; i < fpga_info_len; i++) {
+ // char c = (char)fgetc(infile);
+ // if (i < sizeof(tempstr)) {
+ // tempstr[i] = c;
+ // }
+ // }
+ // strncat(dst, tempstr, len-1);
+ // }
+ strncat(dst, " built", len-1);
+ if (bitparse_find_section(infile, 'b', &fpga_info_len)) {
+ strncat(dst, " for ", len-1);
+ for (uint16_t i = 0; i < fpga_info_len; i++) {
+ char c = (char)fgetc(infile);
+ if (i < sizeof(tempstr)) {
+ tempstr[i] = c;
+ }
+ }
+ strncat(dst, tempstr, len-1);
+ }
+ if (bitparse_find_section(infile, 'c', &fpga_info_len)) {
+ strncat(dst, " on ", len-1);
+ for (uint16_t i = 0; i < fpga_info_len; i++) {
+ char c = (char)fgetc(infile);
+ if (i < sizeof(tempstr)) {
+ tempstr[i] = c;
+ }
+ }
+ strncat(dst, tempstr, len-1);
+ }
+ if (bitparse_find_section(infile, 'd', &fpga_info_len)) {
+ strncat(dst, " at ", len-1);
+ for (uint16_t i = 0; i < fpga_info_len; i++) {
+ char c = (char)fgetc(infile);
+ if (i < sizeof(tempstr)) {
+ tempstr[i] = c;
+ }
+ }
+ strncat(dst, tempstr, len-1);
+ }
+ return 0;
+}
+
+
+static void print_version_info_preamble(FILE *outfile, int num_infiles) {
+ fprintf(outfile, "//-----------------------------------------------------------------------------\n");
+ fprintf(outfile, "// piwi, 2018\n");
+ fprintf(outfile, "//\n");
+ fprintf(outfile, "// This code is licensed to you under the terms of the GNU GPL, version 2 or,\n");
+ fprintf(outfile, "// at your option, any later version. See the LICENSE.txt file for the text of\n");
+ fprintf(outfile, "// the license.\n");
+ fprintf(outfile, "//-----------------------------------------------------------------------------\n");
+ fprintf(outfile, "// Version information on fpga images\n");
+ fprintf(outfile, "//\n");
+ fprintf(outfile, "// This file is generated by fpga_compress. Don't edit!\n");
+ fprintf(outfile, "//-----------------------------------------------------------------------------\n");
+ fprintf(outfile, "\n");
+ fprintf(outfile, "\n");
+ fprintf(outfile, "const int fpga_bitstream_num = %d;\n", num_infiles);
+ fprintf(outfile, "const char* const fpga_version_information[%d] = {\n", num_infiles);