}
#endif // _di_fake_make_operate_process_type_pop_
+#ifndef _di_fake_make_operate_process_type_print_
+ f_status_t fake_make_operate_process_type_print(fake_make_data_t * const data_make, const f_string_dynamics_t arguments) {
+
+ f_status_t status = F_none;
+
+ data_make->cache_1.used = 0;
+
+ {
+ f_array_length_t i = 0;
+
+ // Pre-allocate the cache to reduce allocations.
+ {
+ f_array_length_t total = arguments.used;
+
+ for (; i < arguments.used; ++i) {
+ total += arguments.array[i].used;
+ } // for
+
+ status = f_string_dynamic_increase_by(total, &data_make->cache_1);
+
+ if (F_status_is_error(status)) {
+ fll_error_print(data_make->error, F_status_set_fine(status), "f_file_stream_open", F_true);
+
+ return status;
+ }
+ }
+
+ for (i = 0; i < arguments.used; ++i) {
+
+ status = fake_make_operate_process_buffer_escape(data_make, arguments.array[i], &data_make->cache_1);
+
+ if (F_status_is_error(status)) {
+ fll_error_print(data_make->error, F_status_set_fine(status), "f_file_stream_open", F_true);
+
+ return status;
+ }
+
+ if (i + 1 < arguments.used) {
+ status = f_string_dynamic_increase_by(1, &data_make->cache_1);
+
+ if (F_status_is_error(status)) {
+ fll_error_print(data_make->error, F_status_set_fine(status), "f_file_stream_open", F_true);
+
+ return status;
+ }
+
+ status = f_string_dynamic_append(f_string_space_s, &data_make->cache_1);
+
+ if (F_status_is_error(status)) {
+ fll_error_print(data_make->error, F_status_set_fine(status), "f_string_dynamic_append", F_true);
+
+ return status;
+ }
+ }
+ } // for
+ }
+
+ flockfile(data_make->main->output.to.stream);
+
+ fll_print_dynamic_raw(data_make->cache_1, data_make->main->output.to.stream);
+ fll_print_dynamic_raw(f_string_space_s, data_make->main->output.to.stream);
+ fll_print_dynamic_raw(f_string_eol_s, data_make->main->output.to.stream);
+
+ funlockfile(data_make->main->output.to.stream);
+
+ return F_none;
+ }
+#endif // _di_fake_make_operate_process_type_print_
+
#ifndef _di_fake_make_operate_process_type_to_
f_status_t fake_make_operate_process_type_to(fake_make_data_t * const data_make, const f_string_dynamics_t arguments) {
if (F_status_is_error_not(status)) {
for (f_array_length_t i = 1; i < arguments.used; ++i) {
+ data_make->cache_1.used = 0;
+
status = fake_make_operate_process_buffer_escape(data_make, arguments.array[i], &data_make->cache_1);
if (F_status_is_error(status)) {
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param clone
* If TRUE, perform a copy that is a clone (preserved timestamps, roles, and permissions).
* If FALSE, perforrm a normaly copy without preserving properties.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param all
* If TRUE, then if the path is a directory, then recursively apply to all paths within the directory.
* If FALSE, then only apply to the given path.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*/
#ifndef _di_fake_make_operate_process_type_fail_
extern void fake_make_operate_process_type_fail(fake_make_data_t * const data_make, const f_string_dynamics_t arguments) F_attribute_visibility_internal_d;
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param all
* If TRUE, then if the path is a directory, then recursively apply to all paths within the directory.
* If FALSE, then only apply to the given path.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param state_process
* The operation process state.
*
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param state_process
* The operation process state.
*
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param if_not
* When TRUE, perform the if not is.
* When FALSE, perform the if is.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param all
* If TRUE, then if the path is a directory, then recursively apply to all paths within the directory.
* If FALSE, then only apply to the given path.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
* @param all
* If TRUE, then if the path is a directory, then recursively apply to all paths within the directory.
* If FALSE, then only apply to the given path.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
#endif // _di_fake_make_operate_process_type_pop_
/**
+ * Perform the print operation process.
+ *
+ * @param data_make
+ * All make related setting data, including data from the fakefile and the build settings file.
+ * This resets and uses data_make.cache_1.
+ * @param arguments
+ * The arguments for print operation.
+ *
+ * @return
+ * F_none on success.
+ *
+ * Errors (with error bit) from: fake_make_operate_process_buffer_escape().
+ * Errors (with error bit) from: f_string_dynamic_append().
+ * Errors (with error bit) from: f_string_dynamic_increase_by().
+ *
+ * @see fake_make_operate_process_buffer_escape()
+ * @see f_string_dynamic_append()
+ * @see f_string_dynamic_increase_by()
+ */
+#ifndef _di_fake_make_operate_process_type_print_
+ extern f_status_t fake_make_operate_process_type_print(fake_make_data_t * const data_make, const f_string_dynamics_t arguments) F_attribute_visibility_internal_d;
+#endif // _di_fake_make_operate_process_type_print_
+
+/**
* Perform the to operation process.
*
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
* @param data_make
* All make related setting data, including data from the fakefile and the build settings file.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.
* All make related setting data, including data from the fakefile and the build settings file.
* This resets and uses data_make.cache_1.
* @param arguments
- * The arguments for the run or shell operation.
+ * The arguments for the operation.
*
* @return
* F_none on success.