]> Kevux Git Server - fll/commitdiff
Feature: Provide program parameter for displaying copyright.
authorKevin Day <kevin@kevux.org>
Fri, 27 Jan 2023 05:34:09 +0000 (23:34 -0600)
committerKevin Day <kevin@kevux.org>
Fri, 27 Jan 2023 05:34:09 +0000 (23:34 -0600)
Provide copyright printing that can be slighty fine tuned using verbosity.

Provide a define (_di_detailed_copyright_) for reducing some of the string printed.

93 files changed:
level_0/f_console/c/console/common.c
level_0/f_console/c/console/common.h
level_3/byte_dump/c/byte_dump.c
level_3/byte_dump/c/byte_dump.h
level_3/byte_dump/c/common.h
level_3/byte_dump/data/build/defines
level_3/control/c/common.h
level_3/control/c/control.c
level_3/control/c/control.h
level_3/control/data/build/defines
level_3/controller/c/common.h
level_3/controller/c/controller.c
level_3/controller/c/controller.h
level_3/controller/data/build/defines
level_3/fake/c/common.h
level_3/fake/c/fake.c
level_3/fake/c/fake.h
level_3/fake/data/build/defines
level_3/firewall/c/common.h
level_3/firewall/c/firewall.c
level_3/firewall/c/firewall.h
level_3/firewall/data/build/defines
level_3/fss_basic_list_read/c/common.h
level_3/fss_basic_list_read/c/fss_basic_list_read.c
level_3/fss_basic_list_read/c/fss_basic_list_read.h
level_3/fss_basic_list_read/data/build/defines
level_3/fss_basic_list_write/c/common.h
level_3/fss_basic_list_write/c/fss_basic_list_write.c
level_3/fss_basic_list_write/c/fss_basic_list_write.h
level_3/fss_basic_list_write/data/build/defines
level_3/fss_basic_read/c/common.h
level_3/fss_basic_read/c/fss_basic_read.c
level_3/fss_basic_read/c/fss_basic_read.h
level_3/fss_basic_read/data/build/defines
level_3/fss_basic_write/c/common.h
level_3/fss_basic_write/c/fss_basic_write.c
level_3/fss_basic_write/c/fss_basic_write.h
level_3/fss_basic_write/data/build/defines
level_3/fss_embedded_list_read/c/common.h
level_3/fss_embedded_list_read/c/fss_embedded_list_read.c
level_3/fss_embedded_list_read/c/fss_embedded_list_read.h
level_3/fss_embedded_list_read/data/build/defines
level_3/fss_embedded_list_write/c/common.h
level_3/fss_embedded_list_write/c/fss_embedded_list_write.c
level_3/fss_embedded_list_write/c/fss_embedded_list_write.h
level_3/fss_embedded_list_write/data/build/defines
level_3/fss_extended_list_read/c/common.h
level_3/fss_extended_list_read/c/fss_extended_list_read.c
level_3/fss_extended_list_read/c/fss_extended_list_read.h
level_3/fss_extended_list_read/data/build/defines
level_3/fss_extended_list_write/c/common.h
level_3/fss_extended_list_write/c/fss_extended_list_write.c
level_3/fss_extended_list_write/c/fss_extended_list_write.h
level_3/fss_extended_list_write/data/build/defines
level_3/fss_extended_read/c/common.h
level_3/fss_extended_read/c/fss_extended_read.c
level_3/fss_extended_read/c/fss_extended_read.h
level_3/fss_extended_read/data/build/defines
level_3/fss_extended_write/c/common.h
level_3/fss_extended_write/c/fss_extended_write.c
level_3/fss_extended_write/c/fss_extended_write.h
level_3/fss_extended_write/data/build/defines
level_3/fss_identify/c/common.h
level_3/fss_identify/c/fss_identify.c
level_3/fss_identify/c/fss_identify.h
level_3/fss_identify/data/build/defines
level_3/fss_payload_read/c/common.h
level_3/fss_payload_read/c/fss_payload_read.c
level_3/fss_payload_read/c/fss_payload_read.h
level_3/fss_payload_read/data/build/defines
level_3/fss_payload_write/c/common.h
level_3/fss_payload_write/c/fss_payload_write.c
level_3/fss_payload_write/c/fss_payload_write.h
level_3/fss_payload_write/data/build/defines
level_3/fss_status_code/c/common.h
level_3/fss_status_code/c/fss_status_code.c
level_3/fss_status_code/c/fss_status_code.h
level_3/fss_status_code/data/build/defines
level_3/iki_read/c/common.h
level_3/iki_read/c/iki_read.c
level_3/iki_read/c/iki_read.h
level_3/iki_read/data/build/defines
level_3/iki_write/c/common.h
level_3/iki_write/c/iki_write.c
level_3/iki_write/c/iki_write.h
level_3/iki_write/data/build/defines
level_3/status_code/c/common.h
level_3/status_code/c/status_code.c
level_3/status_code/data/build/defines
level_3/utf8/c/common.h
level_3/utf8/c/utf8.c
level_3/utf8/c/utf8.h
level_3/utf8/data/build/defines

index 850cdc034cbac8f6be702b2c23a4c272094d2763..266459b96d4e844fa17da159bf63837557e057fe 100644 (file)
@@ -5,6 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_f_console_standard_s_
+  const f_string_static_t f_console_standard_short_copyright_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_copyright_s, 0, F_console_standard_short_copyright_s_length);
   const f_string_static_t f_console_standard_short_dark_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_dark_s, 0, F_console_standard_short_dark_s_length);
   const f_string_static_t f_console_standard_short_debug_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_debug_s, 0, F_console_standard_short_debug_s_length);
   const f_string_static_t f_console_standard_short_error_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_error_s, 0, F_console_standard_short_error_s_length);
@@ -18,6 +19,7 @@ extern "C" {
   const f_string_static_t f_console_standard_short_verbose_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_verbose_s, 0, F_console_standard_short_verbose_s_length);
   const f_string_static_t f_console_standard_short_version_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_short_version_s, 0, F_console_standard_short_version_s_length);
 
+  const f_string_static_t f_console_standard_long_copyright_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_long_copyright_s, 0, F_console_standard_long_copyright_s_length);
   const f_string_static_t f_console_standard_long_dark_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_long_dark_s, 0, F_console_standard_long_dark_s_length);
   const f_string_static_t f_console_standard_long_debug_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_long_debug_s, 0, F_console_standard_long_debug_s_length);
   const f_string_static_t f_console_standard_long_error_s = macro_f_string_static_t_initialize((f_string_t) F_console_standard_long_error_s, 0, F_console_standard_long_error_s_length);
index 13cd1a6df89c514bd449fd75eadc17078a0f31b7..9765fc86d350aa58b83c04e81ae79e24c823f7f3 100644 (file)
@@ -92,11 +92,12 @@ extern "C" {
  *   - verbose: Increase verbosity, print more, in some use cases this could mean printing just about everything.
  *
  * The following are less subjective in interpretation but do allow some flexibility.
- *   - dark:     Do display color intended for dark backgrounds (often the default behavior) when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
- *   - help:     Display the help text. This does not define how the text is displayed only that the text is displayed.
- *   - light:    Do display color intended for light backgrounds when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
- *   - no_color: Do not display color when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
- *   - version:  Should always print only the version number, no colors, but what represents the version number is undefined by this project.
+ *   - copyright: Display copyright, if compiled in (consider combining with quiet, verbose, and normal).
+ *   - dark:      Do display color intended for dark backgrounds (often the default behavior) when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
+ *   - help:      Display the help text. This does not define how the text is displayed only that the text is displayed.
+ *   - light:     Do display color intended for light backgrounds when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
+ *   - no_color:  Do not display color when printing to the console. Other contexts may be acceptable (such as voice inflections, or lack-thereof) for audio.)
+ *   - version:   Should always print only the version number, no colors, but what represents the version number is undefined by this project.
  *
  * The following options are for special purposes:
  *   - status_in:  Is intended to accept the name of an environment variable in which to read the status from.
@@ -108,6 +109,7 @@ extern "C" {
  *     - To avoid problems with the status code after a program is forcibly killed, the status_out environment variable should be cleared at program start.
  */
 #ifndef _di_f_console_standard_s_
+  #define F_console_standard_short_copyright_s  "C"
   #define F_console_standard_short_dark_s       "d"
   #define F_console_standard_short_debug_s      "D"
   #define F_console_standard_short_error_s      "E"
@@ -121,6 +123,7 @@ extern "C" {
   #define F_console_standard_short_verbose_s    "V"
   #define F_console_standard_short_version_s    "v"
 
+  #define F_console_standard_short_copyright_s_length  1
   #define F_console_standard_short_dark_s_length       1
   #define F_console_standard_short_debug_s_length      1
   #define F_console_standard_short_error_s_length      1
@@ -134,6 +137,7 @@ extern "C" {
   #define F_console_standard_short_verbose_s_length    1
   #define F_console_standard_short_version_s_length    1
 
+  #define F_console_standard_long_copyright_s  "copyright"
   #define F_console_standard_long_dark_s       "dark"
   #define F_console_standard_long_debug_s      "debug"
   #define F_console_standard_long_error_s      "error"
@@ -147,6 +151,7 @@ extern "C" {
   #define F_console_standard_long_verbose_s    "verbose"
   #define F_console_standard_long_version_s    "version"
 
+  #define F_console_standard_long_copyright_s_length  9
   #define F_console_standard_long_dark_s_length       4
   #define F_console_standard_long_debug_s_length      5
   #define F_console_standard_long_error_s_length      5
@@ -160,6 +165,7 @@ extern "C" {
   #define F_console_standard_long_verbose_s_length    7
   #define F_console_standard_long_version_s_length    7
 
+  extern const f_string_static_t f_console_standard_short_copyright_s;
   extern const f_string_static_t f_console_standard_short_dark_s;
   extern const f_string_static_t f_console_standard_short_debug_s;
   extern const f_string_static_t f_console_standard_short_error_s;
@@ -173,6 +179,7 @@ extern "C" {
   extern const f_string_static_t f_console_standard_short_verbose_s;
   extern const f_string_static_t f_console_standard_short_version_s;
 
+  extern const f_string_static_t f_console_standard_long_copyright_s;
   extern const f_string_static_t f_console_standard_long_dark_s;
   extern const f_string_static_t f_console_standard_long_debug_s;
   extern const f_string_static_t f_console_standard_long_error_s;
index d67a8d5efb86c019e0e32815aa06ed7a13cde30f..92c911dd583f032764d2405bcaeb73ca380a5f79 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_byte_dump_print_copyright_
+  f_status_t byte_dump_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_byte_dump_print_copyright_
+
 #ifndef _di_byte_dump_print_help_
   f_status_t byte_dump_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, byte_dump_program_name_long_s, byte_dump_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -238,8 +263,6 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[byte_dump_parameter_help_e].result == f_console_result_found_e) {
       byte_dump_print_help(main->output.to, main->context);
 
@@ -252,6 +275,14 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[byte_dump_parameter_copyright_e].result == f_console_result_found_e) {
+      byte_dump_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     if (main->parameters.remaining.used || main->process_pipe) {
       if (main->parameters.array[byte_dump_parameter_width_e].result == f_console_result_found_e) {
         flockfile(main->error.to.stream);
index b520e67c9e5cd29590937888c784e86d607b1c3a..62bddffc19472b56d4cf63cfc0bf08064ab89a03 100644 (file)
@@ -54,6 +54,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_byte_dump_print_copyright_
+  extern f_status_t byte_dump_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_byte_dump_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index 266cc52e7b74ab9e5a765268a598cf82d1b1d3ec..84fbde1d2a578b8a27d199a09902b47849d59c8c 100644 (file)
@@ -274,6 +274,7 @@ extern "C" {
 
   enum {
     byte_dump_parameter_help_e,
+    byte_dump_parameter_copyright_e,
     byte_dump_parameter_light_e,
     byte_dump_parameter_dark_e,
     byte_dump_parameter_no_color_e,
@@ -308,6 +309,7 @@ extern "C" {
   #define byte_dump_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -335,7 +337,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(0, byte_dump_long_classic_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define byte_dump_total_parameters_d 26
+  #define byte_dump_total_parameters_d 27
 #endif // _di_byte_dump_parameters_
 
 #ifdef __cplusplus
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..5732619cbbcaf8f4d0d6c40392cadf576efbc372 100644 (file)
@@ -1,2 +1,4 @@
 # fss-0000
 
+_di_byte_dump_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 2ee3a139b16a9d96ea3c77a0664b29d9ba07f12b..e4f9775dfb37640928fb0147074d5734ca23e5c8 100644 (file)
@@ -95,6 +95,7 @@ extern "C" {
 
   enum {
     control_parameter_help_e = 0,
+    control_parameter_copyright_e,
     control_parameter_light_e,
     control_parameter_dark_e,
     control_parameter_no_color_e,
@@ -114,6 +115,7 @@ extern "C" {
   #define control_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -129,7 +131,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(control_short_socket_s.string, control_long_socket_s.string, 0, 1, f_console_type_normal_e), \
     }
 
-  #define control_total_parameters_d 14
+  #define control_total_parameters_d 15
 #endif // _di_control_parameters_
 
 /**
index 5b57bcd6eef9b648fab1647a34a6144804a8565d..883de1bf45323408dfd6291124900be5d48b2a8b 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_control_print_copyright_
+  f_status_t control_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_control_print_copyright_
+
 #ifndef _di_control_print_help_
   f_status_t control_print_help(const fll_program_data_t * const main) {
 
@@ -135,8 +159,6 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[control_parameter_help_e].result == f_console_result_found_e) {
       control_print_help(main);
 
@@ -149,6 +171,14 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[control_parameter_copyright_e].result == f_console_result_found_e) {
+      control_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     {
       uint8_t ids[] = {
         control_parameter_name_e,
index 2d4f23a39d861f10dc24dc846a24545cedf14159..d1892320caa082a7c814c7a92c7132d8ba1d025a 100644 (file)
@@ -58,6 +58,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_control_print_copyright_
+  extern f_status_t control_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_control_print_copyright_
+
+/**
  * Print help.
  *
  * @param main
index d44a0dec7574868e57dafe9b06419569b7772733..d3a32fd3ab46e6051c77c00bd532848b3638369c 100644 (file)
@@ -1,5 +1,7 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
+
 _controller_as_init_ The controller program is compiled as an init replacement and this control program should treat it as such.
 _override_controller_name_socket_ Use this as the default custom file name representing the controller program socket.
 _override_controller_name_socket_length_ The number of bytes representing the string in _override_controller_name_socket_ (not including the terminating NULL).
index 2c3075021716d5224676298897b9061ea54f6d65..cc2871e7bc1a556d0c0352c0adc91f96e906ded7 100644 (file)
@@ -117,6 +117,7 @@ extern "C" {
 
   enum {
     controller_parameter_help_e,
+    controller_parameter_copyright_e,
     controller_parameter_light_e,
     controller_parameter_dark_e,
     controller_parameter_no_color_e,
@@ -142,6 +143,7 @@ extern "C" {
   #define controller_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -163,7 +165,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(controller_short_validate_s.string, controller_long_validate_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define controller_total_parameters_d 20
+  #define controller_total_parameters_d 21
 #endif // _di_controller_parameters_
 
 /**
index a88cda612d458a0d17c9a588224ef78d34df8ca7..9c1852def46ffa7893dcf3533f131555c8919f2d 100644 (file)
 extern "C" {
 #endif
 
+#ifndef _di_controller_print_copyright_
+  f_status_t controller_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_controller_print_copyright_
+
 #ifndef _di_controller_print_help_
   f_status_t controller_print_help(controller_main_t * const main) {
 
@@ -143,10 +167,6 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[controller_parameter_help_e].result == f_console_result_found_e) {
       controller_print_help(main);
 
@@ -163,6 +183,16 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[controller_parameter_copyright_e].result == f_console_result_found_e) {
+      controller_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     controller_setting_t setting = controller_setting_t_initialize;
 
     setting.control.server.address = (struct sockaddr *) &setting.control.address;
index 69c5971322f1ce73f6f65af4409e5ae38fba2111..7ac95eaf71c8546c7b08a4c289d344bd0b82b8b2 100644 (file)
@@ -84,6 +84,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_controller_print_copyright_
+  extern f_status_t controller_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_controller_print_copyright_
+
+/**
  * Print help.
  *
  * @param main
index 63c654fad82d5526199dfe4630d592baa90f1c81..06586059be4768c4526c576e48ce146741585c2f 100644 (file)
@@ -1,6 +1,8 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
 _di_libcap_ Disable libcap support, allow for compiling and linking without libcap (-lcap).
+
 _libcap_legacy_only_ Disable functionality provided by later versions of libcap (2.43 and later).
 _controller_as_init_ Build the program to run as if it were "init" by default, including displaying the program name as "Init Program" or "Init". This changes the main.c file only, leaving the library shareable between both "controller" and "init".
 _override_controller_default_engine_ Provide a custom scripting engine name string to execute (such as php).
index 41ef1ac1cc84deebe2efc2deaabe559099e46bf7..ba6a0ed0e85a3a617ae3424c3dd8ba344d879a87 100644 (file)
@@ -379,6 +379,7 @@ extern "C" {
 
   enum {
     fake_parameter_help_e,
+    fake_parameter_copyright_e,
     fake_parameter_light_e,
     fake_parameter_dark_e,
     fake_parameter_no_color_e,
@@ -416,6 +417,7 @@ extern "C" {
   #define fake_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -446,7 +448,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(0, 0, fake_other_operation_skeleton_s.string, 0, f_console_type_other_e), \
     }
 
-  #define fake_total_parameters_d 29
+  #define fake_total_parameters_d 30
 #endif // _di_fake_parameters_
 
 #ifdef __cplusplus
index 3cda2f869ce34525f5bdc96404a0b3b2f2e77dd4..093e88b91d2643a09ccdfb01a702a3c8d241b696 100644 (file)
 extern "C" {
 #endif
 
+#ifndef _di_fake_print_copyright_
+  f_status_t fake_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fake_print_copyright_
+
 #ifndef _di_fake_print_help_
   f_status_t fake_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -20,16 +44,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fake_program_name_long_s, fake_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -182,6 +207,12 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[fake_parameter_copyright_e].result == f_console_result_found_e) {
+      fake_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
     status = F_none;
 
     fake_data_t data = fake_data_t_initialize;
index d1be40a10253ee4071b6761881c801b9b872d5d7..2f2515834d8473a06d4141544b7b5023c94994d8 100644 (file)
@@ -97,6 +97,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fake_print_copyright_
+  extern f_status_t fake_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fake_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index 427a9c7f6e8260f06f0fa66ee81b02ef567747b2..c2a94328f27977177288e3a60751b8124e933b98 100644 (file)
@@ -1,6 +1,8 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
 _di_libcap_ Disable libcap support, allow for compiling and linking without libcap (-lcap).
+
 _libcap_legacy_only_ Disable functionality provided by later versions of libcap (2.43 and later).
 _pthread_attr_unsupported_ Disable non-portable functionality associated with pthread_attr.
 _pthread_sigqueue_unsupported_ Disable GNU specific sigqueue().
index 708e1fe8a3a76c0691ef28a87789137d2356b94a..3572c56e141ec37c8bd95617c8e71b03b270d761 100644 (file)
@@ -348,6 +348,7 @@ extern "C" {
 
   enum {
     firewall_parameter_help_e,
+    firewall_parameter_copyright_e,
     firewall_parameter_light_e,
     firewall_parameter_dark_e,
     firewall_parameter_no_color_e,
@@ -385,6 +386,7 @@ extern "C" {
   #define firewall_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -401,7 +403,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(0, 0, firewall_command_show_s.string, 0, f_console_type_other_e), \
     }
 
-  #define firewall_total_parameters_d 15
+  #define firewall_total_parameters_d 16
 #endif // _di_firewall_defines_
 
 #ifdef __cplusplus
index 49fa48cb8eb2960181a19b7fdd3d8da6b72fb65a..9cf6efa510cbea94b02cb540f3047c5b7cea6a75 100644 (file)
 extern "C" {
 #endif
 
+#ifndef _di_firewall_print_copyright_
+  f_status_t firewall_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_firewall_print_copyright_
+
 #ifndef _di_firewall_print_help_
   f_status_t firewall_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -19,16 +43,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, firewall_program_name_long_s, firewall_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     fl_print_format("%r%r %[Commands:%] ", file.stream, f_string_eol_s, f_string_eol_s, context.set.important, context.set.important);
     fl_print_format("%r  %[%r%]    Turn on the firewall.", file.stream, f_string_eol_s, context.set.standout, firewall_command_start_s, context.set.standout);
@@ -117,12 +142,6 @@ extern "C" {
       }
     }
 
-    firewall_data_t data = firewall_data_t_initialize;
-    data.main = main;
-    data.argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[firewall_parameter_help_e].result == f_console_result_found_e) {
       firewall_print_help(main->output.to, main->context);
 
@@ -135,7 +154,19 @@ extern "C" {
       return F_none;
     }
 
-    // now determine which command was placed first
+    if (main->parameters.array[firewall_parameter_copyright_e].result == f_console_result_found_e) {
+      firewall_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    firewall_data_t data = firewall_data_t_initialize;
+    data.main = main;
+    data.argv = main->parameters.arguments.array;
+
+    // Now determine which command was placed first
     bool found_command = F_false;
     unsigned int command = 0;
 
index 13347f68c6b4be8ee07e8201616bdf07ae5d2431..fc3273d2cd4b1ee32d56fe729f60c558a1a5f56c 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_firewall_print_copyright_
+  extern f_status_t firewall_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_firewall_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index 427a9c7f6e8260f06f0fa66ee81b02ef567747b2..c2a94328f27977177288e3a60751b8124e933b98 100644 (file)
@@ -1,6 +1,8 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
 _di_libcap_ Disable libcap support, allow for compiling and linking without libcap (-lcap).
+
 _libcap_legacy_only_ Disable functionality provided by later versions of libcap (2.43 and later).
 _pthread_attr_unsupported_ Disable non-portable functionality associated with pthread_attr.
 _pthread_sigqueue_unsupported_ Disable GNU specific sigqueue().
index eac7eab0396cc2c395bfc2ce49b4b2bd76d96e01..1e4b680ddf383055ade502f477d34878bff1b2ac 100644 (file)
@@ -186,6 +186,7 @@ extern "C" {
 
   enum {
     fss_basic_list_read_parameter_help_e,
+    fss_basic_list_read_parameter_copyright_e,
     fss_basic_list_read_parameter_light_e,
     fss_basic_list_read_parameter_dark_e,
     fss_basic_list_read_parameter_no_color_e,
@@ -215,6 +216,7 @@ extern "C" {
   #define fss_basic_list_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -240,7 +242,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_basic_list_read_short_trim_s.string, fss_basic_list_read_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_basic_list_read_total_parameters_d 24
+  #define fss_basic_list_read_total_parameters_d 25
 #endif // _di_fss_basic_list_read_parameters_
 
 /**
index 4d801a0512c041706cebc591a5e8689d8e3080cb..de9a570c3f08dcbd45f6a0f217dfb236eeae1ccf 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_basic_list_read_print_copyright_
+  f_status_t fss_basic_list_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_basic_list_read_print_copyright_
+
 #ifndef _di_fss_basic_list_read_print_help_
   f_status_t fss_basic_list_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -14,16 +38,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_basic_list_read_program_name_long_s, fss_basic_list_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -193,20 +218,26 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_basic_list_read_parameter_help_e].result == f_console_result_found_e) {
       fss_basic_list_read_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_basic_list_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_basic_list_read_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_basic_list_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_basic_list_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     // Provide a range designating where within the buffer a particular file exists, using a statically allocated array.
     fss_basic_list_read_file_t files_array[main->parameters.remaining.used + 1];
     fss_basic_list_read_data_t data = fss_basic_list_read_data_t_initialize;
index 001777a846e899ac65f370558b6a1422633771bb..85d8544262dcad43c54cf158974763f53fb51024 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_basic_list_read_print_copyright_
+  extern f_status_t fss_basic_list_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_basic_list_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index b56f61a98abb79471495c7990db95afd5f8bac53..fba1fc60d2082a6c34acf2ab594e79220e79d89b 100644 (file)
@@ -156,6 +156,7 @@ extern "C" {
 
   enum {
     fss_basic_list_write_parameter_help_e,
+    fss_basic_list_write_parameter_copyright_e,
     fss_basic_list_write_parameter_light_e,
     fss_basic_list_write_parameter_dark_e,
     fss_basic_list_write_parameter_no_color_e,
@@ -180,6 +181,7 @@ extern "C" {
   #define fss_basic_list_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -200,7 +202,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_basic_list_write_short_trim_s.string, fss_basic_list_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_basic_list_write_total_parameters_d 19
+  #define fss_basic_list_write_total_parameters_d 20
 #endif // _di_fss_basic_list_write_parameters_
 
 #ifdef __cplusplus
index 854cab1bb37260c14b37270c2ace6343853c06c3..f81fd53e5e4bbc3e35ef119ceab8f3e13464b40a 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_basic_list_write_print_copyright_
+  f_status_t fss_basic_list_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_basic_list_write_print_copyright_
+
 #ifndef _di_fss_basic_list_write_print_help_
   f_status_t fss_basic_list_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_basic_list_write_program_name_long_s, fss_basic_list_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -132,22 +157,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_basic_list_write_parameter_help_e].result == f_console_result_found_e) {
       fss_basic_list_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_basic_list_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_basic_list_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_basic_list_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_basic_list_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
+    status = F_none;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 320dbc30cbe0db760142157a2540710f1f391e14..a34817619bc7c20557909572aaa70acc655288dc 100644 (file)
@@ -47,6 +47,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_basic_list_write_print_copyright_
+  extern f_status_t fss_basic_list_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_basic_list_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 20db50c3c155b3b2ffd7aab0d1cb362df33ef157..3ba5dd48c5b1fd50cec73c4d3a78701717706dca 100644 (file)
@@ -186,6 +186,7 @@ extern "C" {
 
   enum {
     fss_basic_read_parameter_help_e,
+    fss_basic_read_parameter_copyright_e,
     fss_basic_read_parameter_light_e,
     fss_basic_read_parameter_dark_e,
     fss_basic_read_parameter_no_color_e,
@@ -215,6 +216,7 @@ extern "C" {
   #define fss_basic_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
index 35d34a8648a9867f7cd0bb54ceb75e375066d87c..e0caf3494423903a923513fd23b5a5652bbb0ba5 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_basic_read_print_copyright_
+  f_status_t fss_basic_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_basic_read_print_copyright_
+
 #ifndef _di_fss_basic_read_print_help_
   f_status_t fss_basic_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -14,16 +38,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_basic_read_program_name_long_s, fss_basic_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -193,20 +218,26 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_basic_read_parameter_help_e].result == f_console_result_found_e) {
       fss_basic_read_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_basic_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_basic_read_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_basic_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_basic_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     // Provide a range designating where within the buffer a particular file exists, using a statically allocated array.
     fss_basic_read_file_t files_array[main->parameters.remaining.used + 1];
     fss_basic_read_data_t data = fss_basic_read_data_t_initialize;
index 7031f31dc8e178cb93f037a2d6f18f3106bdfd04..d94a16c821e3a0adc8850a35b0c9e5294513b28d 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_basic_read_print_copyright_
+  extern f_status_t fss_basic_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_basic_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 873500232c48ba438248d9137d45b2e9b831eb92..67eae29bc6f1a8ef66a259b121293df7cf85c966 100644 (file)
@@ -156,6 +156,7 @@ extern "C" {
 
   enum {
     fss_basic_write_parameter_help_e,
+    fss_basic_write_parameter_copyright_e,
     fss_basic_write_parameter_light_e,
     fss_basic_write_parameter_dark_e,
     fss_basic_write_parameter_no_color_e,
@@ -180,6 +181,7 @@ extern "C" {
   #define fss_basic_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -200,7 +202,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_basic_write_short_trim_s.string, fss_basic_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_basic_write_total_parameters_d 18
+  #define fss_basic_write_total_parameters_d 19
 #endif // _di_fss_basic_write_parameters_
 
 #ifdef __cplusplus
index ea614c8f5ee937a4d93ccd99c18df1ad1d2ff16d..ee14bc40c28fcf1d27fde965bddfe5221ef53505 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_basic_write_print_copyright_
+  f_status_t fss_basic_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_basic_write_print_copyright_
+
 #ifndef _di_fss_basic_write_print_help_
   f_status_t fss_basic_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_basic_write_program_name_long_s, fss_basic_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -132,22 +157,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_basic_write_parameter_help_e].result == f_console_result_found_e) {
       fss_basic_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_basic_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_basic_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_basic_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_basic_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 594f265a719b2ba50499938ca20c1e2fc21d2e1c..a0e6938b4795474d26dc4a223af27bc35d85896f 100644 (file)
@@ -48,6 +48,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_basic_write_print_copyright_
+  extern f_status_t fss_basic_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_basic_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 207c0869e6b2166dbb57fa4404255311a92aa0c2..91e6b4607381c9a7e17fc9980598d71409ad3665 100644 (file)
@@ -186,6 +186,7 @@ extern "C" {
 
   enum {
     fss_embedded_list_read_parameter_help_e,
+    fss_embedded_list_read_parameter_copyright_e,
     fss_embedded_list_read_parameter_light_e,
     fss_embedded_list_read_parameter_dark_e,
     fss_embedded_list_read_parameter_no_color_e,
@@ -215,6 +216,7 @@ extern "C" {
   #define fss_embedded_list_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -240,7 +242,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_embedded_list_read_short_trim_s.string, fss_embedded_list_read_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_embedded_list_read_total_parameters_d 24
+  #define fss_embedded_list_read_total_parameters_d 25
 #endif // _di_fss_embedded_list_read_parameters_
 
 /**
index 54b4c6c092403b1ea4f3bb0f3a73655868791955..31e883b56da9594d8fec1dade562975146438852 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_embedded_list_read_print_copyright_
+  f_status_t fss_embedded_list_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_embedded_list_read_print_copyright_
+
 #ifndef _di_fss_embedded_list_read_print_help_
   f_status_t fss_embedded_list_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -14,16 +38,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_embedded_list_read_program_name_long_s, fss_embedded_list_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -192,28 +217,30 @@ extern "C" {
       }
     }
 
-    fss_embedded_list_read_data_t data = fss_embedded_list_read_data_t_initialize;
-    data.main = main;
-    data.argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_embedded_list_read_parameter_help_e].result == f_console_result_found_e) {
       fss_embedded_list_read_print_help(main->output.to, main->context);
 
-      fss_embedded_list_read_data_delete(&data);
-
       return F_none;
     }
 
     if (main->parameters.array[fss_embedded_list_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_embedded_list_read_program_version_s);
 
-      fss_embedded_list_read_data_delete(&data);
+      return F_none;
+    }
+
+    if (main->parameters.array[fss_embedded_list_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_embedded_list_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
 
       return F_none;
     }
 
+    status = F_none;
+
+    fss_embedded_list_read_data_t data = fss_embedded_list_read_data_t_initialize;
+    data.main = main;
+    data.argv = main->parameters.arguments.array;
+
     if (F_status_is_error_not(status) && main->parameters.array[fss_embedded_list_read_parameter_total_e].result == f_console_result_found_e) {
       if (main->parameters.array[fss_embedded_list_read_parameter_columns_e].result == f_console_result_found_e) {
         if (main->error.verbosity != f_console_verbosity_quiet_e) {
index 74bfd90d12b7be7a568bcc7f7628e6436db77686..2b44f1979432c358f4a8cf3a5c49ba4eba8022ac 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_embedded_list_read_print_copyright_
+  extern f_status_t fss_embedded_list_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_embedded_list_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 38236800ee8af36b7b1bc5776807e31656924b55..f931202c1e4b341ecc684024b2b5cc2f5fac0c16 100644 (file)
@@ -156,6 +156,7 @@ extern "C" {
 
   enum {
     fss_embedded_list_write_parameter_help_e,
+    fss_embedded_list_write_parameter_copyright_e,
     fss_embedded_list_write_parameter_light_e,
     fss_embedded_list_write_parameter_dark_e,
     fss_embedded_list_write_parameter_no_color_e,
@@ -180,6 +181,7 @@ extern "C" {
   #define fss_embedded_list_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -200,7 +202,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_embedded_list_write_short_trim_s.string, fss_embedded_list_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_embedded_list_write_total_parameters_d 19
+  #define fss_embedded_list_write_total_parameters_d 20
 #endif // _di_fss_embedded_list_write_parameters_
 
 #ifdef __cplusplus
index 32e8f2abeab477e3e6b1cde25de0d4bfd79d7049..116162a266b6d9ab54b7b22b9fedfca58942a100 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_embedded_list_write_print_copyright_
+  f_status_t fss_embedded_list_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_embedded_list_write_print_copyright_
+
 #ifndef _di_fss_embedded_list_write_print_help_
   f_status_t fss_embedded_list_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_embedded_list_write_program_name_long_s, fss_embedded_list_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -135,22 +160,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_embedded_list_write_parameter_help_e].result == f_console_result_found_e) {
       fss_embedded_list_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_embedded_list_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_embedded_list_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_embedded_list_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_embedded_list_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 69a9565b365cc8b14e8a494aedd68314a390cddf..fe91b160e70741de988c0c249786900454d95f56 100644 (file)
@@ -48,6 +48,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_embedded_list_write_print_copyright_
+  extern f_status_t fss_embedded_list_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_embedded_list_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 57512684bbe657af421593cc50c962082c6278b9..c2a9d0b0b9d60d9e1cd09414f0c1163a27c0fdb3 100644 (file)
@@ -186,6 +186,7 @@ extern "C" {
 
   enum {
     fss_extended_list_read_parameter_help_e,
+    fss_extended_list_read_parameter_copyright_e,
     fss_extended_list_read_parameter_light_e,
     fss_extended_list_read_parameter_dark_e,
     fss_extended_list_read_parameter_no_color_e,
@@ -215,6 +216,7 @@ extern "C" {
   #define fss_extended_list_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -240,7 +242,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_extended_list_read_short_trim_s.string, fss_extended_list_read_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_extended_list_read_total_parameters_d 24
+  #define fss_extended_list_read_total_parameters_d 25
 #endif // _di_fss_extended_list_read_parameters_
 
 /**
index 1b645387c1e8f56b67d071112c61f4a3a2d36f7e..35c4982ccd700fc00e585967b8313a40c79cfdcd 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_extended_list_read_print_copyright_
+  f_status_t fss_extended_list_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_extended_list_read_print_copyright_
+
 #ifndef _di_fss_extended_list_read_print_help_
   f_status_t fss_extended_list_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -14,16 +38,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_extended_list_read_program_name_long_s, fss_extended_list_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -193,20 +218,26 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_extended_list_read_parameter_help_e].result == f_console_result_found_e) {
       fss_extended_list_read_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_extended_list_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_extended_list_read_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_extended_list_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_extended_list_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     // Provide a range designating where within the buffer a particular file exists, using a statically allocated array.
     fss_extended_list_read_file_t files_array[main->parameters.remaining.used + 1];
     fss_extended_list_read_data_t data = fss_extended_list_read_data_t_initialize;
index 1a8a67d2f113864bfc07e31893434e39039ef166..8a3509f18640f37d0bc711d945199dcd05f12854 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_extended_list_read_print_copyright_
+  extern f_status_t fss_extended_list_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_extended_list_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 66b04583261684faf2103e804d004cdf37dbe77b..7354f4fa1447e9b241da5646ec2f3baf0905f29c 100644 (file)
@@ -156,6 +156,7 @@ extern "C" {
 
   enum {
     fss_extended_list_write_parameter_help_e,
+    fss_extended_list_write_parameter_copyright_e,
     fss_extended_list_write_parameter_light_e,
     fss_extended_list_write_parameter_dark_e,
     fss_extended_list_write_parameter_no_color_e,
@@ -180,6 +181,7 @@ extern "C" {
   #define fss_extended_list_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -200,7 +202,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_extended_list_write_short_trim_s.string, fss_extended_list_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_extended_list_write_total_parameters_d 19
+  #define fss_extended_list_write_total_parameters_d 20
 #endif // _di_fss_extended_list_write_parameters_
 
 /**
index d74a4ebcd79f84d998c6f7395ec1848211bf68cd..f07428623a7fb5c667207d4407a0cd6987096042 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_extended_list_write_print_copyright_
+  f_status_t fss_extended_list_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_extended_list_write_print_copyright_
+
 #ifndef _di_fss_extended_list_write_print_help_
   f_status_t fss_extended_list_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_extended_list_write_program_name_long_s, fss_extended_list_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -135,22 +160,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_extended_list_write_parameter_help_e].result == f_console_result_found_e) {
       fss_extended_list_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_extended_list_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_extended_list_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_extended_list_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_extended_list_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 6a96c0bad3dabea6e1a54f8ca0c9b142f67efb6c..8e6d08a5a9d5ade5a7f0e7681cbe9a28a9495bc7 100644 (file)
@@ -48,6 +48,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_extended_list_write_print_copyright_
+  extern f_status_t fss_extended_list_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_extended_list_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 9db3db49b8aa534d30196a4a45b60a0c9c833a47..341815a4b16c5e84308c27af32290f5d4a631819 100644 (file)
@@ -186,6 +186,7 @@ extern "C" {
 
   enum {
     fss_extended_read_parameter_help_e,
+    fss_extended_read_parameter_copyright_e,
     fss_extended_read_parameter_light_e,
     fss_extended_read_parameter_dark_e,
     fss_extended_read_parameter_no_color_e,
@@ -215,6 +216,7 @@ extern "C" {
   #define fss_extended_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -240,7 +242,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_extended_read_short_trim_s.string, fss_extended_read_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_extended_read_total_parameters_d 24
+  #define fss_extended_read_total_parameters_d 25
 #endif // _di_fss_extended_read_parameters_
 
 /**
index 0b560d61257da86c29c710fda79638f13031b625..1eace8f8dc1760396d9501ebedfc8720a579e4ad 100644 (file)
@@ -7,6 +7,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_extended_read_print_copyright_
+  f_status_t fss_extended_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_extended_read_print_copyright_
+
 #ifndef _di_fss_extended_read_print_help_
   f_status_t fss_extended_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -14,16 +38,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_extended_read_program_name_long_s, fss_extended_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -193,20 +218,26 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_extended_read_parameter_help_e].result == f_console_result_found_e) {
       fss_extended_read_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_extended_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_extended_read_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_extended_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_extended_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     // Provide a range designating where within the buffer a particular file exists, using a statically allocated array.
     fss_extended_read_file_t files_array[main->parameters.remaining.used + 1];
     fss_extended_read_data_t data = fss_extended_read_data_t_initialize;
index 740ffc2d0b4283c8f103cb42212dd50a78f9c316..4875792d9bad4ce7f5a1d621f0eb3a78610828a4 100644 (file)
@@ -55,6 +55,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_extended_read_print_copyright_
+  extern f_status_t fss_extended_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_extended_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index d551c4c747bd0fd33c7f34ed37c4921a3803045f..f3b27c285ad8c22a98d7cb69409520548a1477c3 100644 (file)
@@ -156,6 +156,7 @@ extern "C" {
 
   enum {
     fss_extended_write_parameter_help_e,
+    fss_extended_write_parameter_copyright_e,
     fss_extended_write_parameter_light_e,
     fss_extended_write_parameter_dark_e,
     fss_extended_write_parameter_no_color_e,
@@ -180,6 +181,7 @@ extern "C" {
   #define fss_extended_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -200,7 +202,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_extended_write_short_trim_s.string, fss_extended_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_extended_write_total_parameters_d 18
+  #define fss_extended_write_total_parameters_d 19
 #endif // _di_fss_extended_write_parameters_
 
 #ifdef __cplusplus
index ec25604d867ceb8f9e29f7c97c9c888011eea679..fb33a8cbc9133d0effe489083b2d24aa145e47e6 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_extended_write_print_copyright_
+  f_status_t fss_extended_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_extended_write_print_copyright_
+
 #ifndef _di_fss_extended_write_print_help_
   f_status_t fss_extended_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_extended_write_program_name_long_s, fss_extended_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -132,22 +157,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_extended_write_parameter_help_e].result == f_console_result_found_e) {
       fss_extended_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_extended_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_extended_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_extended_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_extended_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 952cf1c14cc50e3e72ca811f4bef424d082b7e15..860b761d1f796a45e70da3955a2e533a593e1083 100644 (file)
@@ -48,6 +48,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_extended_write_print_copyright_
+  extern f_status_t fss_extended_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_extended_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 14bdb2044ec6c9feb1df478500b2aca31a46fe25..5f4aa87556f287ab02cb0d93f6faf9743cbf944b 100644 (file)
@@ -108,6 +108,7 @@ extern "C" {
 
   enum {
     fss_identify_parameter_help_e,
+    fss_identify_parameter_copyright_e,
     fss_identify_parameter_light_e,
     fss_identify_parameter_dark_e,
     fss_identify_parameter_no_color_e,
@@ -128,6 +129,7 @@ extern "C" {
   #define fss_identify_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -144,7 +146,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_identify_short_total_s.string, fss_identify_long_total_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_identify_total_parameters_d 15
+  #define fss_identify_total_parameters_d 16
 #endif // _di_fss_identify_parameters_
 
 #ifdef __cplusplus
index 4d4fd44f096045da39943abb59246815d259c1d1..21ab343ea75b1f33b9141d110c443386f073151b 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_identify_print_copyright_
+  f_status_t fss_identify_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_identify_print_copyright_
+
 #ifndef _di_fss_identify_print_help_
   f_status_t fss_identify_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_identify_program_name_long_s, fss_identify_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -140,8 +165,6 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_identify_parameter_help_e].result == f_console_result_found_e) {
       fss_identify_print_help(main->output.to, main->context);
 
@@ -154,6 +177,14 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[fss_identify_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_identify_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     fss_identify_data_t data = fss_identify_data_t_initialize;
 
     data.argv = main->parameters.arguments.array;
index 09f026b042c1ce3ea56b750340daab11d145db62..d3c244c8f04e5e1a24921a0a92b6d56058aec400 100644 (file)
@@ -53,6 +53,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_identify_print_copyright_
+  extern f_status_t fss_identify_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_identify_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 914d2717b7ed9829cce9d990090c10ecd3847821..3d76dc8c849c4257e0cd216d43c874417d90482d 100644 (file)
@@ -180,6 +180,7 @@ extern "C" {
 
   enum {
     fss_payload_read_parameter_help_e,
+    fss_payload_read_parameter_copyright_e,
     fss_payload_read_parameter_light_e,
     fss_payload_read_parameter_dark_e,
     fss_payload_read_parameter_no_color_e,
@@ -209,6 +210,7 @@ extern "C" {
   #define fss_payload_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -234,7 +236,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_payload_read_short_trim_s.string, fss_payload_read_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_payload_read_total_parameters_d 24
+  #define fss_payload_read_total_parameters_d 25
 #endif // _di_fss_payload_read_parameters_
 
 /**
index 7482d83e36cfff49a60c1f65a0f28fc09eec23c7..68001da894ca355343a22806b8f1f29c96be4ee6 100644 (file)
@@ -16,6 +16,30 @@ extern "C" {
   const f_string_static_t fss_payload_read_program_name_long_s = macro_f_string_static_t_initialize(FSS_PAYLOAD_READ_program_name_long_s, 0, FSS_PAYLOAD_READ_program_name_long_s_length);
 #endif // _di_fss_payload_read_program_name_
 
+#ifndef _di_fss_payload_read_print_copyright_
+  f_status_t fss_payload_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_payload_read_print_copyright_
+
 #ifndef _di_fss_payload_read_print_help_
   f_status_t fss_payload_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -23,16 +47,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_payload_read_program_name_long_s, fss_payload_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -212,20 +237,26 @@ extern "C" {
       }
     }
 
-    status = F_none;
-
     if (main->parameters.array[fss_payload_read_parameter_help_e].result == f_console_result_found_e) {
       fss_payload_read_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_payload_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_payload_read_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_payload_read_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_payload_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
     // Provide a range designating where within the buffer a particular file exists, using a statically allocated array.
     fss_payload_read_file_t files_array[main->parameters.remaining.used + 1];
     fss_payload_read_data_t data = fss_payload_read_data_t_initialize;
index a67879754e8ef638a3b8750f458f9d9e9c8266eb..ec7cbed892e87b596d1eabb95eea52d4535ca053 100644 (file)
@@ -56,6 +56,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_payload_read_print_copyright_
+  extern f_status_t fss_payload_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_payload_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index d1875bf94a7d8a90295f4e1419ee7d542d17bfd3..33edc6adbeacb3d666abb499adb5deede170aa96 100644 (file)
@@ -150,6 +150,7 @@ extern "C" {
 
   enum {
     fss_payload_write_parameter_help_e,
+    fss_payload_write_parameter_copyright_e,
     fss_payload_write_parameter_light_e,
     fss_payload_write_parameter_dark_e,
     fss_payload_write_parameter_no_color_e,
@@ -174,6 +175,7 @@ extern "C" {
   #define fss_payload_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, F_false, f_console_type_inverse_e), \
@@ -194,7 +196,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_payload_write_short_trim_s.string, fss_payload_write_long_trim_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_payload_write_total_parameters_d 19
+  #define fss_payload_write_total_parameters_d 20
 #endif // _di_fss_payload_write_parameters_
 
 #ifdef __cplusplus
index e4ec49410eb335946ccb760deed4579d37baf8e1..0dec0035f8f1c587cfdf0434f60d36e13d1aa485 100644 (file)
@@ -15,6 +15,30 @@ extern "C" {
   const f_string_static_t fss_payload_write_program_name_long_s = macro_f_string_static_t_initialize(FSS_PAYLOAD_WRITE_program_name_long_s, 0, FSS_PAYLOAD_WRITE_program_name_long_s_length);
 #endif // _di_fss_payload_write_program_name_
 
+#ifndef _di_fss_payload_write_print_copyright_
+  f_status_t fss_payload_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_payload_write_print_copyright_
+
 #ifndef _di_fss_payload_write_print_help_
   f_status_t fss_payload_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -22,16 +46,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_payload_write_program_name_long_s, fss_payload_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -141,22 +166,28 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_payload_write_parameter_help_e].result == f_console_result_found_e) {
       fss_payload_write_print_help(main->output.to, main->context);
 
-      return status;
+      return F_none;
     }
 
     if (main->parameters.array[fss_payload_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, fss_payload_write_program_version_s);
 
-      return status;
+      return F_none;
     }
 
+    if (main->parameters.array[fss_payload_write_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_payload_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     f_file_t output = f_file_t_initialize;
 
     output.id = F_type_descriptor_output_d;
index 3e7c15eaaa5b8fc92192bc2d1e6e8351dc23b645..133d6fd0c0c8d3023b65226acb86ca5af2e2b189 100644 (file)
@@ -48,6 +48,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_payload_write_print_copyright_
+  extern f_status_t fss_payload_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_payload_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 241df2dd3ad4a52d86b79fb68987592238330b71..559e4ff02eceda91a1133d0de437d36a22c0d8ec 100644 (file)
@@ -112,6 +112,7 @@ extern "C" {
 
   enum {
     fss_status_code_parameter_help_e,
+    fss_status_code_parameter_copyright_e,
     fss_status_code_parameter_light_e,
     fss_status_code_parameter_dark_e,
     fss_status_code_parameter_no_color_e,
@@ -131,6 +132,7 @@ extern "C" {
   #define fss_status_code_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -146,7 +148,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(fss_status_code_short_number_s.string, fss_status_code_long_number_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define fss_status_code_total_parameters_d 14
+  #define fss_status_code_total_parameters_d 15
 #endif // _di_fss_status_code_defines_
 
 #ifdef __cplusplus
index 75c8ba94abe22c51bd2ccffdddfb62765465b637..b12d8defa3f31e8c3f7c5c5205173ae99086dc57 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_fss_status_code_print_copyright_
+  f_status_t fss_status_code_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_fss_status_code_print_copyright_
+
 #ifndef _di_fss_status_code_print_help_
   f_status_t fss_status_code_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, fss_status_code_program_name_long_s, fss_status_code_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -130,10 +155,6 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[fss_status_code_parameter_help_e].result == f_console_result_found_e) {
       fss_status_code_print_help(main->output.to, main->context);
 
@@ -146,6 +167,16 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[fss_status_code_parameter_copyright_e].result == f_console_result_found_e) {
+      fss_status_code_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    status = F_none;
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     if (main->parameters.array[fss_status_code_parameter_error_e].result == f_console_result_found_e) {
       if (main->parameters.array[fss_status_code_parameter_warning_e].result == f_console_result_found_e) {
         if (main->parameters.array[fss_status_code_parameter_number_e].result == f_console_result_none_e) {
index 30c7adfd0b376ac8066c97a7696d4862a9569792..4d2fd08564fd6270266250f616cd34c13f2c249e 100644 (file)
@@ -50,6 +50,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_fss_status_code_print_copyright_
+  extern f_status_t fss_status_code_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_fss_status_code_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index c6503287e4b1f91f512b83979459499da8f4b0cf..1f51a34d0b3aca398875f808c8da347eb9ba122d 100644 (file)
@@ -157,6 +157,7 @@ extern "C" {
 
   enum {
     iki_read_parameter_help_e,
+    iki_read_parameter_copyright_e,
     iki_read_parameter_light_e,
     iki_read_parameter_dark_e,
     iki_read_parameter_no_color_e,
@@ -184,6 +185,7 @@ extern "C" {
   #define iki_read_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -207,7 +209,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(iki_read_short_wrap_s.string, iki_read_long_wrap_s.string, 0, 3, f_console_type_normal_e), \
     }
 
-  #define iki_read_total_parameters_d 22
+  #define iki_read_total_parameters_d 23
 #endif // _di_iki_read_parameters_
 
 #ifndef _di_iki_read_substitution_t_
index fc5c4e83eb04dc06b32dbecf169739b2d0351537..6f97f9ea00a2d091e76cfd5f16de907b1a547952 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_iki_read_print_copyright_
+  f_status_t iki_read_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_iki_read_print_copyright_
+
 #ifndef _di_iki_read_print_help_
   f_status_t iki_read_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, iki_read_program_name_long_s, iki_read_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -185,28 +210,30 @@ extern "C" {
       }
     }
 
-    iki_read_data_t data = iki_read_data_t_initialize;
-    data.main = main;
-    data.argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[iki_read_parameter_help_e].result == f_console_result_found_e) {
       iki_read_print_help(main->output.to, main->context);
 
-      iki_read_data_delete(&data);
-
       return F_none;
     }
 
     if (main->parameters.array[iki_read_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, iki_read_program_version_s);
 
-      iki_read_data_delete(&data);
+      return F_none;
+    }
+
+    if (main->parameters.array[iki_read_parameter_copyright_e].result == f_console_result_found_e) {
+      iki_read_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
 
       return F_none;
     }
 
+    iki_read_data_t data = iki_read_data_t_initialize;
+    data.main = main;
+    data.argv = main->parameters.arguments.array;
+
+    status = F_none;
+
     if (main->parameters.remaining.used > 0 || main->process_pipe) {
       if (main->parameters.array[iki_read_parameter_at_e].result == f_console_result_found_e) {
         if (main->error.verbosity != f_console_verbosity_quiet_e) {
index 122c658bc7a944678d7da168acd2ac1ce1a7b552..ea107f243891bda779554770e5766925e29b9515 100644 (file)
@@ -58,6 +58,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_iki_read_print_copyright_
+  extern f_status_t iki_read_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_iki_read_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 8eef528b47a55b06a1998f1c1e81ba79af71c066..7ff513fb64bf34ebf967b9bf1da425eb2cfdf0a7 100644 (file)
@@ -108,6 +108,7 @@ extern "C" {
 
   enum {
     iki_write_parameter_help_e,
+    iki_write_parameter_copyright_e,
     iki_write_parameter_light_e,
     iki_write_parameter_dark_e,
     iki_write_parameter_no_color_e,
@@ -128,6 +129,7 @@ extern "C" {
   #define iki_write_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -144,7 +146,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(iki_write_short_single_s.string, iki_write_long_single_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define iki_write_total_parameters_d 15
+  #define iki_write_total_parameters_d 16
 #endif // _di_iki_write_parameters_
 
 #ifdef __cplusplus
index 0488366a6d63b43d86871fe125af2709649ab8e3..1eb161a6c0138571209511c70af63786d2cea5c2 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_iki_write_print_copyright_
+  f_status_t iki_write_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_iki_write_print_copyright_
+
 #ifndef _di_iki_write_print_help_
   f_status_t iki_write_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, iki_write_program_name_long_s, iki_write_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -132,28 +157,30 @@ extern "C" {
       }
     }
 
-    iki_write_data_t data = iki_write_data_t_initialize;
-    data.main = main;
-    data.argv = main->parameters.arguments.array;
-
-    status = F_none;
-
     if (main->parameters.array[iki_write_parameter_help_e].result == f_console_result_found_e) {
       iki_write_print_help(main->output.to, main->context);
 
-      iki_write_data_delete(&data);
-
       return F_none;
     }
 
     if (main->parameters.array[iki_write_parameter_version_e].result == f_console_result_found_e) {
       fll_program_print_version(main->output.to, iki_write_program_version_s);
 
-      iki_write_data_delete(&data);
+      return F_none;
+    }
+
+    if (main->parameters.array[iki_write_parameter_copyright_e].result == f_console_result_found_e) {
+      iki_write_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
 
       return F_none;
     }
 
+    status = F_none;
+
+    iki_write_data_t data = iki_write_data_t_initialize;
+    data.main = main;
+    data.argv = main->parameters.arguments.array;
+
     f_file_t file = f_file_t_initialize;
 
     file.id = F_type_descriptor_output_d;
index 1b849e837acb7c1b47413882d401f697884555d5..5bd6d37176999305c610eafa210421377c1aba85 100644 (file)
@@ -58,6 +58,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_iki_write_print_copyright_
+  extern f_status_t iki_write_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_iki_write_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index 9bd454d0f6afc0189a18e4827eb5eb12f08f2315..bdfa78286f8e81bc635a07fee500b87d10f159e8 100644 (file)
@@ -112,6 +112,7 @@ extern "C" {
 
   enum {
     status_code_parameter_help_e,
+    status_code_parameter_copyright_e,
     status_code_parameter_light_e,
     status_code_parameter_dark_e,
     status_code_parameter_no_color_e,
@@ -131,6 +132,7 @@ extern "C" {
   #define status_code_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -146,7 +148,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(status_code_short_number_s.string, status_code_long_number_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define status_code_total_parameters_d 14
+  #define status_code_total_parameters_d 15
 #endif // _di_status_code_parameters_
 
 #ifdef __cplusplus
index 4b3e05b0f4fcecad2d0df76591f8b14b82371737..6ba7834907604579358c80f88307e46e2d511bbf 100644 (file)
@@ -6,6 +6,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_status_code_print_copyright_
+  f_status_t status_code_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_status_code_print_copyright_
+
 #ifndef _di_status_code_print_help_
   f_status_t status_code_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -13,16 +37,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, status_code_program_name_long_s, status_code_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -128,8 +153,6 @@ extern "C" {
       }
     }
 
-    f_string_static_t * const argv = main->parameters.arguments.array;
-
     status = F_none;
 
     if (main->parameters.array[status_code_parameter_help_e].result == f_console_result_found_e) {
@@ -144,6 +167,14 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[status_code_parameter_copyright_e].result == f_console_result_found_e) {
+      status_code_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      return F_none;
+    }
+
+    f_string_static_t * const argv = main->parameters.arguments.array;
+
     if (main->parameters.array[status_code_parameter_error_e].result == f_console_result_found_e) {
       if (main->parameters.array[status_code_parameter_warning_e].result == f_console_result_found_e) {
         if (main->parameters.array[status_code_parameter_number_e].result == f_console_result_none_e) {
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).
index acc19263527ddfd2e962d76bf5fa018b5d9dedfa..50bc8e1d12c95fbec0e7b3460244a703a8d64f9f 100644 (file)
@@ -239,6 +239,7 @@ extern "C" {
 
   enum {
     utf8_parameter_help_e,
+    utf8_parameter_copyright_e,
     utf8_parameter_light_e,
     utf8_parameter_dark_e,
     utf8_parameter_no_color_e,
@@ -269,6 +270,7 @@ extern "C" {
   #define utf8_console_parameter_t_initialize \
     { \
       macro_f_console_parameter_t_initialize(f_console_standard_short_help_s.string, f_console_standard_long_help_s.string, 0, 0, f_console_type_normal_e), \
+      macro_f_console_parameter_t_initialize(f_console_standard_short_copyright_s.string, f_console_standard_long_copyright_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_light_s.string, f_console_standard_long_light_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_dark_s.string, f_console_standard_long_dark_s.string, 0, 0, f_console_type_inverse_e), \
       macro_f_console_parameter_t_initialize(f_console_standard_short_no_color_s.string, f_console_standard_long_no_color_s.string, 0, 0, f_console_type_inverse_e), \
@@ -292,7 +294,7 @@ extern "C" {
       macro_f_console_parameter_t_initialize(utf8_short_verify_s.string, utf8_long_verify_s.string, 0, 0, f_console_type_normal_e), \
     }
 
-  #define utf8_total_parameters_d 22
+  #define utf8_total_parameters_d 23
 #endif // _di_utf8_parameters_
 
 /**
index e42479f1d1ff6477433b3e1c9fcdeaecfb3064a3..31423c133ded06ead645da0edcc60b6b4e2a2c12 100644 (file)
@@ -9,6 +9,30 @@
 extern "C" {
 #endif
 
+#ifndef _di_utf8_print_copyright_
+  f_status_t utf8_print_copyright(const f_file_t file, const bool full) {
+
+    flockfile(file.stream);
+
+    fl_print_format("%rCopyright © 2007-2023 Kevin Day.%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    #ifndef _di_detailed_copyright_
+      if (full) {
+        fl_print_format("%rThis program comes with ABSOLUTELY NO WARRANTY.%r", file.stream, f_string_eol_s, f_string_eol_s);
+        fl_print_format("This is free software, and you are welcome to modify or redistribute in accordance to the license.%r", file.stream, f_string_eol_s);
+      }
+    #endif // _di_detailed_copyright_
+
+    fl_print_format("%rSource code license lgpl-2.1-or-later.%r", file.stream, f_string_eol_s, f_string_eol_s);
+    fl_print_format("Standard and specification license open-standard-license-1.0.%r", file.stream, f_string_eol_s);
+    fl_print_format("Documentation license cc-by-sa-4.0.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
+    funlockfile(file.stream);
+
+    return F_none;
+  }
+#endif // _di_utf8_print_copyright_
+
 #ifndef _di_utf8_print_help_
   f_status_t utf8_print_help(const f_file_t file, const f_color_context_t context) {
 
@@ -16,16 +40,17 @@ extern "C" {
 
     fll_program_print_help_header(file, context, utf8_program_name_long_s, utf8_program_version_s);
 
-    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "    Print this help message.");
-    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on dark backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Output using colors that show up better on light backgrounds.");
-    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Do not print using color.");
-    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, silencing most output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Decrease verbosity, using only error output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Set verbosity to normal.");
-    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Increase verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Enable debugging, significantly increasing verbosity beyond normal output.");
-    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number.");
+    fll_program_print_help_option(file, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "     Print this help message.");
+    fll_program_print_help_option(file, context, f_console_standard_short_copyright_s, f_console_standard_long_copyright_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "Print the copyright.");
+    fll_program_print_help_option(file, context, f_console_standard_short_dark_s, f_console_standard_long_dark_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "     Output using colors that show up better on dark backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_light_s, f_console_standard_long_light_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Output using colors that show up better on light backgrounds.");
+    fll_program_print_help_option(file, context, f_console_standard_short_no_color_s, f_console_standard_long_no_color_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Do not print using color.");
+    fll_program_print_help_option(file, context, f_console_standard_short_quiet_s, f_console_standard_long_quiet_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, silencing most output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_error_s, f_console_standard_long_error_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Decrease verbosity, using only error output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_normal_s, f_console_standard_long_normal_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "   Set verbosity to normal.");
+    fll_program_print_help_option(file, context, f_console_standard_short_verbose_s, f_console_standard_long_verbose_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Increase verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "    Enable debugging, significantly increasing verbosity beyond normal output.");
+    fll_program_print_help_option(file, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, "  Print only the version number.");
 
     f_print_dynamic_raw(f_string_eol_s, file.stream);
 
@@ -292,9 +317,6 @@ extern "C" {
       }
     }
 
-    data.argv = main->parameters.arguments.array;
-    status = F_none;
-
     if (main->parameters.array[utf8_parameter_help_e].result == f_console_result_found_e) {
       utf8_print_help(main->output.to, main->context);
 
@@ -311,6 +333,17 @@ extern "C" {
       return F_none;
     }
 
+    if (main->parameters.array[utf8_parameter_copyright_e].result == f_console_result_found_e) {
+      utf8_print_copyright(main->output.to, main->output.verbosity > f_console_verbosity_error_e);
+
+      utf8_data_delete(&data);
+
+      return F_none;
+    }
+
+    status = F_none;
+    data.argv = main->parameters.arguments.array;
+
     if (F_status_is_error_not(status)) {
       if (main->parameters.array[utf8_parameter_from_file_e].result == f_console_result_additional_e) {
         f_array_length_t i = 0;
index a87576f1ebb4c75ac55ec75b5ebbea1394d761ae..0386fb84aca8797f587cbc66866b7261547c6a70 100644 (file)
@@ -62,6 +62,22 @@ extern "C" {
 #endif
 
 /**
+ * Print copyright.
+ *
+ * @param file
+ *   The file to print to.
+ * @param detail
+ *   If TRUE, then the detailed copyright is printed (unless _di_detailed_copyright_ is set).
+ *   If FALSE, then the short copyright is printed.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_utf8_print_copyright_
+  extern f_status_t utf8_print_copyright(const f_file_t file, const bool detail);
+#endif // _di_utf8_print_copyright_
+
+/**
  * Print help.
  *
  * @param file
index c6653172ef1e71eb1aff738b1cbad4300feeacd6..91fff5d31b04d5598fd2e56286116e463f58b21b 100644 (file)
@@ -1,2 +1,3 @@
 # fss-0000
 
+_di_detailed_copyright_ Disable the detailed copyright message (saves a small amount of space).