]> Kevux Git Server - fll/commitdiff
Update: Finish fixing iki_read for runtime tests.
authorKevin Day <Kevin@kevux.org>
Tue, 7 Jan 2025 01:38:49 +0000 (19:38 -0600)
committerKevin Day <Kevin@kevux.org>
Tue, 7 Jan 2025 01:39:37 +0000 (19:39 -0600)
The iki_read must still print the unmatched variables.

The `iki_read_process_line()` is indeed still valid to have.

The total should still be printed even when there is no data or the start range is out of range.
This ensures that a 0 is printed in these situations.

There may or may not be eki_read fixes needed but runtime tests do not exist for that yet.
A follow up commit shall address this.

level_3/iki_read/c/eki/process.c
level_3/iki_read/c/iki/process.c
level_3/iki_read/c/main/process.c

index 3d66ae3987dae9a23781fef891c3784c9c0476b1..a08eb1c1857d98f0c1ce7aa44cc827bb851acac8 100644 (file)
@@ -560,6 +560,11 @@ extern "C" {
             main->callback.print_data(&main->program.output, j);
           }
         }
+        else {
+
+          // Unmatched names are printed as-is (the entire variable).
+          f_print_dynamic_partial(main->cache.buffer, data->variable.array[j], main->program.output.to);
+        }
       }
       else if (main->setting.flag & iki_read_main_flag_at_d) {
         if (at++ == main->setting.at) {
@@ -610,7 +615,7 @@ extern "C" {
 
       f_range_t range = macro_f_range_t_initialize_2(main->cache.buffer.used);
 
-      iki_read_process_line(main, &range); // @fixme is this valid here anymore?
+      iki_read_process_line(main, &range);
 
       if (main->setting.state.status == F_true || main->setting.state.status == F_data_not) {
         if (main->setting.state.status == F_data_not || range.start > main->cache.buffer.used) {
index 429278b18f1818510d446d1307a4f1a3ec96d684..489ca45552f06db7e40ff37e6ff6729f81cf2688 100644 (file)
@@ -511,6 +511,11 @@ extern "C" {
             main->callback.print_data(&main->program.output, j);
           }
         }
+        else {
+
+          // Unmatched names are printed as-is (the entire variable).
+          f_print_dynamic_partial(main->cache.buffer, data->variable.array[j], main->program.output.to);
+        }
       }
       else if (main->setting.flag & iki_read_main_flag_at_d) {
         if (at++ == main->setting.at) {
@@ -561,7 +566,7 @@ extern "C" {
 
       f_range_t range = macro_f_range_t_initialize_2(main->cache.buffer.used);
 
-      iki_read_process_line(main, &range); // @fixme is this valid here anymore?
+      iki_read_process_line(main, &range);
 
       if (main->setting.state.status == F_true || main->setting.state.status == F_data_not) {
         if (main->setting.state.status == F_data_not || range.start > main->cache.buffer.used) {
index c9f87a602d48c979ce6865e0e9687bfc893444f9..d6bac3192489a131fd61765cfac5b333aab35314 100644 (file)
@@ -14,12 +14,6 @@ extern "C" {
     if (main->setting.flag & iki_read_main_flag_whole_d) {
       iki_read_process_line(main, &buffer_range);
 
-      if (main->setting.state.status == F_data_not || main->setting.state.status == F_true && buffer_range.start > main->cache.buffer.used) {
-        main->setting.state.status = F_data_not;
-
-        return;
-      }
-
       if (main->setting.flag & iki_read_main_flag_total_d) {
         if (main->callback.process_buffer_total) {
           main->callback.process_buffer_total(main);
@@ -32,6 +26,12 @@ extern "C" {
         return;
       }
 
+      if (main->setting.state.status == F_data_not || main->setting.state.status == F_true && buffer_range.start > main->cache.buffer.used) {
+        main->setting.state.status = F_data_not;
+
+        return;
+      }
+
       if (main->callback.process_buffer_ranges_whole) {
         main->callback.process_buffer_ranges_whole(main, &buffer_range);
       }