static void write_email_files(gchar email_file_names[5][13]); static void write_summary_file(const gchar *filnam, gint margin); static void write_dupe_file(const gchar *filnam, gint margin); static void write_log_file(const gchar *filnam, gint margin); static void write_multiplier_file(const gchar *filnam, gint margin); static void write_cabrillo_file(const gchar *filnam); static void write_email_files(gchar email_file_names[5][13]) { gchar email_file_base[9], dot_ext[5]; gint i, lci, lcil; gint margin=0; switch (isel_contest) { case DX : case FD : case SS : case A160 : case TEN : strcpy(dot_ext, ".TXT"); break; case WPX : case WW : case CQP : strcpy(dot_ext, ".CBR"); break; } lcil = strlen(init_screen_choices[0]); lci = lcil<9 ? lcil : 8; concat(email_file_base, init_screen_choices[0], 0, lci-1, COPY); lcil = kb_index (email_file_base, "/"); if(lcil>-1) email_file_base[lcil] = '-'; for(i=0; i<5; i++) strcpy(email_file_names[i], email_file_base); strcat(email_file_names[0], ".SUM"); strcat(email_file_names[1], ".DUP"); strcat(email_file_names[2], ".LOG"); strcat(email_file_names[3], ".MLT"); strcat(email_file_names[4], dot_ext); write_summary_file (email_file_names[0], margin); write_dupe_file (email_file_names[1], margin); write_log_file (email_file_names[2], margin); if(isel_contest==WPX) write_multiplier_file (email_file_names[3], margin); write_cabrillo_file (email_file_names[4]); } static void write_summary_file(const gchar *filnam, gint margin) { FILE *fp; gint i, j, k, pm; gchar blank80[81], under_line[66], msg[49], line_out[84], score_line[12]; gchar station[14], mode_line[6], power_line[5], sum_line[7], mult_line[2]; gchar locus_line[4], ops_line[45]; gint iqsos[2] = {0, 0}, idupes[2] = {0, 0}, ipoints[2] = {0, 0}; gint mults[2] = {0, 0}, izones[2] = {0, 0}, nlw[2] = {0, 0}; const gchar *stpr = "State/Province: "; const gchar *category_choices[8] = {"Single Operator", "Single Operator, Assisted", "Single Operator, Tribander/S-E", "Multi-Operator, Single-Transmitter", "Multi-Operator, Two Transmitters", "Multi-Operator, Two Transmitters", "Multi-Operator, Multi-Transmitter", "School-Club"}; fp = fopen(filnam, "w"); if(fp==NULL) { strcpy(msg, "Error writing "); strcat(msg, filnam); rw_error_box (main_drawing_area, msg); return; } for(i=0; i<80; i++) blank80[i] = ' '; blank80[80] = '\0'; for(i=0; i<65; i++) under_line[i] = '_'; under_line[65] = '\0'; for(j=0; j<2; j++) for(i=0; i<6; i++) { iqsos[j] += score_mb.qsos[j][i]; idupes[j] += score_mb.dupes[j][i]; ipoints[j] += score_mb.points[j][i]; mults[j] += score_mb.mults[j][i]; izones[j] += score_mb.zones[j][i]; } if(!iqsos[CW]) strcpy(mode_line, "Phone"); else if(!iqsos[PH]) strcpy(mode_line, "CW "); else strcpy(mode_line, "Mixed"); if(!strcmp(init_screen_choices[12], power_bracket[0])) strcpy(power_line, "QRP "); else if(!strcmp(init_screen_choices[12], power_bracket[1])) strcpy(power_line, "Low "); else strcpy(power_line, "High"); concat(line_out, blank80, 0, margin+20, COPY); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[1].date, 4, 5, !COPY); strcat(line_out, " "); strcat(line_out, select_contest_items[isel_contest]); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Call: "); strcpy(station, init_screen_choices[0]); right_blank_pad (station, sizeof(station)); strcat(line_out, station); concat(line_out, blank80, 0, 5, !COPY); switch (isel_contest) { case DX : strcat(line_out, stpr); concat(line_out, set_screen_choices[0], 3-mode, 4-mode, !COPY); concat(line_out, blank80, 0, 8, !COPY); strcat(line_out, "Section: ___"); break; case WPX : strcat(line_out, stpr); strcat(line_out, init_screen_choices[6]); break; case FD : strcat(line_out, stpr); strcat(line_out, init_screen_choices[6]); concat(line_out, blank80, 0, 8, !COPY); strcat(line_out, "Section: "); concat(line_out, set_screen_choices[0], 2, strlen(set_screen_choices[0])-1, !COPY); break; case CQP : strcat(line_out, "State/Province/Country: "); strcat(line_out, set_screen_choices[0]); break; case WW : strcat(line_out, stpr); strcat(line_out, init_screen_choices[6]); concat(line_out, blank80, 0, 12, !COPY); strcat(line_out, "Zone: "); concat(line_out, set_screen_choices[0], 3-mode, 4-mode, !COPY); break; case SS : strcat(line_out, stpr); strcat(line_out, init_screen_choices[6]); concat(line_out, blank80, 0, 8, !COPY); strcat(line_out, "Section: "); concat(line_out, set_screen_choices[0], 3, strlen(set_screen_choices[0])-1, !COPY); break; case A160 : strcat(line_out, stpr); strcat(line_out, init_screen_choices[6]); concat(line_out, blank80, 0, 8, !COPY); strcat(line_out, "Section: "); concat(line_out, set_screen_choices[0], 3-mode, strlen(set_screen_choices[0])-1, !COPY); break; case TEN : strcat(line_out, stpr); concat(line_out, set_screen_choices[0], 3-mode, 4-mode, !COPY); concat(line_out, blank80, 0, 8, !COPY); strcat(line_out, "Section: ___"); break; } fprintf(fp, "%s\n\n", line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Category: "); for(i=0; i<8; i++) if(!strcmp(init_screen_choices[11], category_bracket[i])) { strcat(line_out, category_choices[i]); if(i>2) { strcpy(ops_line, "Operators: "); concat(ops_line, under_line, 0, 32, !COPY); } else if(strcmp(init_screen_choices[0], init_screen_choices[1])) { strcpy(ops_line, "Operator: "); strcat(ops_line, init_screen_choices[1]); } else strcpy(ops_line, ""); break; } fprintf(fp, "%s\n\n", line_out); if(strlen(ops_line)) { concat(line_out, blank80, 0, margin, COPY); strcat(line_out, ops_line); fprintf(fp, "%s\n\n", line_out); } concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Mode: "); strcat(line_out, mode_line); concat(line_out, blank80, 0, 9, !COPY); strcat(line_out, "Power: "); strcat(line_out, power_line); concat(line_out, blank80, 0, 9, !COPY); strcat(line_out, "Hours of Operation: __"); fprintf(fp, "%s\n\n\n", line_out); switch (isel_contest) { case DX : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " Net QSO Country Claimed"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " QSOs Points Mults Score"); fprintf(fp, "%s\n\n", line_out); for(i=0; i<6; i++) { concat(line_out, blank80, 0, margin+2, COPY); strcat(line_out, bandf[i]); strcat(line_out, " MHz"); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (score_mb.qsos[mode][i]-score_mb.dupes[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (score_mb.points[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (score_mb.mults[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n", line_out); } fprintf(fp,"\n"); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "All Bands"); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (iqsos[mode]-idupes[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (mults[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode]*mults[mode], score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n",line_out); break; case FD : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " Net CW Net PH"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " QSOs QSOs"); fprintf(fp,"%s\n\n",line_out); for(i=0; i<6; i++) { concat(line_out, blank80, 0, margin+2, COPY); strcat(line_out, bandf[i]); strcat(line_out, " MHz"); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (score_mb.qsos[CW][i]-score_mb.dupes[CW][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (score_mb.qsos[PH][i]-score_mb.dupes[PH][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); } fprintf(fp,"\n"); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "All Bands"); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (iqsos[CW]-idupes[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (iqsos[PH]-idupes[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (iqsos[CW]-idupes[CW]+iqsos[PH]-idupes[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSO Points"); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (ipoints[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[CW]+ipoints[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Power Multiplier"); concat(line_out, blank80, 0, 21, !COPY); if(!strcmp(init_screen_choices[12], power_bracket[0])) pm = 5; else if(!strcmp(init_screen_choices[12], power_bracket[1])) pm = 2; else pm = 1; int_to_comma (pm, sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSO Score"); concat(line_out, blank80, 0, 28, !COPY); int_to_comma (pm*(ipoints[CW]+ipoints[PH]), sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Bonus Points"); concat(line_out, blank80, 0, 24, !COPY); concat(line_out, under_line, 0, 6, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Claimed Score"); concat(line_out, blank80, 0, 23, !COPY); concat(line_out, under_line, 0, 6, !COPY); fprintf(fp,"%s\n",line_out); break; case WPX : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " Net QSO Prefix Claimed"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " QSOs Points Mults Score"); fprintf(fp,"%s\n\n",line_out); for(i=0; i<6; i++) { concat(line_out, blank80, 0, margin+2, COPY); strcat(line_out, bandf[i]); strcat(line_out, " MHz"); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (score_mb.qsos[mode][i]-score_mb.dupes[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (score_mb.points[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (score_mb.mults[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); } fprintf(fp,"\n"); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "All Bands"); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (iqsos[mode]-idupes[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (mults[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode]*mults[mode], score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n",line_out); break; case CQP : break; case WW : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " Net QSO Country Zone Claimed"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " QSOs Points Mults Mults Score"); fprintf(fp,"%s\n\n",line_out); for(i=0; i<6; i++) { concat(line_out, blank80, 0, margin+2, COPY); strcat(line_out, bandf[i]); strcat(line_out, " MHz"); concat(line_out, blank80, 0, 2, !COPY); int_to_comma (score_mb.qsos[mode][i]-score_mb.dupes[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (score_mb.points[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (score_mb.mults[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (score_mb.zones[mode][i], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n",line_out); } fprintf(fp,"\n"); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "All Bands"); concat(line_out, blank80, 0, 2, !COPY); int_to_comma (iqsos[mode]-idupes[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (ipoints[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 3, !COPY); int_to_comma (mults[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (izones[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 2, !COPY); int_to_comma (ipoints[mode]*(mults[mode]+izones[mode]), score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n",line_out); break; case SS : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " Net QSO Section Claimed"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " QSOs Points Mults Score"); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); concat(line_out, blank80, 0, 12, !COPY); int_to_comma (iqsos[mode]-idupes[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 4, !COPY); int_to_comma (mults[mode], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 5, !COPY); int_to_comma (ipoints[mode]*mults[mode], score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " ARRL Sections Check-Off List"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " (Sections worked marked with an asterisk)"); fprintf(fp,"%s\n\n",line_out); for(j=1; j<11; j++) { concat(line_out, blank80, 0, margin, COPY); concat(line_out, blank80, 0, 9, !COPY); for(i=j; i<=loci.number_of_loci; i=i+10) { strcat(line_out, " "); strcpy(mult_line, " "); for(k=0; k<6; k++) if(loci.locus_worked[k][i]) { strcpy(mult_line, "*"); break; } strcpy(locus_line, loci.locus_abv[i]); right_blank_pad (locus_line, sizeof(locus_line)); strcat(line_out, mult_line); strcat(line_out, locus_line); } fprintf(fp,"%s\n",line_out); } break; case A160 : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSOs"); concat(line_out, blank80, 0, 15, !COPY); int_to_comma (iqsos[CW]-idupes[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSO Points"); concat(line_out, blank80, 0, 9, !COPY); int_to_comma (ipoints[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "States/Prov"); for(i=0; i<2; i++) for(j=1; j<=loci.number_of_loci; j++) if(loci.locus_worked[i][j]) nlw[i]++; concat(line_out, blank80, 0, 8, !COPY); int_to_comma (nlw[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Countries"); nlw[0] = 0; nlw[1] = 0; for(i=0; i<2; i++) for(j=1; j<=countries.number_of_countries; j++) if(countries.icountry_worked[i][j]) nlw[i]++; concat(line_out, blank80, 0, 10, !COPY); int_to_comma (nlw[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Total Mults"); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (mults[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Claimed Score"); concat(line_out, blank80, 0, 1, !COPY); int_to_comma ((ipoints[CW]+ipoints[PH])*(mults[CW]+mults[PH]), score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n",line_out); break; case TEN : concat(line_out, blank80, 0, margin, COPY); strcat(line_out, " CW Phone All"); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSOs"); concat(line_out, blank80, 0, 15, !COPY); int_to_comma (iqsos[CW]-idupes[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (iqsos[PH]-idupes[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 7, !COPY); int_to_comma (iqsos[CW]-idupes[CW]+iqsos[PH]-idupes[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "QSO Points"); concat(line_out, blank80, 0, 9, !COPY); int_to_comma (ipoints[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (ipoints[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 7, !COPY); int_to_comma (ipoints[CW]+ipoints[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "States/Prov"); for(i=0; i<2; i++) for(j=1; j<=loci.number_of_loci; j++) if(loci.locus_worked[i][j]) nlw[i]++; concat(line_out, blank80, 0, 8, !COPY); int_to_comma (nlw[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (nlw[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 7, !COPY); int_to_comma (nlw[CW]+nlw[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Countries"); nlw[0] = 0; nlw[1] = 0; for(i=0; i<2; i++) for(j=1; j<=countries.number_of_countries; j++) if(countries.icountry_worked[i][j]) nlw[i]++; concat(line_out, blank80, 0, 10, !COPY); int_to_comma (nlw[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (nlw[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 7, !COPY); int_to_comma (nlw[CW]+nlw[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Total Mults"); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (mults[CW], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 8, !COPY); int_to_comma (mults[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); concat(line_out, blank80, 0, 7, !COPY); int_to_comma (mults[CW]+mults[PH], sum_line); left_blank_pad (sum_line, sizeof(sum_line)); strcat(line_out, sum_line); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Claimed Score"); concat(line_out, blank80, 0, 30, !COPY); int_to_comma ((ipoints[CW]+ipoints[PH])*(mults[CW]+mults[PH]), score_line); left_blank_pad (score_line, sizeof(score_line)); strcat(line_out, score_line); fprintf(fp,"%s\n",line_out); break; } fprintf(fp,"\n\n"); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Club Participation? ( ) Yes ( ) No If yes, print name below."); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Name of Club: "); concat(line_out, under_line, 0, 49, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Rigs: "); concat(line_out, under_line, 0, 57, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); concat(line_out, under_line, 0, 63, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Antennas: "); concat(line_out, under_line, 0, 53, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); concat(line_out, under_line, 0, 63, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Remarks: "); concat(line_out, under_line, 0, 54, !COPY); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); concat(line_out, under_line, 0, 63, !COPY); fprintf(fp,"%s\n\n%s\n\n",line_out,line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "This is to certify that in this contest I have operated my"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "transmitter within the limitations of my license and have"); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "observed fully the rules and regulations of the contest."); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, "Date "); concat(line_out, under_line, 0, 9, !COPY); strcat(line_out, " Signature "); concat(line_out, under_line, 0, 22, !COPY); strcat(line_out, ", "); strcat(line_out, init_screen_choices[1]); fprintf(fp,"%s\n\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, init_screen_choices[2]); strcat(line_out, ", "); strcat(line_out, init_screen_choices[1]); fprintf(fp,"%s\n",line_out); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, init_screen_choices[3]); fprintf(fp,"%s\n",line_out); if(strlen(init_screen_choices[4])) { concat(line_out, blank80, 0, margin, COPY); strcat(line_out, init_screen_choices[4]); fprintf(fp,"%s\n",line_out); } concat(line_out, blank80, 0, margin, COPY); strcat(line_out, init_screen_choices[5]); strcat(line_out, ", "); strcat(line_out, init_screen_choices[6]); strcat(line_out, " "); strcat(line_out, init_screen_choices[7]); fprintf(fp,"%s\n",line_out); fflush(fp); fsync(fileno(fp)); fclose(fp); } static void write_dupe_file(const gchar *filnam, gint margin) { FILE *fp; gint i, j, k, khold, ipage, npages, lml, lsci25, is, is1, ic; gint lines_per_mb[12], new_mb, idl; gchar blank80[81], msg[49], line_out[84], ipage_char[4], npages_char[4]; gchar station[14], mode_line[6], dupe_line[2]; gchar title_line[74], header_line1[74], call_hold[14], call_fill[14]; gint iqsos[2] = {0, 0}, max_lines=54; gchar form_feed[2] = {'\f', '\0'}; fp = fopen(filnam, "w"); if(fp==NULL) { strcpy(msg, "Error writing "); strcat(msg, filnam); rw_error_box (main_drawing_area, msg); return; } for(i=0; i<80; i++) blank80[i] = ' '; blank80[80] = '\0'; for(j=0; j<2; j++) for(i=0; i<6; i++) { iqsos[j] += score_mb.qsos[j][i]; lines_per_mb[j*6+i] = (score_mb.qsos[j][i]-score_mb.dupes[j][i])/4; if((score_mb.qsos[j][i]-score_mb.dupes[j][i])%4) lines_per_mb[j*6+i]++; } if(!iqsos[CW]) strcpy(mode_line, "Phone"); else if(!iqsos[PH]) strcpy(mode_line, "CW"); else strcpy(mode_line, ""); lml = strlen(mode_line); concat(title_line, full_year, 0, 1, COPY); concat(title_line, cr_array[1].date, 4, 5, !COPY); strcat(title_line, " "); strcat(title_line, select_contest_items[isel_contest]); lsci25 = 25-strlen(select_contest_items[isel_contest]); if(lsci25<0) lsci25 = 0; if(lml) { strcat(title_line, " "); strcat(title_line, mode_line); } strcat(title_line, ": "); strcpy(station, init_screen_choices[0]); right_blank_pad (station, sizeof(station)); strcat(title_line, station); concat(title_line, blank80, 0, lsci25-lml+5, !COPY); strcat(title_line, "Page "); concat(header_line1, blank80, 0, 14, COPY); strcat(header_line1, "Dupe Sheet for "); for(j=0; j<2; j++) for(i=0; i<6; i++) if(lines_per_mb[j*6+i]) { new_mb = TRUE; npages = lines_per_mb[j*6+i]/max_lines; if(lines_per_mb[j*6+i]%max_lines) npages++; khold = 1; for(ipage=1; ipage<=npages; ipage++) { idl = 0; if(margin) { int_to_char (ipage, ipage_char); left_blank_pad (ipage_char, sizeof(ipage_char)); concat(line_out, blank80, 0, margin, COPY); strcat(line_out, title_line); strcat(line_out, ipage_char); strcat(line_out, " of "); int_to_char (npages, npages_char); left_blank_pad (npages_char, sizeof(npages_char)); strcat(line_out, npages_char); fprintf(fp,"%s\n\n\n",line_out); } if(margin || new_mb) { new_mb = FALSE; concat(line_out, blank80, 0, margin, COPY); strcat(line_out, header_line1); strcat(line_out, bandw[i]); strcat(line_out, mode_char[j]); fprintf(fp,"%s\n\n",line_out); } strcpy(call_hold, ""); ic = 0; for(k=khold; k<=icall_count; k++) { is = call_tree.sort_order[k]; if(!strcmp(cr_array[is].call, "NOQSO")) continue; if(cr_array[is].mode==j && cr_array[is].iband==i) if(strcmp(cr_array[is].call, call_hold)) { if(!ic) concat(line_out, blank80, 0, margin, COPY); strcpy(call_fill, cr_array[is].call); right_blank_pad (call_fill, sizeof(call_fill)); strcpy(dupe_line, " "); if(k0) { strcpy(line_out, "ARRL-SECTION: "); strcat(line_out, section); } else strcpy(line_out, "ARRL-SECTION:"); fprintf(fp,"%s\n",line_out); strcpy(line_out, "CALLSIGN: "); strcat(line_out, init_screen_choices[0]); fprintf(fp,"%s\n",line_out); strcpy(line_out, "CATEGORY: "); strcat(line_out, category_cab); fprintf(fp,"%s\n",line_out); if(isel_contest==WPX && !strcmp(init_screen_choices[11], "")) { strcpy(line_out, "CATEGORY-OVERLAY: "); strcat(line_out, "TB-WIRES"); fprintf(fp,"%s\n",line_out); } strcpy(line_out, "CLAIMED-SCORE: "); strcat(line_out, score_cab); fprintf(fp,"%s\n",line_out); strcpy(line_out, "CLUB:"); fprintf(fp,"%s\n",line_out); strcpy(line_out, "CONTEST: "); strcat(line_out, contest_cab); fprintf(fp,"%s\n",line_out); strcpy(line_out, "NAME: "); strcat(line_out, init_screen_choices[2]); fprintf(fp,"%s\n",line_out); strcpy(line_out, "ADDRESS: "); strcat(line_out, init_screen_choices[3]); fprintf(fp,"%s\n",line_out); if(strlen(init_screen_choices[4])!=0) fprintf(fp,"ADDRESS: %s\n", init_screen_choices[4]); fprintf(fp,"ADDRESS: %s, %s %s\n",init_screen_choices[5], init_screen_choices[6],init_screen_choices[7]); fprintf(fp,"OPERATORS:\n"); fprintf(fp,"SOAPBOX:\n"); fprintf(fp,"SOAPBOX:\n"); fprintf(fp,"SOAPBOX:\n"); fprintf(fp,"SOAPBOX:\n"); fprintf(fp,"SOAPBOX:\n"); switch (isel_contest) { case WPX : for(i=1; i<=icall_count; i++) if(strcmp(cr_array[i].call, "NOQSO")) { concat(rst_sent_cab, cr_array[i].sent, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_sent_cab, sizeof(rst_sent_cab)); strcpy(exch_sent_cab, cr_array[i].qso); left_blank_pad (exch_sent_cab, sizeof(exch_sent_cab)); strcpy(call_cab, cr_array[i].call); right_blank_pad (call_cab, sizeof(call_cab)); concat(rst_rcvd_cab, cr_array[i].rec_num, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_rcvd_cab, sizeof(rst_rcvd_cab)); concat(exch_rcvd_cab, cr_array[i].rec_num, 3-cr_array[i].mode, strlen(cr_array[i].rec_num)-1, COPY); right_blank_pad (exch_rcvd_cab, sizeof(exch_rcvd_cab)); strcpy(line_out, "QSO: "); strcat(line_out, bandf_cab[cr_array[i].iband]); strcat(line_out, " "); strcat(line_out, mode_char[cr_array[i].mode]); strcat(line_out, " "); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[i].date, 4, 5, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 0, 1, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 2, 3, !COPY); strcat(line_out, " "); concat(line_out, cr_array[i].time, 0, 3, !COPY); strcat(line_out, " "); strcat(line_out, station_cab); strcat(line_out, " "); strcat(line_out, rst_sent_cab); strcat(line_out, " "); strcat(line_out, exch_sent_cab); strcat(line_out, " "); strcat(line_out, call_cab); strcat(line_out, " "); strcat(line_out, rst_rcvd_cab); strcat(line_out, " "); strcat(line_out, exch_rcvd_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].tx); fprintf(fp,"%s\n",line_out); } break; case FD : for(i=1; i<=icall_count; i++) if(strcmp(cr_array[i].call, "NOQSO")) { concat(rst_sent_cab, cr_array[i].sent, 0, 1, COPY); right_blank_pad (rst_sent_cab, sizeof(rst_sent_cab)); concat(exch_sent_cab, cr_array[i].sent, 2, strlen(cr_array[i].sent)-1, COPY); right_blank_pad (exch_sent_cab, sizeof(exch_sent_cab)); strcpy(call_cab, cr_array[i].call); right_blank_pad (call_cab, sizeof(call_cab)); strcpy(rst_rcvd_cab, cr_array[i].rec_num); right_blank_pad (rst_rcvd_cab, sizeof(rst_rcvd_cab)); strcpy(exch_rcvd_cab, cr_array[i].rec_county); right_blank_pad (exch_rcvd_cab, sizeof(exch_rcvd_cab)); strcpy(line_out, "QSO: "); strcat(line_out, bandf_cab[cr_array[i].iband]); strcat(line_out, " "); strcat(line_out, mode_char[cr_array[i].mode]); strcat(line_out, " "); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[i].date, 4, 5, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 0, 1, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 2, 3, !COPY); strcat(line_out, " "); concat(line_out, cr_array[i].time, 0, 3, !COPY); strcat(line_out, " "); strcat(line_out, station_cab); strcat(line_out, " "); strcat(line_out, rst_sent_cab); strcat(line_out, " "); strcat(line_out, exch_sent_cab); strcat(line_out, " "); strcat(line_out, call_cab); strcat(line_out, " "); strcat(line_out, rst_rcvd_cab); strcat(line_out, " "); strcat(line_out, exch_rcvd_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].tx); fprintf(fp,"%s\n",line_out); } break; case CQP : break; case SS : for(i=1; i<=icall_count; i++) if(strcmp(cr_array[i].call, "NOQSO")) { concat(rst_sent_cab, cr_array[i].sent, 1, 2, COPY); concat(exch_sent_cab, cr_array[i].sent, 3, strlen(cr_array[i].sent)-1, COPY); right_blank_pad (exch_sent_cab, sizeof(exch_sent_cab)); exch_sent_cab[3] = '\0'; strcpy(call_cab, cr_array[i].call); right_blank_pad (call_cab, sizeof(call_cab)); call_cab[10] = '\0'; strcpy(num_rcvd_cab, cr_array[i].rec_num); left_blank_pad (num_rcvd_cab, sizeof(num_rcvd_cab)); strcpy(ck_rcvd_cab, cr_array[i].prefix); strcpy(rst_rcvd_cab, cr_array[i].rec_county); right_blank_pad (rst_rcvd_cab, sizeof(rst_rcvd_cab)); strcpy(line_out, "QSO: "); strcat(line_out, bandf_cab[cr_array[i].iband]); strcat(line_out, " "); strcat(line_out, mode_char[cr_array[i].mode]); strcat(line_out, " "); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[i].date, 4, 5, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 0, 1, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 2, 3, !COPY); strcat(line_out, " "); concat(line_out, cr_array[i].time, 0, 3, !COPY); strcat(line_out, " "); strcat(line_out, station_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].qso); strcat(line_out, " "); concat(line_out, cr_array[i].sent, 0, 0, !COPY); strcat(line_out, " "); strcat(line_out, rst_sent_cab); strcat(line_out, " "); strcat(line_out, exch_sent_cab); strcat(line_out, " "); strcat(line_out, call_cab); strcat(line_out, " "); strcat(line_out, num_rcvd_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].tx); strcat(line_out, " "); strcat(line_out, ck_rcvd_cab); strcat(line_out, " "); strcat(line_out, rst_rcvd_cab); fprintf(fp,"%s\n",line_out); } break; case A160 : for(i=1; i<=icall_count; i++) if(strcmp(cr_array[i].call, "NOQSO")) { concat(rst_sent_cab, cr_array[i].sent, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_sent_cab, sizeof(rst_sent_cab)); concat(exch_sent_cab, cr_array[i].sent, 3-cr_array[i].mode, strlen(cr_array[i].sent)-1, COPY); right_blank_pad (exch_sent_cab, sizeof(exch_sent_cab)); strcpy(call_cab, cr_array[i].call); right_blank_pad (call_cab, sizeof(call_cab)); concat(rst_rcvd_cab, cr_array[i].rec_num, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_rcvd_cab, sizeof(rst_rcvd_cab)); if(isdigit(cr_array[i].rec_num[3-cr_array[i].mode])) { lrc = strlen(cr_array[i].rec_county); lrc = lrc<7 ? lrc : 6; concat(exch_rcvd_cab, cr_array[i].rec_county, 0, lrc-1, COPY); } else concat(exch_rcvd_cab, cr_array[i].rec_num, 3-cr_array[i].mode, strlen(cr_array[i].rec_num)-1, COPY); right_blank_pad (exch_rcvd_cab, sizeof(exch_rcvd_cab)); strcpy(line_out, "QSO: "); strcat(line_out, bandf_cab[cr_array[i].iband]); strcat(line_out, " "); strcat(line_out, mode_char[cr_array[i].mode]); strcat(line_out, " "); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[i].date, 4, 5, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 0, 1, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 2, 3, !COPY); strcat(line_out, " "); concat(line_out, cr_array[i].time, 0, 3, !COPY); strcat(line_out, " "); strcat(line_out, station_cab); strcat(line_out, " "); strcat(line_out, rst_sent_cab); strcat(line_out, " "); strcat(line_out, exch_sent_cab); strcat(line_out, " "); strcat(line_out, call_cab); strcat(line_out, " "); strcat(line_out, rst_rcvd_cab); strcat(line_out, " "); strcat(line_out, exch_rcvd_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].tx); fprintf(fp,"%s\n",line_out); } break; default : for(i=1; i<=icall_count; i++) if(strcmp(cr_array[i].call, "NOQSO")) { concat(rst_sent_cab, cr_array[i].sent, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_sent_cab, sizeof(rst_sent_cab)); concat(exch_sent_cab, cr_array[i].sent, 3-cr_array[i].mode, strlen(cr_array[i].sent)-1, COPY); right_blank_pad (exch_sent_cab, sizeof(exch_sent_cab)); strcpy(call_cab, cr_array[i].call); right_blank_pad (call_cab, sizeof(call_cab)); concat(rst_rcvd_cab, cr_array[i].rec_num, 0, 2-cr_array[i].mode, COPY); right_blank_pad (rst_rcvd_cab, sizeof(rst_rcvd_cab)); concat(exch_rcvd_cab, cr_array[i].rec_num, 3-cr_array[i].mode, strlen(cr_array[i].rec_num)-1, COPY); right_blank_pad (exch_rcvd_cab, sizeof(exch_rcvd_cab)); strcpy(line_out, "QSO: "); strcat(line_out, bandf_cab[cr_array[i].iband]); strcat(line_out, " "); strcat(line_out, mode_char[cr_array[i].mode]); strcat(line_out, " "); concat(line_out, full_year, 0, 1, !COPY); concat(line_out, cr_array[i].date, 4, 5, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 0, 1, !COPY); strcat(line_out, "-"); concat(line_out, cr_array[i].date, 2, 3, !COPY); strcat(line_out, " "); concat(line_out, cr_array[i].time, 0, 3, !COPY); strcat(line_out, " "); strcat(line_out, station_cab); strcat(line_out, " "); strcat(line_out, rst_sent_cab); strcat(line_out, " "); strcat(line_out, exch_sent_cab); strcat(line_out, " "); strcat(line_out, call_cab); strcat(line_out, " "); strcat(line_out, rst_rcvd_cab); strcat(line_out, " "); strcat(line_out, exch_rcvd_cab); strcat(line_out, " "); strcat(line_out, cr_array[i].tx); fprintf(fp,"%s\n",line_out); } } fprintf(fp,"END-OF-LOG:\n"); fflush(fp); fsync(fileno(fp)); fclose(fp); }