f_status_t fss_basic_read_process_total(fll_program_data_t * const main, fss_basic_read_data_t * const data, bool names[]) {
f_array_length_t total = 0;
+ f_array_length_t i = 0;
- for (f_array_length_t i = 0; i < data->objects.used; ++i) {
+ if (data->option & fss_basic_read_data_option_select_d) {
+ if (!data->select) {
+ for (; i < data->contents.used; ++i) {
- if (!names[i]) continue;
+ if (!names[i]) continue;
- if (!((++main->signal_check) % fss_basic_read_signal_check_d)) {
- if (fll_program_standard_signal_received(main)) {
- fss_basic_read_print_signal_received(main);
+ if (!((++main->signal_check) % fss_basic_read_signal_check_d)) {
+ if (fll_program_standard_signal_received(main)) {
+ fss_basic_read_print_signal_received(main);
- return F_status_set_error(F_interrupt);
- }
+ return F_status_set_error(F_interrupt);
+ }
- main->signal_check = 0;
+ main->signal_check = 0;
+ }
+
+ if ((data->option & fss_basic_read_data_option_empty_d) || data->contents.array[i].used && data->contents.array[i].array[0].start <= data->contents.array[i].array[0].stop) {
+ ++total;
+ }
+ } // for
}
+ }
+ else {
+ for (; i < data->objects.used; ++i) {
- if (!(data->option & fss_basic_read_data_option_object_d) && data->option & fss_basic_read_data_option_content_d) {
- if (!(data->contents.array[i].used || (data->option & fss_basic_read_data_option_empty_d))) {
- continue;
+ if (!names[i]) continue;
+
+ if (!((++main->signal_check) % fss_basic_read_signal_check_d)) {
+ if (fll_program_standard_signal_received(main)) {
+ fss_basic_read_print_signal_received(main);
+
+ return F_status_set_error(F_interrupt);
+ }
+
+ main->signal_check = 0;
}
- }
- ++total;
- } // for
+ if (!(data->option & fss_basic_read_data_option_object_d) && data->option & fss_basic_read_data_option_content_d) {
+ if (!(data->contents.array[i].used || (data->option & fss_basic_read_data_option_empty_d))) {
+ continue;
+ }
+ }
+
+ ++total;
+ } // for
+ }
flockfile(main->output.to.stream);