_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.
f_rip
f_signal
f_thread
+f_time
fl_conversion
fl_directory
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
#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_
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
//
// 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
#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_
#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_
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
#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.
#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.
*
* 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.
* 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).
*/
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 { \
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;
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;
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;
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));
* @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.
* @param date
* The converted date.
*
+ * Must not be NULL.
+ *
* @see f_rip_dynamic_nulless()
* @see fl_conversion_dynamic_partial_to_unsigned_detect()
*
* @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.
* @param date
* The converted date.
*
+ * Must not be NULL.
+ *
* @see clock_gettime()
*
* @see f_utf_is_digit()
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*
* 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.
*
* 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);
* @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.
* @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.
* 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
* 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
* @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.
* @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.
* @param print
* The output structure to print to.
*
+ * Must not be NULL.
+ *
* This does not alter print.custom.setting.state.status.
*
* @return
* @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.
* @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.
*
* This locks, uses, and unlocks the file stream.
*
+ * Must not be NULL.
+ *
* This does not alter print.custom.setting.state.status.
*
* @return
*
* 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.
*
* 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.
*
* 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.
*
* 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_
*
* 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.
*
* 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.
*
* 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.
*
* 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.
*
* 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.
#include <fll/level_0/print.h>
#include <fll/level_0/rip.h>
#include <fll/level_0/signal.h>
+#include <fll/level_0/time.h>
#include <fll/level_0/thread.h>
// FLL-1 includes.
* @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.
*
* This must be of type kt_remove_main_t.
*
+ * Must not be NULL.
+ *
* This does not alter main.setting.state.status.
*
* @return
*
* This must be of type kt_remove_main_t.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*/
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This does not alter main.setting.state.status.
*
* @return
* @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:
* @param main
* The program and settings data.
*
+ * Must not be NULL.
+ *
* Must be of type kt_remove_main_t.
*
* @return
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters setting.state.status:
* F_okay on success.
*
*
* This must be of type kt_tacocat_main_t.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*
*
* 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).
* - 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_
* - 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"
*
* @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);
* @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_
* @param setting
* The program main setting data.
*
+ * Must not be NULL.
+ *
* This does not alter setting.state.status.
*/
#ifndef _di_kt_tacocat_setting_delete_
* 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
extern "C" {
#endif
-
/**
* Process the header and signature strings, extracting the data.
*
* 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:
* @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:
* @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:
*
* 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.
* @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.
*
* 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.
* @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".
* @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.
* @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".
* @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".
* @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".
* @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".
* @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".
* 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
* 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.
* @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.
* @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".
* @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".
* @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.
* @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.
* @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.
*
* 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.
*
* 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.
*
* 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.
*
* 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.
* @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".
* @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".
* @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".
* @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.
* @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.
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*/
* @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:
* @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.
*
* @param set
* The socket set to disconnect all parts of.
*
+ * Must not be NULL.
+ *
* @return
* F_okay on success.
*
* @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.
*
* 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);
* @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.
*
* @param status
* The status to update with the status code from the given set.
*
+ * Must not be NULL.
+ *
* @return
* F_okay on no error.
*
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*/
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This alters main.setting.state.status:
* F_okay on success.
*/
*
* 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:
* @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:
* @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:
* @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.
*
* 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:
* @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:
* @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:
*
* @param set
* The socket set to process.
+ *
* Must not be NULL.
*
* The set.time is updated with the generated time string.
* @param main
* The main program and settings data.
*
+ * Must not be NULL.
+ *
* This does not alter main.setting.state.status.
*
* @return
* @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:
* @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.
* @param main
* The program and settings data.
*
+ * Must not be NULL.
+ *
* Must be of type kt_tacocat_main_t.
*
* @return
#ifndef _kt_tacocat_tacocat_tacocat_h
#define _kt_tacocat_tacocat_tacocat_h
-// Remove includes.
+// Tacocat includes.
#include <program/kevux/tools/tacocat/main/tacocat.h>
#include <program/kevux/tools/tacocat/tacocat/string.h>