--- /dev/null
+# fss-0002 iki-0000
+#
+# license: cc-by-sa-4.0
+#
+# This file (assumed to be named readme.remove.txt) can be more easily read using the following iki_read commands:
+# iki_read readme.tacocate.txt +Q -w -rrr FLL FLL PID PID DNS DNS -WW character "'" "'" code '"' '"'
+#
+# To read the "Remove Readme Documentation" section of this file, use this command sequence:
+# fss_basic_list_read readme.tacocate.txt +Q -cn "TacocaT Readme Documentation" | iki_read +Q -w -rrr FLL FLL PID PID DNS DNS -WW character "'" "'" code '"' '"'
+#
+
+TacocaT Readme Documentation:
+ The bold:"tacocat" is a program for sending and receiving files, mainly for testing purposes.
+
+ This program is similar to code:"netcat" or code:"nc".
+
+ The primary use for this is to test bold:"Featureless Linux Library" and bold:"Kevux Tools" network functionality.
+
+ The bold:"tacocat" program has the following arguments\:
+
+ The code:"--background" (code:"-b") causes this program to run in the background.
+ The code:"--from" (code:"-f") parameter is an address or socket file to listen to.
+ The code:"--pid" (code:"-p") causes this program to create a PID:"Process Identifier" file.
+ The code:"--pid_name" (code:"-N") parameter designates a custom PID:"Process Identifier" file name without the '.pid' extension or the directory path.
+ The code:"--pid_path" (code:"-P") parameter designates a custom PID:"Process Identifier" directory path.\
+ The code:"--resolve" (code:"-R") parameter designates a DNS:"Domain Name Resolver" mode, such as code:"classic" or code:"kevux".
+ The code:"--to" (code:"-t") parameter is an address or socket file to transmit to.
}
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
-
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(f_console_parameter_process));
return;
main->setting.state.status = fll_program_parameter_process_context(choices, modes, F_true, &main->program);
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(fll_program_parameter_process_context));
main->setting.state.status = fll_program_parameter_process_verbosity(choices, verbosity, F_true, &main->program);
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(fll_program_parameter_process_verbosity));
main->setting.state.status = f_string_dynamic_append_nulless(main->program.parameters.arguments.array[index], strings[i]);
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(f_string_dynamic_append_nulless));
else {
main->setting.state.status = F_status_set_error(F_parameter);
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
fll_program_print_error_parameter_empty_value(&main->program.error, f_console_symbol_long_normal_s, longs[i]);
else if (main->program.parameters.array[parameters[i]].result & f_console_result_found_e) {
main->setting.state.status = F_status_set_error(F_parameter);
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
fll_program_print_error_parameter_missing_value(&main->program.error, f_console_symbol_long_normal_s, longs[i]);
&main->setting.tos,
};
+ const bool const exists[] = {
+ F_true,
+ F_false,
+ };
+
f_number_unsigned_t j = 0;
for (i = 0; i < 2; ++i) {
main->setting.state.status = f_string_dynamics_increase_by(main->program.parameters.array[parameters[i]].values.used, strings[i]);
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(f_string_dynamics_increase_by));
main->setting.state.status = f_string_dynamic_append_nulless(main->program.parameters.arguments.array[index], &strings[i]->array[j]);
if (F_status_is_error(main->setting.state.status)) {
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(f_string_dynamic_append_nulless));
return;
}
+
+ if (f_path_is_absolute(strings[i]->array[j]) == F_true || f_path_is_relative_current(strings[i]->array[j]) == F_true) {
+ if (exists[i]) {
+ main->setting.state.status = f_file_exists(strings[i]->array[j], F_true);
+
+ if (F_status_is_error(main->setting.state.status)) {
+ macro_setting_load_print_first();
+
+ kt_tacocat_print_error(&main->program.error, macro_kt_tacocat_f(f_string_dynamic_append_nulless));
+
+ return;
+ }
+ }
+ }
+ else {
+ // @todo is network address, do validation.
+ }
}
else {
main->setting.state.status = F_status_set_error(F_parameter);
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
fll_program_print_error_parameter_empty_value(&main->program.error, f_console_symbol_long_normal_s, longs[i]);
else if (main->program.parameters.array[parameters[i]].result & f_console_result_found_e) {
main->setting.state.status = F_status_set_error(F_parameter);
- if ((main->setting.flag & kt_tacocat_main_flag_print_first_e) && main->program.message.verbosity > f_console_verbosity_error_e) {
- fll_print_dynamic_raw(f_string_eol_s, main->program.message.to);
- }
+ macro_setting_load_print_first();
fll_program_print_error_parameter_missing_value(&main->program.error, f_console_symbol_long_normal_s, longs[i]);