void display_close(time_t now) { switch(DisplayMode) { case DisplayReport: report_close(); break; case DisplayTXT: txt_close(); break; case DisplayXML: xml_close(); break; case DisplayJSON: json_close(); break; case DisplayCSV: csv_close(now); break; case DisplayCurses: #ifdef IPINFO if (ipinfo_no >= 0) asn_close(); #endif mtr_curses_close(); break; case DisplaySplit: split_close(); break; case DisplayGTK: gtk_close(); break; } }
void display_close(void) { switch(DisplayMode) { case DisplayReport: report_close(); break; case DisplayTXT: txt_close(); break; case DisplayXML: xml_close(); break; case DisplayCSV: csv_close(); break; case DisplayCurses: mtr_curses_close(); break; case DisplaySplit: /* BL */ split_close(); break; case DisplayGTK: gtk_close(); break; } }
split_info_t* split_create(char *fname, u64 split_size, u64 total_size, bool overwrite) { split_info_t *s = split_new(); int ret = split_create_1(s, fname, split_size, total_size, overwrite); if (ret) { split_close(s); s = NULL; } return s; }
split_info_t* split_open(char *fname) { split_info_t *s = split_new(); int ret = split_open_1(s, fname); if (ret) { split_close(s); s = NULL; } return s; }
int split_open(split_info_t *s, char *fname) { int i; u64 size = 0; u64 total_size = 0; u64 split_size = 0; int fd; split_init(s, fname); for (i=0; i<s->max_split; i++) { fd = split_open_file(s, i); if (fd<0) { if (i==0) goto err; break; } // check previous size - all splits except last must be same size if (i > 0 && size != split_size) { fprintf(stderr, "split %d: invalid size "FMT_lld"", i, size); goto err; } // get size //fseeko(f, 0, SEEK_END); //size = ftello(f); size = lseek(fd, 0, SEEK_END); // check sector alignment if (size % 512) { fprintf(stderr, "split %d: size ("FMT_lld") not sector (512) aligned!", i, size); } // first sets split size if (i==0) { split_size = size; } total_size += size; } split_set_size(s, split_size, total_size); return 0; err: split_close(s); return -1; }