static gint iend[13]; static void fill_iend_array(void); static void fill_cr_array_all(const gchar *contest_line, gint qnum); static void make_contest_line(gchar *contest_line, gint qnum); static void read_ini_file(void); static void read_contest_file(void); static void read_ded_file(void); static void read_locus_file(void); static void read_country_file(void); static void read_call_library_file(void); static void read_help_file(void); static void write_empty_file(void); static gint write_backup_file(const gchar *filnam); static void write_ini_file(void); static void write_call_record(gint send_record); static void write_ded_file(gint qnum, const gchar *cmd, gint send_record); static void rewrite_contest_file(void); static void write_call_library_file(void); static gint process_tmp_file(const gchar *filnam); static char* chomp(char *s); static void fill_iend_array(void) { iend[0] = sizeof(cr_array[0].qso)-2; iend[1] = iend[0]+1; iend[2] = iend[1]+1; iend[3] = iend[2]+sizeof(cr_array[0].on_off)-1; iend[4] = iend[3]+sizeof(cr_array[0].date)-1; iend[5] = iend[4]+sizeof(cr_array[0].time)-1; iend[6] = iend[5]+sizeof(cr_array[0].call)-1; iend[7] = iend[6]+sizeof(cr_array[0].sent)-1; iend[8] = iend[7]+sizeof(cr_array[0].rec_num)-1; iend[9] = iend[8]+sizeof(cr_array[0].rec_county)-1; iend[10] = iend[9]+sizeof(cr_array[0].points)-1; iend[11] = iend[10]+sizeof(cr_array[0].tx)-1; iend[12] = iend[11]+sizeof(cr_array[0].prefix)-1; } static void fill_cr_array_all(const gchar *contest_line, gint qnum) { gchar mbn[2], field_hold[20]; concat(cr_array[qnum].qso, contest_line, 0, iend[0], COPY); concat(mbn, contest_line, iend[0]+1, iend[1], COPY); cr_array[qnum].iband = atoi(mbn); concat(mbn, contest_line, iend[1]+1, iend[2], COPY); cr_array[qnum].mode = atoi(mbn); concat(cr_array[qnum].on_off, contest_line, iend[2]+1, iend[3], COPY); concat(cr_array[qnum].date, contest_line, iend[3]+1, iend[4], COPY); concat(cr_array[qnum].time, contest_line, iend[4]+1, iend[5], COPY); concat(field_hold, contest_line, iend[5]+1, iend[6], COPY); right_blank_unpad (field_hold); strcpy(cr_array[qnum].call, field_hold); concat(field_hold, contest_line, iend[6]+1, iend[7], COPY); right_blank_unpad (field_hold); strcpy(cr_array[qnum].sent, field_hold); concat(field_hold, contest_line, iend[7]+1, iend[8], COPY); right_blank_unpad (field_hold); strcpy(cr_array[qnum].rec_num, field_hold); concat(field_hold, contest_line, iend[8]+1, iend[9], COPY); right_blank_unpad (field_hold); strcpy(cr_array[qnum].rec_county, field_hold); concat(cr_array[qnum].points, contest_line, iend[9]+1, iend[10], COPY); concat(cr_array[qnum].tx, contest_line, iend[10]+1, iend[11], COPY); concat(field_hold, contest_line, iend[11]+1, iend[12], COPY); right_blank_unpad (field_hold); strcpy(cr_array[qnum].prefix, field_hold); } static void make_contest_line(gchar *contest_line, gint qnum) { gchar mbn[2], field_hold[20]; strcpy(contest_line, cr_array[qnum].qso); int_to_char (cr_array[qnum].iband, mbn); strcat(contest_line, mbn); int_to_char (cr_array[qnum].mode, mbn); strcat(contest_line, mbn); strcat(contest_line, cr_array[qnum].on_off); strcat(contest_line, cr_array[qnum].date); strcat(contest_line, cr_array[qnum].time); strcpy(field_hold, cr_array[qnum].call); right_blank_pad(field_hold, sizeof(cr_array[qnum].call)); strcat(contest_line, field_hold); strcpy(field_hold, cr_array[qnum].sent); right_blank_pad(field_hold, sizeof(cr_array[qnum].sent)); strcat(contest_line, field_hold); strcpy(field_hold, cr_array[qnum].rec_num); right_blank_pad(field_hold, sizeof(cr_array[qnum].rec_num)); strcat(contest_line, field_hold); strcpy(field_hold, cr_array[qnum].rec_county); right_blank_pad(field_hold, sizeof(cr_array[qnum].rec_county)); strcat(contest_line, field_hold); strcat(contest_line, cr_array[qnum].points); strcat(contest_line, cr_array[qnum].tx); strcpy(field_hold, cr_array[qnum].prefix); right_blank_pad(field_hold, sizeof(cr_array[qnum].prefix)); sprintf(contest_line,"%s%s\n",contest_line,field_hold); } static void read_ini_file(void) { FILE *fp; gchar filnam[13], msg[49], contest_ini_line[76]; gint i, socil; char *token; guint answer; snprintf(filnam,sizeof(filnam), "%s.INI", contest_file_base); fp = fopen(filnam, "r"); if(fp==NULL) { snprintf(msg,sizeof(msg),"%s does not exist. Use default? (Y/N)"); play_bells (DUPE_SOUND); answer = boxed_message (msg, 0, LT_GRAY); if(toupper_ui(answer)=='Y') fp = fopen("DEFAULT.INI","r"); if(fp==NULL) return; } socil = sizeof(contest_ini_line); for(i=0; i")) strcpy(set_screen_choices[1], dupe_bracket[0]); for(i=0; i"); for(i=0; i59) { strcpy(ssc_hold, set_screen_choices[0]); concat(set_screen_choices[0], ssc_hold, 0, 1, COPY); concat(set_screen_choices[0], ssc_hold, 3, 4, !COPY); write_ini_file (); } } strcpy(cr_array[icall_count+1].sent, set_screen_choices[0]); } } static void read_ded_file(void) { FILE *fp; gint socl; gchar filnam[13], contest_line[76]; ded_num = 0; sprintf(filnam,"%s.DED", filnam); fp = fopen(filnam, "r"); if(fp==NULL) return; socl = sizeof(contest_line); while(fgets(contest_line, socl, fp) != NULL) { ded_num++; strcpy(ded_array[ded_num], contest_line); } fclose(fp); } static void read_locus_file(void) { FILE *fp; gint i, j, icn, soli; gchar filnam[13], msg[49], clat[5], clong[6]; gchar line_in[80]; gint n=0; gint col_num[3][8] = { {0, 14, 16, 19, 21, 24, 26, 30}, /* COUNTY.CQP */ {0, 20, 22, 24, 26, 29, 31, 35}, /* SECTION.LST */ {0, 15, 17, 18, 20, 23, 25, 29}}; /* STATE.LST */ for(i=0; i-1) concat(filnam_hold, filnam, 0, idot-1, COPY); else strcpy(filnam_hold, filnam); snprintf(msg, sizeof(msg), "cp %s %s.BAK",filnam,filnam_hold); icopy = system(msg); return icopy; } static void write_ini_file(void) { FILE *fp; gchar filnam[13], msg[49], contest_ini_line[76]; gint i; snprintf(filnam, sizeof(filnam), "%s.INIT", contest_file_base); fp = fopen(filnam, "w"); if(fp==NULL) { snprintf(msg, sizeof(msg), "Error writing %s", filnam); rw_error_box (main_drawing_area, msg); return; } for(i=0; i-1 && send_record) send_to_server (contest_line, "W"); } static void write_ded_file(gint qnum, const gchar *cmd, gint send_record) { FILE *fp; gchar filnam[13], msg[49], contest_line[76]; snprintf(filnam, sizeof(filnam), "%s.DED", contest_file_base); fp = fopen(filnam, "a"); if(fp==NULL) { snprintf(msg, sizeof(msg), "Error writing %s",filnam); rw_error_box (main_drawing_area, msg); return; } strcpy(contest_line, cmd); fprintf(fp,"%s\n",contest_line); make_contest_line (contest_line, qnum); fprintf(fp, "%s\n", contest_line); fflush(fp); fsync(fileno(fp)); fclose(fp); if(sockfd>-1 && send_record) send_to_server (contest_line, cmd); } static void rewrite_contest_file(void) { FILE *fp; gchar filnam[13], msg[49], contest_line[76]; gint i; strcpy(filnam, contest_file_name); fp = fopen(filnam, "w"); if(fp==NULL) { snprintf(msg, sizeof(msg), "Error writing %s", filnam); rw_error_box (main_drawing_area, msg); return; } for(i=1; i<=icall_count; i++) { make_contest_line (contest_line, i); fputs(contest_line, fp); } fflush(fp); fsync(fileno(fp)); fclose(fp); } static void write_call_library_file(void) { FILE *fp; gchar msg[49], library_line[65]; gint i; fp = fopen(clib.filnam, "w"); if(fp==NULL) { snprintf(msg, sizeof(msg),"Error writing %s",clib.filnam); rw_error_box (main_drawing_area, msg); return; } for(i=0; i-1) ami_running = 0; fclose(pfp); } return ami_running; } static char* chomp(char *s) { char *p; p = strchr(s, '\n'); if (p != NULL) { *p = '\0'; p--; if (*p == '\r') *p = '\0'; } }