]> Kevux Git Server - fll/commitdiff
Progress: featuerless make.
authorKevin Day <thekevinday@gmail.com>
Sun, 12 Jul 2020 18:35:09 +0000 (13:35 -0500)
committerKevin Day <thekevinday@gmail.com>
Sun, 12 Jul 2020 18:35:09 +0000 (13:35 -0500)
Enable detection of quotes when processing extended content within the lists inside of the fakefile (except for the settings list).

fss-quoted.h must come before fss-named.h.
Be sure to include level_0/type_array.h.

Fix mistake in f_macro_uintX_tss_new() macros where the f_macro_memory_structures_new() has the wrong arguments.

Use fll_fss_snatch_map_apart() instead of fll_fss_snatch_map_mash_apart() when expanding iki variables.
The arguments need to be separated so they can potentially be passed to an exec() equivalent call as individual arguments.
Any operation that expects a single argument can still implode these strings before executing.

level_0/f_fss/c/fss-named.h
level_0/f_fss/c/fss.h
level_0/f_type/c/type_array.h
level_3/fake/c/fake.h
level_3/fake/c/private-make.c
level_3/fake/c/private-make.h
level_3/fake/data/build/fakefile

index b8a81a5631de0de6b31d982875d63f04810abb47..2dac9dc7a12b41b4f283c71d3dc52622517c1c77 100644 (file)
@@ -17,14 +17,15 @@ extern "C" {
 #endif
 
 /**
- * This holds a named set of fss objects and contents.
+ * This holds a named set of fss objects, contents, and quotedss.
  *
- * The objects and contents should each be of the same used and size.
+ * The objects, contents, and quotedss should each be of the same used and size.
  * Any deviation to this would require implementing custom equivelents to the standard management macros.
  *
  * object: The name representing this set.
  * objects: The array of objects.
  * contents: The array of contents.
+ * quotedss: The array of quoted for each content.
  */
 #ifndef _di_f_fss_named_
   typedef struct {
@@ -32,51 +33,70 @@ extern "C" {
 
     f_fss_objects objects;
     f_fss_contents contents;
+    f_fss_quotedss quotedss;
   } f_fss_named;
 
-  #define f_fss_named_initialize { f_fss_object_initialize, f_fss_objects_initialize, f_fss_contents_initialize }
+  #define f_fss_named_initialize { f_fss_object_initialize, f_fss_objects_initialize, f_fss_contents_initialize, f_fss_quotedss_initialize }
 
   #define f_macro_fss_named_clear(set) \
     f_macro_fss_object_clear(set.object) \
     f_macro_fss_objects_clear(set.objects) \
-    f_macro_fss_contents_clear(set.contents)
+    f_macro_fss_contents_clear(set.contents) \
+    f_macro_fss_quotedss_clear(set.quotedss)
 
   #define f_macro_fss_named_new(status, set, length) \
     f_macro_fss_objects_new(status, set.objects, length) \
     if (F_status_is_fine(status)) { \
       f_macro_fss_contents_new(status, set.contents, length) \
+    } \
+    if (F_status_is_fine(status)) { \
+      f_macro_fss_quotedss_new(status, set.quotedss, length) \
     }
 
   #define f_macro_fss_named_delete(status, set) \
     f_macro_fss_objects_delete(status, set.objects) \
     if (F_status_is_fine(status)) { \
       f_macro_fss_contents_delete(status, set.contents) \
+    } \
+    if (F_status_is_fine(status)) { \
+      f_macro_fss_quotedss_delete(status, set.quotedss) \
     }
 
   #define f_macro_fss_named_destroy(status, set) \
     f_macro_fss_objects_destroy(status, set.objects) \
     if (F_status_is_fine(status)) { \
       f_macro_fss_contents_destroy(status, set.contents) \
+    } \
+    if (F_status_is_fine(status)) { \
+      f_macro_fss_quotedss_destroy(status, set.quotedss) \
     }
 
   #define f_macro_fss_named_delete_simple(set) \
     f_macro_fss_objects_delete_simple(set.objects) \
-    f_macro_fss_contents_delete_simple(set.contents)
+    f_macro_fss_contents_delete_simple(set.contents) \
+    f_macro_fss_quotedss_delete_simple(set.quotedss)
 
   #define f_macro_fss_named_destroy_simple(set) \
     f_macro_fss_objects_destroy_simple(set.objects) \
-    f_macro_fss_contents_destroy_simple(set.contents)
+    f_macro_fss_contents_destroy_simple(set.contents) \
+    f_macro_fss_quotedss_destroy_simple(set.quotedss)
 
   #define f_macro_fss_named_resize(status, set, new_length) \
     f_macro_fss_objects_resize(status, set.objects, new_length) \
     if (F_status_is_fine(status)) { \
       f_macro_fss_contents_resize(status, set.contents, new_length) \
+    } \
+    if (F_status_is_fine(status)) { \
+      f_macro_fss_quotedss_resize(status, set.quotedss, new_length) \
     }
 
   #define f_macro_fss_named_adjust(status, set, new_length) \
     f_macro_fss_objects_adjust(status, set.objects, new_length) \
     if (F_status_is_fine(status)) { \
       f_macro_fss_contents_adjust(status, set.contents, new_length) \
+    } \
+    if (F_status_is_fine(status)) { \
+      f_macro_fss_quotedss_adjust(status, set.quotedss, new_length) \
     }
 #endif // _di_f_fss_named_
 
index a7d39c6a77f0fe2cb35b3ac9e774cbef97a62efa..a321930867f31ac159b945c40d29e33be2b92a84 100644 (file)
@@ -25,9 +25,9 @@
 
 // fll-0 fss includes
 #include <level_0/fss-common.h>
+#include <level_0/fss-quoted.h>
 #include <level_0/fss-named.h>
 #include <level_0/fss-nest.h>
-#include <level_0/fss-quoted.h>
 #include <level_0/fss-set.h>
 
 #ifdef __cplusplus
index c44ab5552dfa801ed9af91e300d0d39a144e1d4d..ae93bc012f535bc3b13d3374dba230f45da1d2d3 100644 (file)
@@ -70,7 +70,7 @@ extern "C" {
 
   #define f_macro_array_lengthss_clear(lengths) f_macro_memory_structures_clear(lengths)
 
-  #define f_macro_array_lengthss_new(status, lengths, length) f_macro_memory_structures_new(status, lengths, f_array_length, f_array_lengths, length)
+  #define f_macro_array_lengthss_new(status, lengths, length) f_macro_memory_structures_new(status, lengths, f_array_length, length)
 
   #define f_macro_array_lengthss_delete(status, lengths)  f_macro_memory_structures_delete(status, lengths, f_array_length, f_array_lengths)
   #define f_macro_array_lengthss_destroy(status, lengths) f_macro_memory_structures_destroy(status, lengths, f_array_length, f_array_lengths)
@@ -194,7 +194,7 @@ extern "C" {
 
   #define f_macro_int8_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_int8_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int8_t, f_int8_ts, length)
+  #define f_macro_int8_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int8_t, length)
 
   #define f_macro_int8_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, int8_t, f_int8_ts)
   #define f_macro_int8_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, int8_t, f_int8_ts)
@@ -256,7 +256,7 @@ extern "C" {
 
   #define f_macro_uint8_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_uint8_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint8_t, f_uint8_ts, length)
+  #define f_macro_uint8_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint8_t, length)
 
   #define f_macro_uint8_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, uint8_t, f_uint8_ts)
   #define f_macro_uint8_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, uint8_t, f_uint8_ts)
@@ -318,7 +318,7 @@ extern "C" {
 
   #define f_macro_int16_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_int16_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int16_t, f_int16_ts, length)
+  #define f_macro_int16_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int16_t, length)
 
   #define f_macro_int16_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, int16_t, f_int16_ts)
   #define f_macro_int16_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, int16_t, f_int16_ts)
@@ -380,7 +380,7 @@ extern "C" {
 
   #define f_macro_uint16_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_uint16_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint16_t, f_uint16_ts, length)
+  #define f_macro_uint16_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint16_t, length)
 
   #define f_macro_uint16_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, uint16_t, f_uint16_ts)
   #define f_macro_uint16_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, uint16_t, f_uint16_ts)
@@ -442,7 +442,7 @@ extern "C" {
 
   #define f_macro_int32_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_int32_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int32_t, f_int32_ts, length)
+  #define f_macro_int32_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int32_t, length)
 
   #define f_macro_int32_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, int32_t, f_int32_ts)
   #define f_macro_int32_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, int32_t, f_int32_ts)
@@ -504,7 +504,7 @@ extern "C" {
 
   #define f_macro_uint32_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_uint32_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint32_t, f_uint32_ts, length)
+  #define f_macro_uint32_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint32_t, length)
 
   #define f_macro_uint32_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, uint32_t, f_uint32_ts)
   #define f_macro_uint32_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, uint32_t, f_uint32_ts)
@@ -566,7 +566,7 @@ extern "C" {
 
   #define f_macro_int64_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_int64_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int64_t, f_int64_ts, length)
+  #define f_macro_int64_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int64_t, length)
 
   #define f_macro_int64_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, int64_t, f_int64_ts)
   #define f_macro_int64_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, int64_t, f_int64_ts)
@@ -628,7 +628,7 @@ extern "C" {
 
   #define f_macro_uint64_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-  #define f_macro_uint64_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint64_t, f_uint64_ts, length)
+  #define f_macro_uint64_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint64_t, length)
 
   #define f_macro_uint64_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, uint64_t, f_uint64_ts)
   #define f_macro_uint64_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, uint64_t, f_uint64_ts)
@@ -691,7 +691,7 @@ extern "C" {
 
     #define f_macro_int128_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-    #define f_macro_int128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, __int128_t, f_int128_ts, length)
+    #define f_macro_int128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, __int128_t, length)
 
     #define f_macro_int128_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, __int128_t, f_int128_ts)
     #define f_macro_int128_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, __int128_t, f_int128_ts)
@@ -753,7 +753,7 @@ extern "C" {
 
     #define f_macro_uint128_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-    #define f_macro_uint128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, __uint128_t, f_uint128_ts, length)
+    #define f_macro_uint128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, __uint128_t, length)
 
     #define f_macro_uint128_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, __uint128_t, f_uint128_ts)
     #define f_macro_uint128_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, __uint128_t, f_uint128_ts)
@@ -815,7 +815,7 @@ extern "C" {
 
     #define f_macro_int128_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-    #define f_macro_int128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int64_t, f_int128_ts, length)
+    #define f_macro_int128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, int64_t, length)
 
     #define f_macro_int128_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, int64_t, f_int128_ts)
     #define f_macro_int128_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, int64_t, f_int128_ts)
@@ -877,7 +877,7 @@ extern "C" {
 
     #define f_macro_uint128_tss_clear(numbers) f_macro_memory_structures_clear(numbers)
 
-    #define f_macro_uint128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint64_t, f_uint128_ts, length)
+    #define f_macro_uint128_tss_new(status, numbers, length) f_macro_memory_structures_new(status, numbers, uint64_t, length)
 
     #define f_macro_uint128_tss_delete(status, numbers)  f_macro_memory_structures_delete(status, numbers, uint64_t, f_uint128_ts)
     #define f_macro_uint128_tss_destroy(status, numbers) f_macro_memory_structures_destroy(status, numbers, uint64_t, f_uint128_ts)
index 3ee81921e80b05b74786b419891d78d4caf3804b..aa89cee4c41f25b9ad7e6bedaf52281478af8482 100644 (file)
@@ -51,6 +51,7 @@
 // fll-0 includes
 #include <level_0/type.h>
 #include <level_0/status.h>
+#include <level_0/type_array.h>
 #include <level_0/memory.h>
 #include <level_0/string.h>
 #include <level_0/utf.h>
index fc1649714a404e205da21dc1deeb04ba389daf79..9d228b29809ae89a4c5c2147ba9af16c4e0c8d58 100644 (file)
@@ -76,27 +76,18 @@ extern "C" {
               continue;
             }
 
-            f_fss_quotedss quoted_contents = f_fss_quotedss_initialize;
-
             content_range = list_contents.array[i].array[0];
 
-            *status = fll_fss_extended_read(&data_make->buffer, &content_range, &settings.objects, &settings.contents, 0, &quoted_contents);
+            *status = fll_fss_extended_read(&data_make->buffer, &content_range, &settings.objects, &settings.contents, 0, 0);
             if (F_status_is_error(*status)) {
               fake_print_error_fss(data.context, data.verbosity, *status, "fll_fss_extended_read", data.file_data_build_fakefile.string, content_range, F_true);
 
-              f_macro_fss_quotedss_delete_simple(quoted_contents);
               f_macro_fss_set_delete_simple(settings);
               f_macro_fss_objects_delete_simple(list_objects);
               f_macro_fss_contents_delete_simple(list_contents);
               return;
             }
 
-            if (quoted_contents.used) {
-              // @todo
-            }
-
-            f_macro_fss_quotedss_delete_simple(quoted_contents);
-
             missing_settings = F_false;
             continue;
           }
@@ -114,7 +105,7 @@ extern "C" {
 
           content_range = list_contents.array[i].array[0];
 
-          *status = fll_fss_extended_read(&data_make->buffer, &content_range, &data_make->fakefile.array[data_make->fakefile.used].objects, &data_make->fakefile.array[data_make->fakefile.used].contents, 0, 0);
+          *status = fll_fss_extended_read(&data_make->buffer, &content_range, &data_make->fakefile.array[data_make->fakefile.used].objects, &data_make->fakefile.array[data_make->fakefile.used].contents, 0, &data_make->fakefile.array[data_make->fakefile.used].quotedss);
           if (F_status_is_error(*status)) {
             fake_print_error_fss(data.context, data.verbosity, *status, "fll_fss_extended_read", data.file_data_build_fakefile.string, content_range, F_true);
 
@@ -205,9 +196,9 @@ extern "C" {
           &data_make->setting_make.parameter,
         };
 
-        *status = fll_fss_snatch_map_mash_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, " ", 1, settings_value, 0);
+        *status = fll_fss_snatch_map_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, settings_value, 0);
         if (F_status_is_error(*status)) {
-          fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fll_fss_snatch_map_mash_apart", F_true);
+          fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fll_fss_snatch_map_apart", F_true);
 
           f_macro_fss_set_delete_simple(settings);
           return;
@@ -246,7 +237,7 @@ extern "C" {
 #endif // _di_fake_make_operate_
 
 #ifndef _di_fake_make_operation_expand_
-  void fake_make_operation_expand(const fake_data data, const f_string_range section_name, const f_array_length operation, const f_string_static operation_name, const f_fss_content content, fake_make_data *data_make, f_string_dynamics *arguments, f_status *status) {
+  void fake_make_operation_expand(const fake_data data, const f_string_range section_name, const f_array_length operation, const f_string_static operation_name, const f_fss_content content, const f_fss_quoteds quoteds, fake_make_data *data_make, f_string_dynamics *arguments, f_status *status) {
     if (F_status_is_error(*status)) return;
     if (content.used == 0) return;
 
@@ -294,15 +285,20 @@ extern "C" {
     f_array_length k = 0;
     f_array_length l = 0;
 
+    f_array_length used_arguments = 0;
+
     f_string_length previous = 0;
 
     for (; i < content.used; i++) {
+
       if (content.array[i].start > content.array[i].stop) {
         continue;
       }
 
       range = content.array[i];
 
+      used_arguments = arguments->used;
+
       *status = fl_iki_read(&data_make->buffer, &range, &iki_variable, &iki_vocabulary, &iki_content);
       if (F_status_is_error(*status)) {
         fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_iki_read", F_true);
@@ -379,30 +375,61 @@ extern "C" {
             break;
           }
 
-          // @todo: consider designing a way to designate appending map as a single value string or multiple separate strings.
-          //        this could potential be done by considering single vs double quotes.
-          //        then arguments->used would have to be incremented based on this number.
           if (map_multis->used) {
             for (k = 0; k < map_multis->used; k++) {
               *status = fl_string_dynamic_partial_compare_dynamic(map_multis->array[k].name, data_make->buffer, iki_content.array[j]);
 
               if (*status == F_equal_to) {
                 if (map_multis->array[k].value.used) {
-                  for (l = 0; l < map_multis->array[k].value.used; l++) {
-                    if (l > 0) {
-                      *status = fl_string_append(" ", 1, &arguments->array[arguments->used]);
+                  if (quoteds.array[i]) {
+                    for (l = 0; l < map_multis->array[k].value.used; l++) {
+                      if (l > 0) {
+                        *status = fl_string_append(" ", 1, &arguments->array[arguments->used]);
+                        if (F_status_is_error(*status)) {
+                          fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_append", F_true);
+                          break;
+                        }
+                      }
+
+                      *status = fl_string_dynamic_append_nulless(map_multis->array[k].value.array[l], &arguments->array[arguments->used]);
                       if (F_status_is_error(*status)) {
-                        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_append", F_true);
+                        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_dynamic_append_nulless", F_true);
+                        break;
+                      }
+                    } // for
+                  }
+                  else {
+                    if (arguments->used + map_multis->array[k].value.used > arguments->size) {
+                      if (arguments->used + map_multis->array[k].value.used > F_buffer_too_large) {
+                        *status = F_status_set_error(F_buffer_too_large);
+
+                        fake_print_error(data.context, data.verbosity, F_buffer_too_large, "f_macro_string_dynamics_resize", F_true);
                         break;
                       }
-                    }
 
-                    *status = fl_string_dynamic_append_nulless(map_multis->array[k].value.array[l], &arguments->array[arguments->used]);
-                    if (F_status_is_error(*status)) {
-                      fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_dynamic_append_nulless", F_true);
-                      break;
+                      f_macro_string_dynamics_resize((*status), (*arguments), arguments->used + map_multis->array[k].value.used);
+                      if (F_status_is_error(*status)) {
+                        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "f_macro_string_dynamics_resize", F_true);
+                        break;
+                      }
                     }
-                  } // for
+
+                    for (l = 0; l < map_multis->array[k].value.used; l++) {
+                      *status = fl_string_dynamic_append_nulless(map_multis->array[k].value.array[l], &arguments->array[arguments->used]);
+                      if (F_status_is_error(*status)) {
+                        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_dynamic_append_nulless", F_true);
+                        break;
+                      }
+
+                      *status = fl_string_dynamic_terminate_after(&arguments->array[arguments->used]);
+                      if (F_status_is_error(*status)) {
+                        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_terminate_after", F_true);
+                        break;
+                      }
+
+                      arguments->used++;
+                    } // for
+                  }
                 }
 
                 break;
@@ -440,13 +467,16 @@ extern "C" {
         }
       }
 
-      *status = fl_string_dynamic_terminate_after(&arguments->array[arguments->used]);
-      if (F_status_is_error(*status)) {
-        fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_terminate_after", F_true);
-        break;
-      }
+      // if iki variable did not match (results in empty string) or iki variable is inside quotes, then increment.
+      if (used_arguments == arguments->used) {
+        *status = fl_string_dynamic_terminate_after(&arguments->array[arguments->used]);
+        if (F_status_is_error(*status)) {
+          fake_print_error(data.context, data.verbosity, F_status_set_fine(*status), "fl_string_terminate_after", F_true);
+          break;
+        }
 
-      arguments->used++;
+        arguments->used++;
+      }
 
       f_macro_iki_variable_delete_simple(iki_variable);
       f_macro_iki_vocabulary_delete_simple(iki_vocabulary);
@@ -609,7 +639,7 @@ extern "C" {
 
       operations[i] = operation;
 
-      fake_make_operation_expand(data, section->name, operation, *operation_name, section->contents.array[i], data_make, &arguments[i], status);
+      fake_make_operation_expand(data, section->name, operation, *operation_name, section->contents.array[i], section->quotedss.array[i], data_make, &arguments[i], status);
       if (F_status_is_error(*status)) {
         has_error = F_true;
         *status = F_none;
index 82ce4572bcd58dbc1781e930a11f4115a92ff576..fc4b66e43c1616b9ea93386914a2aaecc152fc67 100644 (file)
@@ -277,17 +277,24 @@ extern "C" {
 #endif // _di_fake_make_operate_
 
 /**
- * Execute the make operation.
+ * For a given make operation section, expand the content into an arguments array.
  *
  * @param data
  *   The program data.
  * @param section_name
+ *   The section name.
  * @param operation
+ *   The operation being performed.
  * @param operation_name
+ *   The operation name.
  * @param content
+ *   The content array.
+ * @param quotedss
+ *   The array of quoted associated with the content.
  * @param data_make
  *   All make related setting data, including data from the fakefile and optionally build settings file.
  * @param arguments
+ *   The expanded arguments.
  * @param section_id
  *   The array location id within the fakefile of the section to operate on.
  * @param status
@@ -296,7 +303,7 @@ extern "C" {
  *   Status codes (with error bit) are returned on any problem.
  */
 #ifndef _di_fake_make_operation_expand_
-  extern void fake_make_operation_expand(const fake_data data, const f_string_range section_name, const f_array_length operation, const f_string_static operation_name, const f_fss_content content, fake_make_data *data_make, f_string_dynamics *arguments, f_status *status) f_gcc_attribute_visibility_internal;
+  extern void fake_make_operation_expand(const fake_data data, const f_string_range section_name, const f_array_length operation, const f_string_static operation_name, const f_fss_content content, const f_fss_quoteds quoteds, fake_make_data *data_make, f_string_dynamics *arguments, f_status *status) f_gcc_attribute_visibility_internal;
 #endif // _di_fake_make_operation_expand_
 
 /**
index 6bbeffda3b83c6c01e4a87eb9cf43a95a31c8ab3..82e97697d6a1a1b08ec5a5515aed00d64893e1e8 100644 (file)
@@ -11,7 +11,7 @@ settings:
   parameter verbose4 +v and then "  some"
 
 main:
-  print This is a line "(define = 'define:"example"') parameter:"verbose4"."
+  print This is a line "(define = 'define:"example"')." parameter:"verbose4"
 
   invalid