From a3876805debc39b19cc64dcff39e3814f70777b0 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sat, 3 Aug 2024 00:32:35 -0500 Subject: [PATCH] Progress: Resume working on the remove program and some parts of the tacocat. --- data/build/remove/defines | 2 + data/build/remove/dependencies | 1 + data/build/remove/settings | 3 +- data/build/remove/settings.remove | 2 +- data/build/stand_alone/configs/remove-config.h | 18 +++++- data/build/stand_alone/configs/tacocat-config.h | 3 + data/build/stand_alone/settings/settings.remove | 1 + sources/c/program/kevux/tools/remove/main/common.h | 18 ++++-- .../program/kevux/tools/remove/main/common/type.h | 16 +++--- .../c/program/kevux/tools/remove/main/convert.c | 66 +++++++++++++--------- .../c/program/kevux/tools/remove/main/convert.h | 22 +++++++- .../c/program/kevux/tools/remove/main/operate.h | 12 ++++ .../program/kevux/tools/remove/main/print/error.h | 12 ++++ .../kevux/tools/remove/main/print/message.h | 2 + .../kevux/tools/remove/main/print/simulate.h | 10 ++++ .../kevux/tools/remove/main/print/warning.h | 2 + sources/c/program/kevux/tools/remove/main/remove.h | 9 +++ sources/c/program/kevux/tools/remove/main/signal.h | 4 ++ sources/c/program/kevux/tools/remove/main/thread.h | 2 + .../c/program/kevux/tools/tacocat/main/common.h | 10 ++++ .../kevux/tools/tacocat/main/common/define.h | 16 +++--- .../program/kevux/tools/tacocat/main/common/type.h | 7 +++ .../c/program/kevux/tools/tacocat/main/packet.h | 10 +++- .../program/kevux/tools/tacocat/main/print/error.h | 46 ++++++++++++++- .../kevux/tools/tacocat/main/print/message.h | 8 +++ .../kevux/tools/tacocat/main/print/warning.h | 13 ++++- .../c/program/kevux/tools/tacocat/main/process.h | 21 +++++++ .../c/program/kevux/tools/tacocat/main/receive.h | 11 ++++ sources/c/program/kevux/tools/tacocat/main/send.h | 9 +++ .../c/program/kevux/tools/tacocat/main/signal.h | 4 ++ .../c/program/kevux/tools/tacocat/main/tacocat.h | 2 + .../c/program/kevux/tools/tacocat/main/thread.h | 2 + .../program/kevux/tools/tacocat/tacocat/tacocat.h | 2 +- 33 files changed, 306 insertions(+), 60 deletions(-) diff --git a/data/build/remove/defines b/data/build/remove/defines index 92eb7db..f0c01ed 100644 --- a/data/build/remove/defines +++ b/data/build/remove/defines @@ -5,3 +5,5 @@ _di_thread_support_ Disable thread support, handling signals without using a sep _en_kt_settings_path_ Enable support for processing that settings path, such as /etc/. _en_kt_process_path_ Enable support for processing that process path, such as /proc/. _en_kt_default_to_utc_ Default to UTC mode rather than local time. + +_use_timegm_ Enable use of timegm() rather than trying to perform the calculations manually. diff --git a/data/build/remove/dependencies b/data/build/remove/dependencies index fa42360..e8ee086 100644 --- a/data/build/remove/dependencies +++ b/data/build/remove/dependencies @@ -19,6 +19,7 @@ f_print f_rip f_signal f_thread +f_time fl_conversion fl_directory diff --git a/data/build/remove/settings b/data/build/remove/settings index 48c4004..a1e0431 100644 --- a/data/build/remove/settings +++ b/data/build/remove/settings @@ -38,7 +38,7 @@ build_language c build_libraries -lc build_libraries-individual -lfll_error -lfll_print -lfll_program build_libraries-individual -lfl_conversion -fl_directory -lfl_print -build_libraries-individual -lf_account -lf_color -lf_compare -lf_console -lf_conversion -lf_directory -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_string -lf_type_array -lf_utf +build_libraries-individual -lf_account -lf_color -lf_compare -lf_console -lf_conversion -lf_directory -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_string -lf_time -lf_type_array -lf_utf build_libraries-individual_thread -lf_thread build_libraries-level -lfll_2 -lfll_1 -lfll_0 build_libraries-monolithic -lfll @@ -77,6 +77,7 @@ environment LANG LC_ALL LC_COLLATE LC_CTYPE LC_FASTMSG LC_MESSAGES LC_MONETARY L #defines -D_di_libcap_ defines -D_libcap_legacy_only_ +defines -D_use_timegm_ defines-threadless -D_di_thread_support_ defines-thread -D_pthread_attr_unsupported_ -D_pthread_sigqueue_unsupported_ diff --git a/data/build/remove/settings.remove b/data/build/remove/settings.remove index faf9a1e..84fe984 100644 --- a/data/build/remove/settings.remove +++ b/data/build/remove/settings.remove @@ -38,7 +38,7 @@ build_language c build_libraries -lc -lremove build_libraries-individual -lfll_error -lfll_print -lfll_program build_libraries-individual -lfl_conversion -fl_directory -lfl_print -build_libraries-individual -lf_account -lf_color -lf_compare -lf_console -lf_conversion -lf_directory -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_string -lf_type_array -lf_utf +build_libraries-individual -lf_account -lf_color -lf_compare -lf_console -lf_conversion -lf_directory -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_string -lf_time -lf_type_array -lf_utf build_libraries-individual_thread -lf_thread build_libraries-level -lfll_2 -lfll_1 -lfll_0 build_libraries-monolithic -lfll diff --git a/data/build/stand_alone/configs/remove-config.h b/data/build/stand_alone/configs/remove-config.h index a7005a1..edad0ad 100644 --- a/data/build/stand_alone/configs/remove-config.h +++ b/data/build/stand_alone/configs/remove-config.h @@ -8,7 +8,7 @@ // // Example: // echo > /tmp/all.txt -// for i in f_type f_status f_memory f_type_array f_string f_utf f_account f_color f_compare f_console f_conversion f_directory f_file f_pipe f_print f_rip f_signal f_thread ; do grep -horP '\b_di_f_\w*\b' level_0/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_0/$i/c >> /tmp/all.txt ; done +// for i in f_type f_status f_memory f_type_array f_string f_utf f_account f_color f_compare f_console f_conversion f_directory f_file f_pipe f_print f_rip f_signal f_thread f_time ; do grep -horP '\b_di_f_\w*\b' level_0/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_0/$i/c >> /tmp/all.txt ; done // for i in fl_conversion fl_directory fl_print ; do grep -horP '\b_di_fl_\w*\b' level_1/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_1/$i/c >> /tmp/all.txt ; done // for i in fll_error fll_print fll_program ; do grep -horP '\b_di_fll_\w*\b' level_2/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_2/$i/c >> /tmp/all.txt ; done // sort /tmp/all.txt | uniq | sed -e 's|^_|#define &|g' > /tmp/sorted.txt @@ -1505,10 +1505,24 @@ #define _di_f_thread_spin_t_ #define _di_f_thread_spin_unlock_ #define _di_f_thread_unlock_ +#define _di_f_time_calendar_string_ +#define _di_f_time_calendar_string_part_ +#define _di_f_time_clock_get_ +#define _di_f_time_clock_precision_ +#define _di_f_time_clock_set_ +#define _di_f_time_d_ +#define _di_f_time_epoch_get_ +#define _di_f_time_local_get_ +#define _di_f_time_of_day_get_ +#define _di_f_time_of_day_set_ #define _di_f_time_part_t_ #define _di_f_time_simple_t_ +#define _di_f_time_sleep_spec_ +#define _di_f_time_spec_millisecond_ +#define _di_f_time_spec_nanosecond_ #define _di_f_time_spec_t_ -#define _di_f_time_t_ +//#define _di_f_time_t_ +#define _di_f_time_utc_get_ #define _di_f_time_value_t_ //#define _di_f_type_d_ //#define _di_f_type_file_defaults_d_ diff --git a/data/build/stand_alone/configs/tacocat-config.h b/data/build/stand_alone/configs/tacocat-config.h index 05e7bb9..8d68904 100644 --- a/data/build/stand_alone/configs/tacocat-config.h +++ b/data/build/stand_alone/configs/tacocat-config.h @@ -1757,6 +1757,9 @@ #define _di_f_thread_unlock_ #define _di_f_time_calendar_string_ #define _di_f_time_calendar_string_part_ +#define _di_f_time_clock_get_ +#define _di_f_time_clock_precision_ +#define _di_f_time_clock_set_ #define _di_f_time_d_ #define _di_f_time_epoch_get_ #define _di_f_time_local_get_ diff --git a/data/build/stand_alone/settings/settings.remove b/data/build/stand_alone/settings/settings.remove index 55a2e78..1afd37e 100644 --- a/data/build/stand_alone/settings/settings.remove +++ b/data/build/stand_alone/settings/settings.remove @@ -53,6 +53,7 @@ build_sources_program fll/level_0/rip.c fll/level_0/rip/utf.c fll/level_0/privat build_sources_program fll/level_0/signal.c build_sources_program fll/level_0/string.c fll/level_0/private-string.c fll/level_0/string/common.c build_sources_program fll/level_0/string/dynamic.c fll/level_0/string/dynamics.c fll/level_0/string/dynamicss.c fll/level_0/string/map.c fll/level_0/string/maps.c fll/level_0/string/mapss.c fll/level_0/string/map_multi.c fll/level_0/string/map_multis.c fll/level_0/string/map_multiss.c fll/level_0/string/static.c fll/level_0/string/statics.c fll/level_0/string/staticss.c fll/level_0/string/triple.c fll/level_0/string/triples.c fll/level_0/string/tripless.c +build_sources_program fll/level_0/time.c build_sources_program fll/level_0/type_array/cell.c fll/level_0/type_array/file.c fll/level_0/type_array/fll_id.c fll/level_0/type_array/int8.c fll/level_0/type_array/int16.c fll/level_0/type_array/int32.c fll/level_0/type_array/int64.c fll/level_0/type_array/int128.c fll/level_0/type_array/number_signed.c fll/level_0/type_array/number_unsigned.c fll/level_0/type_array/poll.c fll/level_0/type_array/quantity.c fll/level_0/type_array/quantitys.c fll/level_0/type_array/quantityss.c fll/level_0/type_array/range.c fll/level_0/type_array/ranges.c fll/level_0/type_array/rangess.c fll/level_0/type_array/state.c fll/level_0/type_array/status.c fll/level_0/type_array/uint8.c fll/level_0/type_array/uint16.c fll/level_0/type_array/uint32.c fll/level_0/type_array/uint64.c fll/level_0/type_array/uint128.c build_sources_program fll/level_0/utf.c fll/level_0/private-utf.c fll/level_0/private-utf_alphabetic.c fll/level_0/private-utf_combining.c fll/level_0/private-utf_control.c fll/level_0/private-utf_digit.c fll/level_0/private-utf_emoji.c fll/level_0/private-utf_numeric.c fll/level_0/private-utf_phonetic.c fll/level_0/private-utf_private.c fll/level_0/private-utf_punctuation.c fll/level_0/private-utf_subscript.c fll/level_0/private-utf_superscript.c fll/level_0/private-utf_symbol.c fll/level_0/private-utf_unassigned.c fll/level_0/private-utf_valid.c fll/level_0/private-utf_whitespace.c fll/level_0/private-utf_wide.c fll/level_0/private-utf_word.c fll/level_0/private-utf_zero_width.c build_sources_program fll/level_0/utf/common.c fll/level_0/utf/convert.c fll/level_0/utf/dynamic.c fll/level_0/utf/dynamics.c fll/level_0/utf/dynamicss.c fll/level_0/utf/is.c fll/level_0/utf/is_character.c fll/level_0/utf/map.c fll/level_0/utf/maps.c fll/level_0/utf/mapss.c fll/level_0/utf/map_multi.c fll/level_0/utf/map_multis.c fll/level_0/utf/map_multiss.c fll/level_0/utf/static.c fll/level_0/utf/statics.c fll/level_0/utf/staticss.c fll/level_0/utf/string.c fll/level_0/utf/triple.c fll/level_0/utf/triples.c fll/level_0/utf/tripless.c diff --git a/sources/c/program/kevux/tools/remove/main/common.h b/sources/c/program/kevux/tools/remove/main/common.h index e6e0259..e2f7ac9 100644 --- a/sources/c/program/kevux/tools/remove/main/common.h +++ b/sources/c/program/kevux/tools/remove/main/common.h @@ -17,12 +17,14 @@ extern "C" { #endif /** - * Resize a date array. + * Resize a date array. @todo migrate this? * * @param length * The new size to use. - * @param ranges - * The Date Comparison array to resize. + * @param dates + * The array to resize. + * + * Must not be NULL. * * @return * F_okay on success. @@ -37,12 +39,14 @@ extern "C" { #endif // _di_kt_remove_dates_resize_ /** - * Resize a mode array. + * Resize a mode array. @todo migrate this? * * @param length * The new size to use. - * @param ranges - * The Date Comparison array to resize. + * @param modes + * The array to resize. + * + * Must not be NULL. * * @return * F_okay on success. @@ -70,6 +74,8 @@ extern "C" { * * The setting.flag has kt_remove_flag_option_used_d forcibly cleared on the start of this function. * + * Must not be NULL. + * * This alters setting.status: * F_okay on success. * F_data_not on success but nothing was provided to operate with. diff --git a/sources/c/program/kevux/tools/remove/main/common/type.h b/sources/c/program/kevux/tools/remove/main/common/type.h index bb9eb76..721561f 100644 --- a/sources/c/program/kevux/tools/remove/main/common/type.h +++ b/sources/c/program/kevux/tools/remove/main/common/type.h @@ -24,9 +24,11 @@ extern "C" { * operation: The comparison operation. * type: The date type. * - * start_year: The year in which the seconds is relative to (is only processed when + * start_year: The year in which the seconds is relative to for the start date. * start_second: The entire date value in seconds for the date or the start of a date range. * start_nanosecond: The remaining nanosecond not represented in the seconds for the date or the start of a date range. + * + * stop_year: The year in which the seconds is relative to for the stop date. * stop_second: The entire date value in seconds for the stop of a date range (not used for non-range dates). * stop_nanosecond: The remaining nanosecond not represented in the seconds for the stop of a date range (not used for non-range dates). */ @@ -35,13 +37,13 @@ extern "C" { uint8_t operation; uint8_t type; - f_number_unsigned_t start_year; - f_number_unsigned_t start_second; - f_number_unsigned_t start_nanosecond; + f_time_t start_year; + f_time_t start_second; + f_time_t start_nanosecond; - f_number_unsigned_t stop_year; - f_number_unsigned_t stop_second; - f_number_unsigned_t stop_nanosecond; + f_time_t stop_year; + f_time_t stop_second; + f_time_t stop_nanosecond; } kt_remove_date_t; #define kt_remove_date_t_initialize { \ diff --git a/sources/c/program/kevux/tools/remove/main/convert.c b/sources/c/program/kevux/tools/remove/main/convert.c index 88f3e55..c5ecacc 100644 --- a/sources/c/program/kevux/tools/remove/main/convert.c +++ b/sources/c/program/kevux/tools/remove/main/convert.c @@ -352,13 +352,16 @@ extern "C" { date->stop_year = 0; date->type = kt_remove_flag_date_string_d; - date->start_second = time.tm_sec; - date->start_second += time.tm_min * kt_remove_time_seconds_in_minute_d; - date->start_second += time.tm_hour * kt_remove_time_seconds_in_hour_d; - date->start_second += time.tm_yday * kt_remove_time_seconds_in_day_d; - date->start_nanosecond = 0; + #ifdef _available_timegm_ + date->start_second = (f_time_t) timegm(&time); + #else + date->start_second = time.tm_sec; + date->start_second += time.tm_min * kt_remove_time_seconds_in_minute_d; + date->start_second += time.tm_hour * kt_remove_time_seconds_in_hour_d; + date->start_second += time.tm_yday * kt_remove_time_seconds_in_day_d; + #endif // _available_timegm_ - // @todo investigate whether or not tm_isdst needs to be taken into consideration. + date->start_nanosecond = 0; matches = 1; break; @@ -383,25 +386,21 @@ extern "C" { memset(&now, 0, sizeof(struct timespec)); - { - const int result = clock_gettime(CLOCK_REALTIME, &now); - - if (result) { - if (errno == EFAULT) { - main->setting.state.status = F_status_set_error(F_buffer); - } - else if (errno == EINVAL) { - main->setting.state.status = F_status_set_error(F_parameter); - } - else if (errno == EPERM) { - main->setting.state.status = F_status_set_error(F_prohibited); - } - else { - main->setting.state.status = F_status_set_error(F_failure); - } - - return; + if (clock_gettime(CLOCK_REALTIME, &now)) { + if (errno == EFAULT) { + main->setting.state.status = F_status_set_error(F_buffer); + } + else if (errno == EINVAL) { + main->setting.state.status = F_status_set_error(F_parameter); + } + else if (errno == EPERM) { + main->setting.state.status = F_status_set_error(F_prohibited); } + else { + main->setting.state.status = F_status_set_error(F_failure); + } + + return; } date->start_year = kt_remove_time_year_unix_epoch_d; @@ -433,11 +432,23 @@ extern "C" { date->start_second -= date->start_second % kt_remove_time_seconds_in_day_d; if (date->type == kt_remove_flag_date_today_d) { - date->stop_second = date->start_second + kt_remove_time_seconds_in_day_d; // @fixme, check to see if this would overflow and if so increment year. + date->stop_second = date->start_second + kt_remove_time_seconds_in_day_d; + + if (date->stop_second < date->start_second) { + main->setting.state.status = F_status_set_error(F_number_overflow); + + return; + } } else if (date->type == kt_remove_flag_date_tomorrow_d) { date->start_second += kt_remove_time_seconds_in_day_d; - date->stop_second = date->start_second + kt_remove_time_seconds_in_day_d; // @fixme, check to see if this would overflow and if so increment year. + date->stop_second = date->start_second + kt_remove_time_seconds_in_day_d; + + if (date->stop_second < date->start_second) { + main->setting.state.status = F_status_set_error(F_number_overflow); + + return; + } } else if (date->type == kt_remove_flag_date_yesterday_d) { date->start_second -= kt_remove_time_seconds_in_day_d; @@ -548,9 +559,8 @@ extern "C" { if (!main) return 0; f_file_mode_t mode_file = f_file_mode_t_initialize; - uint8_t mode_replace = 0; - main->setting.state.status = f_file_mode_from_string(buffer, main->program.umask, &mode_file, &mode_replace); + main->setting.state.status = f_file_mode_from_string(buffer, main->program.umask, &mode_file, 0); if (F_status_is_error(main->setting.state.status)) { kt_remove_print_error(&main->program.error, macro_kt_remove_f(f_file_mode_from_string)); diff --git a/sources/c/program/kevux/tools/remove/main/convert.h b/sources/c/program/kevux/tools/remove/main/convert.h index 0985b1d..217e394 100644 --- a/sources/c/program/kevux/tools/remove/main/convert.h +++ b/sources/c/program/kevux/tools/remove/main/convert.h @@ -32,6 +32,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_data_not on success, but buffer is empty and there is no data to process. @@ -55,6 +57,8 @@ extern "C" { * @param date * The converted date. * + * Must not be NULL. + * * @see f_rip_dynamic_nulless() * @see fl_conversion_dynamic_partial_to_unsigned_detect() * @@ -81,6 +85,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_data_not on success, but buffer is empty or there is no data to process. @@ -92,6 +98,8 @@ extern "C" { * @param date * The converted date. * + * Must not be NULL. + * * @see clock_gettime() * * @see f_utf_is_digit() @@ -110,6 +118,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -135,6 +145,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -160,6 +172,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -179,11 +193,13 @@ extern "C" { * Convert the given date to the local time zone. * * This does not check the flags to see if UTC is in used. - * The caller must assure this is appropriate. + * The caller must assure that this is appropriate. * * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -194,9 +210,13 @@ extern "C" { * The year value. * This is commonly set to UNIX Epoch. * This is only updated if the timezone would result in a year change. + * + * Must not be NULL. * @param seconds * The seconds since the start of the year. * This is updated based on the global timezone variable. + * + * Must not be NULL. */ #ifndef _di_kt_remove_convert_timezone_ extern void kt_remove_convert_timezone(kt_remove_main_t * const main, f_number_unsigned_t * const year, f_number_unsigned_t * const seconds); diff --git a/sources/c/program/kevux/tools/remove/main/operate.h b/sources/c/program/kevux/tools/remove/main/operate.h index f35afcb..afd0624 100644 --- a/sources/c/program/kevux/tools/remove/main/operate.h +++ b/sources/c/program/kevux/tools/remove/main/operate.h @@ -18,6 +18,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_data_not on success but file is an empty string. @@ -50,6 +52,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_no on success but file is not to be removed. * F_yes on success and file is removed. @@ -72,6 +76,8 @@ extern "C" { * Perform directory recurse file operation action. * * @param recurse + * The directory recurse data. + * * Must not be NULL. * Must be of type f_directory_recurse_do_t. * @param name @@ -92,6 +98,8 @@ extern "C" { * Handle errors while performing directory recurse file operation action. * * @param recurse + * The directory recurse data. + * * Must not be NULL. * Must be of type f_directory_recurse_do_t. * @param name @@ -113,6 +121,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_no on success but file is not to be removed. * F_yes on success and file is removed. @@ -140,6 +150,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_data_not on success but file is an empty string. diff --git a/sources/c/program/kevux/tools/remove/main/print/error.h b/sources/c/program/kevux/tools/remove/main/print/error.h index e288b21..03aa792 100644 --- a/sources/c/program/kevux/tools/remove/main/print/error.h +++ b/sources/c/program/kevux/tools/remove/main/print/error.h @@ -22,6 +22,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * * @return @@ -42,6 +44,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function * The name of the function where the error happened. @@ -78,6 +82,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This locks, uses, and unlocks the file stream. * * This does not alter print.custom.setting.state.status. @@ -119,6 +125,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * * @return @@ -148,6 +156,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param path * The path in which the recursion max is reached. @@ -179,6 +189,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param symbol * The symbol string prepended to the parameter. diff --git a/sources/c/program/kevux/tools/remove/main/print/message.h b/sources/c/program/kevux/tools/remove/main/print/message.h index 33da9b2..e6b4360 100644 --- a/sources/c/program/kevux/tools/remove/main/print/message.h +++ b/sources/c/program/kevux/tools/remove/main/print/message.h @@ -24,6 +24,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param context * The color context settings. diff --git a/sources/c/program/kevux/tools/remove/main/print/simulate.h b/sources/c/program/kevux/tools/remove/main/print/simulate.h index b329f5c..2892fe6 100644 --- a/sources/c/program/kevux/tools/remove/main/print/simulate.h +++ b/sources/c/program/kevux/tools/remove/main/print/simulate.h @@ -26,6 +26,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. */ #ifndef _di_kt_remove_print_simulate_operate_ @@ -42,6 +44,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param path * The path to the file to operate on. @@ -60,6 +64,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param path * The path to the file to operate on. @@ -78,6 +84,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param statistics * The file statistics. @@ -96,6 +104,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param name * The name printed to be assocaited with the boolean value. diff --git a/sources/c/program/kevux/tools/remove/main/print/warning.h b/sources/c/program/kevux/tools/remove/main/print/warning.h index 9dc4cf8..f00143d 100644 --- a/sources/c/program/kevux/tools/remove/main/print/warning.h +++ b/sources/c/program/kevux/tools/remove/main/print/warning.h @@ -33,6 +33,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param path * The path to the file. diff --git a/sources/c/program/kevux/tools/remove/main/remove.h b/sources/c/program/kevux/tools/remove/main/remove.h index b481e1f..7ed70fd 100644 --- a/sources/c/program/kevux/tools/remove/main/remove.h +++ b/sources/c/program/kevux/tools/remove/main/remove.h @@ -35,6 +35,7 @@ #include #include #include +#include #include // FLL-1 includes. @@ -82,6 +83,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_true on success when performing verification and verify passed. @@ -103,6 +106,8 @@ extern "C" { * * This must be of type kt_remove_main_t. * + * Must not be NULL. + * * This does not alter main.setting.state.status. * * @return @@ -121,6 +126,8 @@ extern "C" { * * This must be of type kt_remove_main_t. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -138,6 +145,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. */ diff --git a/sources/c/program/kevux/tools/remove/main/signal.h b/sources/c/program/kevux/tools/remove/main/signal.h index 073b08e..884c584 100644 --- a/sources/c/program/kevux/tools/remove/main/signal.h +++ b/sources/c/program/kevux/tools/remove/main/signal.h @@ -30,6 +30,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status. * * @return @@ -61,6 +63,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.program.signal_received, setting it to a received signal. * * This alters setting.status: diff --git a/sources/c/program/kevux/tools/remove/main/thread.h b/sources/c/program/kevux/tools/remove/main/thread.h index 9147f35..d61c638 100644 --- a/sources/c/program/kevux/tools/remove/main/thread.h +++ b/sources/c/program/kevux/tools/remove/main/thread.h @@ -26,6 +26,8 @@ extern "C" { * @param main * The program and settings data. * + * Must not be NULL. + * * Must be of type kt_remove_main_t. * * @return diff --git a/sources/c/program/kevux/tools/tacocat/main/common.h b/sources/c/program/kevux/tools/tacocat/main/common.h index 2863573..d1fb820 100644 --- a/sources/c/program/kevux/tools/tacocat/main/common.h +++ b/sources/c/program/kevux/tools/tacocat/main/common.h @@ -28,6 +28,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters setting.state.status: * F_okay on success. * @@ -67,6 +69,8 @@ extern "C" { * * This must be of type kt_tacocat_main_t. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * @@ -102,6 +106,8 @@ extern "C" { * * The main.setting.state.status can be set to either F_network_version_four or F_network_version_six when calling this function to bypass IP type detection. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_data_not on success but there is nothing in the address string (address.used is 0). @@ -124,11 +130,15 @@ extern "C" { * - Octals (base 8) begin with either '0o' or '0O'. * - Binaries (base 2) begin with either '0b' or '0B'. * - Decimal (base 10) is used for all other cases. + * + * Must not be NULL. * @param port * The extracted port number. * * When main.setting.state.status is set to either F_network_version_four or F_network_version_six when calling this function, the port represents the location within the address string that the port number begins. * + * Must not be NULL. + * * @see fl_conversion_dynamic_to_unsigned_detect() */ #ifndef _di_kt_tacocat_setting_load_address_port_extract_ diff --git a/sources/c/program/kevux/tools/tacocat/main/common/define.h b/sources/c/program/kevux/tools/tacocat/main/common/define.h index 9d3869e..2417271 100644 --- a/sources/c/program/kevux/tools/tacocat/main/common/define.h +++ b/sources/c/program/kevux/tools/tacocat/main/common/define.h @@ -303,14 +303,14 @@ extern "C" { * - next: Request or Send next packet for existing connection. * - resend: Send packet for requesting a re-send of the previous packet. */ -#ifndef _di_kt_tacocat_socket_flag_e_ - #define kt_tacocat_socket_flag_none_e 0x0 - #define kt_tacocat_socket_flag_abort_e 0x1 - #define kt_tacocat_socket_flag_done_e 0x2 - #define kt_tacocat_socket_flag_listen_e 0x4 - #define kt_tacocat_socket_flag_next_e 0x8 - #define kt_tacocat_socket_flag_resend_e 0x10 -#endif // _di_kt_tacocat_socket_flag_e_ +#ifndef _di_kt_tacocat_socket_flag_d_ + #define kt_tacocat_socket_flag_none_d 0x0 + #define kt_tacocat_socket_flag_abort_d 0x1 + #define kt_tacocat_socket_flag_done_d 0x2 + #define kt_tacocat_socket_flag_listen_d 0x4 + #define kt_tacocat_socket_flag_next_d 0x8 + #define kt_tacocat_socket_flag_resend_d 0x10 +#endif // _di_kt_tacocat_socket_flag_d_ #ifdef __cplusplus } // extern "C" diff --git a/sources/c/program/kevux/tools/tacocat/main/common/type.h b/sources/c/program/kevux/tools/tacocat/main/common/type.h index ffe226d..f5cc6c5 100644 --- a/sources/c/program/kevux/tools/tacocat/main/common/type.h +++ b/sources/c/program/kevux/tools/tacocat/main/common/type.h @@ -420,6 +420,8 @@ extern "C" { * * @param cache * The program main cache data. + * + * Must not be NULL. */ #ifndef _di_kt_tacocat_cache_delete_ extern void kt_tacocat_cache_delete(kt_tacocat_cache_t * const cache); @@ -431,6 +433,8 @@ extern "C" { * @param main * The program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status. */ #ifndef _di_kt_tacocat_main_delete_ @@ -443,6 +447,8 @@ extern "C" { * @param setting * The program main setting data. * + * Must not be NULL. + * * This does not alter setting.state.status. */ #ifndef _di_kt_tacocat_setting_delete_ @@ -462,6 +468,7 @@ extern "C" { * The exclusive stop position in the array to stop deleting. * @param array * The array structure to delete all values of. + * * Must not be NULL. * * @return diff --git a/sources/c/program/kevux/tools/tacocat/main/packet.h b/sources/c/program/kevux/tools/tacocat/main/packet.h index 514316a..6e79053 100644 --- a/sources/c/program/kevux/tools/tacocat/main/packet.h +++ b/sources/c/program/kevux/tools/tacocat/main/packet.h @@ -12,7 +12,6 @@ extern "C" { #endif - /** * Process the header and signature strings, extracting the data. * @@ -25,8 +24,11 @@ extern "C" { * The main program and settings data. * * This does not alter main.setting.state.status, except on interrupt signal. + * + * Must not be NULL. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -65,9 +67,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -95,9 +100,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: diff --git a/sources/c/program/kevux/tools/tacocat/main/print/error.h b/sources/c/program/kevux/tools/tacocat/main/print/error.h index bad4f66..9316553 100644 --- a/sources/c/program/kevux/tools/tacocat/main/print/error.h +++ b/sources/c/program/kevux/tools/tacocat/main/print/error.h @@ -24,6 +24,8 @@ extern "C" { * * This requires print.custom to be fake_main_t. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function * A string representing the function that has an error. @@ -46,6 +48,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function * A string representing the function that has an error. @@ -72,6 +76,8 @@ extern "C" { * * This requires print.custom to be fake_main_t. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function * The name of the function where the error happened. @@ -101,9 +107,12 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function - * The name of the function where the error happened. + * (optional) The name of the function where the error happened. + * * Set to 0 to disable. * @param on * The network connection direction, which should either be "receive" or "send". @@ -130,6 +139,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param file * The name of the file. @@ -160,6 +171,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -184,9 +197,12 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function - * The name of the function where the error happened. + * (optional) The name of the function where the error happened. + * * Set to 0 to disable. * @param on * The network connection direction, which should either be "receive" or "send". @@ -217,9 +233,12 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function - * The name of the function where the error happened. + * (optional) The name of the function where the error happened. + * * Set to 0 to disable. * @param on * The network connection direction, which should either be "receive" or "send". @@ -250,6 +269,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -284,6 +305,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -291,6 +314,7 @@ extern "C" { * The name of the network in which the error is related. * @param name * (optional) The name of the file. + * * Set name.used to 0 to disable. * * @return @@ -311,11 +335,14 @@ extern "C" { * This could be on any error, such as errors on file load, memory, access, or network failures. * * @param print + * + * Must not be NULL. * The output structure to print to. * * This does not alter print.custom.setting.state.status. * @param set * The socket set to process. + * * Must not be NULL. * * This does not alter set.status. @@ -340,9 +367,12 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param set * The socket set to process. + * * Must not be NULL. * * This does not alter set.status. @@ -365,6 +395,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -393,6 +425,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -421,6 +455,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param unknown * The string representing the unknown value passed to the resolve parameter. @@ -443,6 +479,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This requires print.custom to be fake_main_t. * * This does not alter print.custom.setting.state.status. @@ -469,6 +507,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param name * The file or network name associated with the unsupported protocol. diff --git a/sources/c/program/kevux/tools/tacocat/main/print/message.h b/sources/c/program/kevux/tools/tacocat/main/print/message.h index e0a5de5..af734bb 100644 --- a/sources/c/program/kevux/tools/tacocat/main/print/message.h +++ b/sources/c/program/kevux/tools/tacocat/main/print/message.h @@ -26,6 +26,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param context * The color context settings. @@ -48,6 +50,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param set * The socket set relating to the message. @@ -70,6 +74,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param set * The socket set relating to the message. @@ -92,6 +98,8 @@ extern "C" { * * This locks, uses, and unlocks the file stream. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param set * The socket set relating to the message. diff --git a/sources/c/program/kevux/tools/tacocat/main/print/warning.h b/sources/c/program/kevux/tools/tacocat/main/print/warning.h index f5432f4..c70485e 100644 --- a/sources/c/program/kevux/tools/tacocat/main/print/warning.h +++ b/sources/c/program/kevux/tools/tacocat/main/print/warning.h @@ -22,6 +22,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -48,6 +50,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param on * The network connection direction, which should either be "receive" or "send". @@ -72,9 +76,12 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param function - * The name of the function where the warning happened. + * (optional) The name of the function where the warning happened. + * * Set to 0 to disable. * @param on * The network connection direction, which should either be "receive" or "send". @@ -105,6 +112,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param symbol * The symbol string prepended to the parameter. @@ -135,6 +144,8 @@ extern "C" { * @param print * The output structure to print to. * + * Must not be NULL. + * * This does not alter print.custom.setting.state.status. * @param address * The original address string. diff --git a/sources/c/program/kevux/tools/tacocat/main/process.h b/sources/c/program/kevux/tools/tacocat/main/process.h index b68f18b..4706644 100644 --- a/sources/c/program/kevux/tools/tacocat/main/process.h +++ b/sources/c/program/kevux/tools/tacocat/main/process.h @@ -18,6 +18,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. */ @@ -42,9 +44,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -64,6 +69,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_parameter (with error bit) on invalid parameter. * @@ -71,6 +78,8 @@ extern "C" { * @param set * The socket set to disconnect all parts of. * + * Must not be NULL. + * * @return * F_okay on success. * @@ -88,6 +97,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success and no error is found. * @@ -98,6 +109,8 @@ extern "C" { * The socket sets to handle the errors of. * @param status * The status to update with the status code from the given set. + * + * Must not be NULL. */ #ifndef _di_kt_tacocat_process_socket_sets_error_handle_ extern void kt_tacocat_process_socket_sets_error_handle(kt_tacocat_main_t * const main, const kt_tacocat_socket_sets_t sets, f_status_t * const status); @@ -109,6 +122,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_parameter (with error bit) if a parameter is invalid. * @@ -120,6 +135,8 @@ extern "C" { * @param status * The status to update with the status code from the given set. * + * Must not be NULL. + * * @return * F_okay on no error. * @@ -136,6 +153,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. */ @@ -149,6 +168,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. */ diff --git a/sources/c/program/kevux/tools/tacocat/main/receive.h b/sources/c/program/kevux/tools/tacocat/main/receive.h index b6e625c..f8ee7e7 100644 --- a/sources/c/program/kevux/tools/tacocat/main/receive.h +++ b/sources/c/program/kevux/tools/tacocat/main/receive.h @@ -20,6 +20,8 @@ extern "C" { * * Must be of type kt_tacocat_main_t. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * * This alters main.setting.status_receive: @@ -48,9 +50,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -91,9 +96,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -124,9 +132,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This does not alter set.status. diff --git a/sources/c/program/kevux/tools/tacocat/main/send.h b/sources/c/program/kevux/tools/tacocat/main/send.h index 1bfe898..e6ff25b 100644 --- a/sources/c/program/kevux/tools/tacocat/main/send.h +++ b/sources/c/program/kevux/tools/tacocat/main/send.h @@ -20,6 +20,8 @@ extern "C" { * * Must be of type kt_tacocat_main_t. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * * This alters main.setting.status_send: @@ -43,9 +45,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -76,9 +81,12 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status, except on interrupt signal. * @param set * The socket set to process. + * * Must not be NULL. * * This alters set.status: @@ -105,6 +113,7 @@ extern "C" { * * @param set * The socket set to process. + * * Must not be NULL. * * The set.time is updated with the generated time string. diff --git a/sources/c/program/kevux/tools/tacocat/main/signal.h b/sources/c/program/kevux/tools/tacocat/main/signal.h index 7bcc972..25f2e38 100644 --- a/sources/c/program/kevux/tools/tacocat/main/signal.h +++ b/sources/c/program/kevux/tools/tacocat/main/signal.h @@ -30,6 +30,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This does not alter main.setting.state.status. * * @return @@ -61,6 +63,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.program.signal_received, setting it to a received signal. * * This alters main.setting.state.status: diff --git a/sources/c/program/kevux/tools/tacocat/main/tacocat.h b/sources/c/program/kevux/tools/tacocat/main/tacocat.h index 314e65e..62bd183 100644 --- a/sources/c/program/kevux/tools/tacocat/main/tacocat.h +++ b/sources/c/program/kevux/tools/tacocat/main/tacocat.h @@ -91,6 +91,8 @@ extern "C" { * @param main * The main program and settings data. * + * Must not be NULL. + * * This alters main.setting.state.status: * F_okay on success. * F_true on success when performing verification and verify passed. diff --git a/sources/c/program/kevux/tools/tacocat/main/thread.h b/sources/c/program/kevux/tools/tacocat/main/thread.h index 0a7fb21..3bde341 100644 --- a/sources/c/program/kevux/tools/tacocat/main/thread.h +++ b/sources/c/program/kevux/tools/tacocat/main/thread.h @@ -26,6 +26,8 @@ extern "C" { * @param main * The program and settings data. * + * Must not be NULL. + * * Must be of type kt_tacocat_main_t. * * @return diff --git a/sources/c/program/kevux/tools/tacocat/tacocat/tacocat.h b/sources/c/program/kevux/tools/tacocat/tacocat/tacocat.h index 4df4bae..35d528c 100644 --- a/sources/c/program/kevux/tools/tacocat/tacocat/tacocat.h +++ b/sources/c/program/kevux/tools/tacocat/tacocat/tacocat.h @@ -10,7 +10,7 @@ #ifndef _kt_tacocat_tacocat_tacocat_h #define _kt_tacocat_tacocat_tacocat_h -// Remove includes. +// Tacocat includes. #include #include -- 1.8.3.1