]> Kevux Git Server - fll/commitdiff
Refactor: ename bit_dump to byte_dump
authorKevin Day <thekevinday@gmail.com>
Sun, 8 Sep 2019 23:25:31 +0000 (18:25 -0500)
committerKevin Day <thekevinday@gmail.com>
Sun, 8 Sep 2019 23:25:31 +0000 (18:25 -0500)
This program is operating on a per byte basis.
The name 'byte_dump' makes more sense than 'bit_dump'.

level_3/bit_dump/c/bit_dump.h [deleted file]
level_3/byte_dump/c/byte_dump.c [moved from level_3/bit_dump/c/bit_dump.c with 63% similarity]
level_3/byte_dump/c/byte_dump.h [new file with mode: 0644]
level_3/byte_dump/c/main.c [moved from level_3/bit_dump/c/main.c with 63% similarity]
level_3/byte_dump/c/private-byte_dump.c [moved from level_3/bit_dump/c/private-bit_dump.c with 78% similarity]
level_3/byte_dump/c/private-byte_dump.h [moved from level_3/bit_dump/c/private-bit_dump.h with 69% similarity]
level_3/byte_dump/data/build/dependencies [moved from level_3/bit_dump/data/build/dependencies with 100% similarity]
level_3/byte_dump/data/build/settings [moved from level_3/bit_dump/data/build/settings with 80% similarity]

diff --git a/level_3/bit_dump/c/bit_dump.h b/level_3/bit_dump/c/bit_dump.h
deleted file mode 100644 (file)
index 816b68d..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * FLL - Level 3
- *
- * Project: Bit Dump
- * API Version: 0.5
- * Licenses: lgplv2.1
- *
- * This is intendend to support Unicode 12.1.
- *
- * When using "text" mode, this program attempts to translate UTF-8 sequences such that certain codes don't cause printing problems.
- * There may be cases where there are unknown codes that get printed and the invalid UTF-8 marker may be displayed not by this program but instead by the shell or some other program.
- * This can potentially be seen with the program "less".
- * The solution is to add the invalid character codes to this project so that this project can properly print the invalid UTF-8 marker and therefore properly display the information.
- */
-#ifndef _bit_dump_h
-
-// libc includes
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-// fll-0 includes
-#include <level_0/console.h>
-#include <level_0/conversion.h>
-#include <level_0/pipe.h>
-#include <level_0/print.h>
-#include <level_0/status.h>
-#include <level_0/string.h>
-#include <level_0/type.h>
-#include <level_0/utf.h>
-
-// fll-1 includes
-#include <level_1/color.h>
-#include <level_1/console.h>
-#include <level_1/string.h>
-#include <level_1/utf.h>
-
-// fll-2 includes
-#include <level_2/program.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _di_bit_dump_version_
-  #define bit_dump_major_version "0"
-  #define bit_dump_minor_version "5"
-  #define bit_dump_micro_version "0"
-  #define bit_dump_version bit_dump_major_version "." bit_dump_minor_version "." bit_dump_micro_version
-#endif // _di_bit_dump_version_
-
-#ifndef _di_bit_dump_name_
-  #define bit_dump_name      "bit_dump"
-  #define bit_dump_name_long "Bit Dump"
-#endif // _di_bit_dump_name_
-
-#ifndef _di_bit_dump_default_allocation_step_
-  // provide a UTF-8 friendly allocation step.
-  #define bit_dump_default_allocation_step 4
-#endif // _di_bit_dump_default_allocation_step_
-
-#ifndef _di_bit_dump_defines_
-  enum {
-    bit_dump_mode_hexidecimal,
-    bit_dump_mode_octal,
-    bit_dump_mode_binary,
-    bit_dump_mode_decimal,
-  };
-
-  #define bit_dump_sequence_acknowledge               "␆"
-  #define bit_dump_sequence_backspace                 "␈"
-  #define bit_dump_sequence_bell                      "␇"
-  #define bit_dump_sequence_cancel                    "␘"
-  #define bit_dump_sequence_carriage_return           "␍"
-  #define bit_dump_sequence_data_link_escape          "␐"
-  #define bit_dump_sequence_delete                    "␡"
-  #define bit_dump_sequence_device_control_1          "␑"
-  #define bit_dump_sequence_device_control_2          "␒"
-  #define bit_dump_sequence_device_control_3          "␓"
-  #define bit_dump_sequence_device_control_4          "␔"
-  #define bit_dump_sequence_end_of_enquiry            "␅"
-  #define bit_dump_sequence_end_of_medium             "␙"
-  #define bit_dump_sequence_end_of_text               "␃"
-  #define bit_dump_sequence_end_of_transmission       "␄"
-  #define bit_dump_sequence_end_of_transmission_block "␗"
-  #define bit_dump_sequence_escape                    "␛"
-  #define bit_dump_sequence_file_separator            "␜"
-  #define bit_dump_sequence_form_feed                 "␌"
-  #define bit_dump_sequence_group_separator           "␝"
-  #define bit_dump_sequence_line_feed                 "␊"
-  #define bit_dump_sequence_negative_acknowledge      "␕"
-  #define bit_dump_sequence_new_line                  "␤"
-  #define bit_dump_sequence_null                      "␀"
-  #define bit_dump_sequence_record_separator          "␞"
-  #define bit_dump_sequence_shift_in                  "␏"
-  #define bit_dump_sequence_shift_out                 "␎"
-  #define bit_dump_sequence_space                     "␠"
-  #define bit_dump_sequence_start_of_header           "␁"
-  #define bit_dump_sequence_start_of_text             "␂"
-  #define bit_dump_sequence_substitute                "␚"
-  #define bit_dump_sequence_synchronous_idle          "␖"
-  #define bit_dump_sequence_tab                       "␉"
-  #define bit_dump_sequence_tab_vertical              "␋"
-  #define bit_dump_sequence_unit_separator            "␟"
-  #define bit_dump_sequence_utf_bom                   "␂"
-
-  #define bit_dump_character_wall        "|"
-  #define bit_dump_character_placeholder "␣" // other likely choices: (substitute form 1: '␚', substitute form 2: '␦').
-  #define bit_dump_character_incomplete  "�"
-  #define bit_dump_character_unused      "�"
-
-  #define bit_dump_short_binary      "b"
-  #define bit_dump_short_decimal     "d"
-  #define bit_dump_short_hexdecimal  "x"
-  #define bit_dump_short_octal       "o"
-
-  #define bit_dump_short_first       "f"
-  #define bit_dump_short_last        "l"
-  #define bit_dump_short_text        "t"
-  #define bit_dump_short_width       "w"
-  #define bit_dump_short_placeholder "p"
-
-  #define bit_dump_long_binary       "binary"
-  #define bit_dump_long_decimal      "decimal"
-  #define bit_dump_long_hexidecimal  "hexidecimal"
-  #define bit_dump_long_octal        "octal"
-
-  #define bit_dump_long_first        "first"       // first offset byte size.
-  #define bit_dump_long_last         "last"        // last offset byte size.
-  #define bit_dump_long_width        "width"       // number of characters to display per row.
-
-  #define bit_dump_long_text         "text"        // display text
-  #define bit_dump_long_placeholder  "placeholder" // display (colored) placeholders to signify codes that are UTF-8 fragments.
-
-  enum {
-    bit_dump_parameter_help,
-    bit_dump_parameter_light,
-    bit_dump_parameter_dark,
-    bit_dump_parameter_no_color,
-    bit_dump_parameter_version,
-
-    bit_dump_parameter_binary,
-    bit_dump_parameter_decimal,
-    bit_dump_parameter_hexidecimal,
-    bit_dump_parameter_octal,
-
-    bit_dump_parameter_first,
-    bit_dump_parameter_last,
-    bit_dump_parameter_width,
-
-    bit_dump_parameter_text,
-    bit_dump_parameter_placeholder,
-  };
-
-  #define bit_dump_console_parameter_initialize \
-    { \
-      f_console_parameter_initialize(f_console_standard_short_help, f_console_standard_long_help, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(f_console_standard_short_light, f_console_standard_long_light, 0, 0, f_console_type_inverse), \
-      f_console_parameter_initialize(f_console_standard_short_dark, f_console_standard_long_dark, 0, 0, f_console_type_inverse), \
-      f_console_parameter_initialize(f_console_standard_short_no_color, f_console_standard_long_no_color, 0, 0, f_console_type_inverse), \
-      f_console_parameter_initialize(f_console_standard_short_version, f_console_standard_long_version, 0, 0, f_console_type_inverse), \
-      f_console_parameter_initialize(bit_dump_short_binary, bit_dump_long_binary, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_decimal, bit_dump_long_decimal, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_hexdecimal, bit_dump_long_hexidecimal, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_octal, bit_dump_long_octal, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_first, bit_dump_long_first, 0, 1, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_last, bit_dump_long_last, 0, 1, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_width, bit_dump_long_width, 0, 1, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_text, bit_dump_long_text, 0, 0, f_console_type_normal), \
-      f_console_parameter_initialize(bit_dump_short_placeholder, bit_dump_long_placeholder, 0, 0, f_console_type_normal), \
-    }
-
-  #define bit_dump_total_parameters 14
-#endif // _di_bit_dump_defines_
-
-#ifndef _di_bit_dump_data_
-  typedef struct {
-    f_console_parameter parameters[bit_dump_total_parameters];
-
-    f_string_lengths remaining;
-    f_bool process_pipe;
-
-    uint64_t first;
-    uint64_t last;
-    uint8_t  width;
-    uint8_t  mode;
-
-    fl_color_context context;
-  } bit_dump_data;
-
-  #define bit_dump_data_initialize \
-    { \
-      bit_dump_console_parameter_initialize, \
-      f_string_lengths_initialize, \
-      f_false, \
-      0, \
-      0, \
-      8, \
-      bit_dump_mode_hexidecimal, \
-      fl_color_context_initialize, \
-    }
-#endif // _di_bit_dump_data_
-
-/**
- * Print help to standard output.
- *
- * @param data
- *   The program data.
- *
- * @return
- *   f_none on success.
- */
-#ifndef _di_bit_dump_print_help_
-  extern f_return_status bit_dump_print_help(const bit_dump_data data);
-#endif // _di_bit_dump_print_help_
-
-/**
- * Execute main program.
- *
- * Be sure to call bit_dump_delete_data() after executing this.
- *
- * @param arguments
- *   The parameters passed to the process.
- * @param data
- *   The program data.
- *
- * @return
- *   f_none on success.
- *   Status codes (with error bit) are returned on any problem.
- *
- * @see bit_dump_delete_data()
- */
-#ifndef _di_bit_dump_main_
-  extern f_return_status bit_dump_main(const f_console_arguments arguments, bit_dump_data *data);
-#endif // _di_bit_dump_main_
-
-/**
- * Deallocate data.
- *
- * Be sure to call this after executing bit_dump_main().
- *
- * @param data
- *   The program data.
- *
- * @return
- *   f_none on success.
- *   Status codes (with error bit) are returned on any problem.
- *
- * @see bit_dump_main()
- */
-#ifndef _di_bit_dump_delete_data_
-  extern f_return_status bit_dump_delete_data(bit_dump_data *data);
-#endif // _di_bit_dump_delete_data_
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // _bit_dump_h
similarity index 63%
rename from level_3/bit_dump/c/bit_dump.c
rename to level_3/byte_dump/c/byte_dump.c
index 60aa9bac94f775df4077de243acc0aa7fc507918..6c52202350b1354f1665a68dfef6e9393ab5f785 100644 (file)
@@ -1,13 +1,13 @@
-#include <level_3/bit_dump.h>
-#include "private-bit_dump.h"
+#include <level_3/byte_dump.h>
+#include "private-byte_dump.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef _di_bit_dump_print_help_
-  f_return_status bit_dump_print_help(const bit_dump_data data) {
-    fll_program_print_help_header(data.context, bit_dump_name_long, bit_dump_version);
+#ifndef _di_byte_dump_print_help_
+  f_return_status byte_dump_print_help(const byte_dump_data data) {
+    fll_program_print_help_header(data.context, byte_dump_name_long, byte_dump_version);
 
     fll_program_print_help_option(data.context, f_console_standard_short_help, f_console_standard_long_help, f_console_symbol_short_enable, f_console_symbol_long_enable, "       Print this help message.");
     fll_program_print_help_option(data.context, f_console_standard_short_light, f_console_standard_long_light, f_console_symbol_short_disable, f_console_symbol_long_disable, "      Output using colors that show up better on light backgrounds");
@@ -17,75 +17,75 @@ extern "C" {
 
     printf("%c", f_string_eol);
 
-    fll_program_print_help_option(data.context, bit_dump_short_binary, bit_dump_long_binary, f_console_symbol_short_enable, f_console_symbol_long_enable, "     Display binary representation.");
-    fll_program_print_help_option(data.context, bit_dump_short_decimal, bit_dump_long_decimal, f_console_symbol_short_enable, f_console_symbol_long_enable, "    Display decimal representation.");
-    fll_program_print_help_option(data.context, bit_dump_short_hexdecimal, bit_dump_long_hexidecimal, f_console_symbol_short_enable, f_console_symbol_long_enable, "Display hexadecimal representation.");
-    fll_program_print_help_option(data.context, bit_dump_short_octal, bit_dump_long_octal, f_console_symbol_short_enable, f_console_symbol_long_enable, "      Display octal representation.");
+    fll_program_print_help_option(data.context, byte_dump_short_binary, byte_dump_long_binary, f_console_symbol_short_enable, f_console_symbol_long_enable, "     Display binary representation.");
+    fll_program_print_help_option(data.context, byte_dump_short_decimal, byte_dump_long_decimal, f_console_symbol_short_enable, f_console_symbol_long_enable, "    Display decimal representation.");
+    fll_program_print_help_option(data.context, byte_dump_short_hexdecimal, byte_dump_long_hexidecimal, f_console_symbol_short_enable, f_console_symbol_long_enable, "Display hexadecimal representation.");
+    fll_program_print_help_option(data.context, byte_dump_short_octal, byte_dump_long_octal, f_console_symbol_short_enable, f_console_symbol_long_enable, "      Display octal representation.");
 
-    fll_program_print_help_usage(data.context, bit_dump_name, "filename(s)");
+    fll_program_print_help_usage(data.context, byte_dump_name, "filename(s)");
 
     printf("When using the ");
-    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "--%s", bit_dump_long_text);
+    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "--%s", byte_dump_long_text);
     printf(" option, some UTF-8 characters may be replaced by your instance and cause display alignment issues.");
 
     printf("%c%c", f_string_eol, f_string_eol);
 
     printf("Special UTF-8 characters and non-spacing UTF-8 characters may be replaced with a space (or a placeholder when the ");
-    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "--%s", bit_dump_long_placeholder);
+    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "--%s", byte_dump_long_placeholder);
     printf(" option is used).");
 
     printf("%c%c", f_string_eol, f_string_eol);
 
     return f_none;
   }
-#endif // _di_bit_dump_print_help_
+#endif // _di_byte_dump_print_help_
 
-#ifndef _di_bit_dump_main_
-  f_return_status bit_dump_main(const f_console_arguments arguments, bit_dump_data *data) {
+#ifndef _di_byte_dump_main_
+  f_return_status byte_dump_main(const f_console_arguments arguments, byte_dump_data *data) {
     f_status status = f_none;
 
     {
-      f_console_parameters parameters = { data->parameters, bit_dump_total_parameters };
+      f_console_parameters parameters = { data->parameters, byte_dump_total_parameters };
       f_console_parameter_ids choices = f_console_parameter_ids_initialize;
 
       {
-        f_console_parameter_id ids[3] = { bit_dump_parameter_no_color, bit_dump_parameter_light, bit_dump_parameter_dark };
+        f_console_parameter_id ids[3] = { byte_dump_parameter_no_color, byte_dump_parameter_light, byte_dump_parameter_dark };
         choices.id = ids;
         choices.used = 3;
 
         status = fll_program_process_parameters(arguments, parameters, choices, &data->remaining, &data->context);
 
         if (f_status_is_error(status)) {
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
         }
       }
 
       {
-        f_console_parameter_id ids[4] = { bit_dump_parameter_hexidecimal, bit_dump_parameter_octal, bit_dump_parameter_binary, bit_dump_parameter_decimal };
-        f_console_parameter_id choice = bit_dump_parameter_hexidecimal;
+        f_console_parameter_id ids[4] = { byte_dump_parameter_hexidecimal, byte_dump_parameter_octal, byte_dump_parameter_binary, byte_dump_parameter_decimal };
+        f_console_parameter_id choice = byte_dump_parameter_hexidecimal;
         choices.id = ids;
         choices.used = 4;
 
         status = fl_console_parameter_prioritize(parameters, choices, &choice);
 
         if (f_status_is_error(status)) {
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
         }
 
 
-        if (choice == bit_dump_parameter_hexidecimal) {
-          data->mode = bit_dump_mode_hexidecimal;
+        if (choice == byte_dump_parameter_hexidecimal) {
+          data->mode = byte_dump_mode_hexidecimal;
         }
-        else if (choice == bit_dump_parameter_octal) {
-          data->mode = bit_dump_mode_octal;
+        else if (choice == byte_dump_parameter_octal) {
+          data->mode = byte_dump_mode_octal;
         }
-        else if (choice == bit_dump_parameter_binary) {
-          data->mode = bit_dump_mode_binary;
+        else if (choice == byte_dump_parameter_binary) {
+          data->mode = byte_dump_mode_binary;
         }
-        else if (choice == bit_dump_parameter_decimal) {
-          data->mode = bit_dump_mode_decimal;
+        else if (choice == byte_dump_parameter_decimal) {
+          data->mode = byte_dump_mode_decimal;
         }
       }
     }
@@ -93,61 +93,61 @@ extern "C" {
     status = f_none;
 
     // execute parameter results.
-    if (data->parameters[bit_dump_parameter_help].result == f_console_result_found) {
-      bit_dump_print_help(*data);
+    if (data->parameters[byte_dump_parameter_help].result == f_console_result_found) {
+      byte_dump_print_help(*data);
     }
-    else if (data->parameters[bit_dump_parameter_version].result == f_console_result_found) {
-      fll_program_print_version(bit_dump_version);
+    else if (data->parameters[byte_dump_parameter_version].result == f_console_result_found) {
+      fll_program_print_version(byte_dump_version);
     }
     else if (data->remaining.used > 0 || data->process_pipe) {
-      if (data->parameters[bit_dump_parameter_width].result == f_console_result_found) {
+      if (data->parameters[byte_dump_parameter_width].result == f_console_result_found) {
         fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "Width option was specified but no width was given.");
 
-        bit_dump_delete_data(data);
+        byte_dump_delete_data(data);
         return f_status_set_error(status);
       }
-      else if (data->parameters[bit_dump_parameter_width].result == f_console_result_additional) {
-        uint64_t number = atoll(arguments.argv[data->parameters[bit_dump_parameter_width].additional.array[0]]);
+      else if (data->parameters[byte_dump_parameter_width].result == f_console_result_additional) {
+        uint64_t number = atoll(arguments.argv[data->parameters[byte_dump_parameter_width].additional.array[0]]);
         if (number < 1 || number >= 0xfb) {
           fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "Width option can only be a number between 0 and 251.");
 
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
         }
 
         data->width = (uint8_t) number;
       }
 
-      if (data->parameters[bit_dump_parameter_first].result == f_console_result_found) {
+      if (data->parameters[byte_dump_parameter_first].result == f_console_result_found) {
         fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "First option was specified but no number was given.");
 
-        bit_dump_delete_data(data);
+        byte_dump_delete_data(data);
         return f_status_set_error(status);
       }
-      else if (data->parameters[bit_dump_parameter_first].result == f_console_result_additional) {
-        uint64_t number = atoll(arguments.argv[data->parameters[bit_dump_parameter_first].additional.array[0]]);
+      else if (data->parameters[byte_dump_parameter_first].result == f_console_result_additional) {
+        uint64_t number = atoll(arguments.argv[data->parameters[byte_dump_parameter_first].additional.array[0]]);
         if (number < 1 || number >= 0xffffffffffffffff) {
           fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "First option can only be a number between 0 and 18446744073709551615.");
 
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
         }
 
         data->first = number;
       }
 
-      if (data->parameters[bit_dump_parameter_last].result == f_console_result_found) {
+      if (data->parameters[byte_dump_parameter_last].result == f_console_result_found) {
         fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "Last option was specified but no number was given.");
 
-        bit_dump_delete_data(data);
+        byte_dump_delete_data(data);
         return f_status_set_error(status);
       }
-      else if (data->parameters[bit_dump_parameter_last].result == f_console_result_additional) {
-        uint64_t number = atoll(arguments.argv[data->parameters[bit_dump_parameter_last].additional.array[0]]);
+      else if (data->parameters[byte_dump_parameter_last].result == f_console_result_additional) {
+        uint64_t number = atoll(arguments.argv[data->parameters[byte_dump_parameter_last].additional.array[0]]);
         if (number < 1 || number >= 0xffffffffffffffff) {
           fl_color_print_line(f_standard_output, data->context.error, data->context.reset, "Last option can only be a number between 0 and 18446744073709551615.");
 
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
         }
 
@@ -161,7 +161,7 @@ extern "C" {
           fl_color_print(f_standard_output, data->context.notable, data->context.reset, "%d", data->last);
           fl_color_print_line(f_standard_output, data->context.error, data->context.reset, ").");
 
-          bit_dump_delete_data(data);
+          byte_dump_delete_data(data);
           return f_status_set_error(status);
       }
 
@@ -181,14 +181,14 @@ extern "C" {
                 missing_files = status;
               }
 
-              bit_dump_print_file_error(data->context, status, "f_file_exists", arguments.argv[data->remaining.array[counter]]);
+              byte_dump_print_file_error(data->context, status, "f_file_exists", arguments.argv[data->remaining.array[counter]]);
             }
           } // for
 
           if (missing_files != f_none) {
             status = f_status_set_error(missing_files);
 
-            bit_dump_delete_data(data);
+            byte_dump_delete_data(data);
             return status;
           }
         }
@@ -198,8 +198,8 @@ extern "C" {
 
           status = f_file_open(&file, arguments.argv[data->remaining.array[counter]]);
           if (f_status_is_error(status)) {
-            bit_dump_print_file_error(data->context, status, "f_file_open", arguments.argv[data->remaining.array[counter]]);
-            bit_dump_delete_data(data);
+            byte_dump_print_file_error(data->context, status, "f_file_open", arguments.argv[data->remaining.array[counter]]);
+            byte_dump_delete_data(data);
             return status;
           }
 
@@ -208,27 +208,27 @@ extern "C" {
           fl_color_print(f_standard_output, data->context.notable, data->context.reset, "%s", arguments.argv[data->remaining.array[counter]]);
           fl_color_print(f_standard_output, data->context.title, data->context.reset, " (in ");
 
-          if (data->mode == bit_dump_mode_hexidecimal) {
+          if (data->mode == byte_dump_mode_hexidecimal) {
             fl_color_print(f_standard_output, data->context.title, data->context.reset, "Hexidecimal");
           }
-          else if (data->mode == bit_dump_mode_octal) {
+          else if (data->mode == byte_dump_mode_octal) {
             fl_color_print(f_standard_output, data->context.title, data->context.reset, "Octal");
           }
-          else if (data->mode == bit_dump_mode_binary) {
+          else if (data->mode == byte_dump_mode_binary) {
             fl_color_print(f_standard_output, data->context.title, data->context.reset, "Binary");
           }
-          else if (data->mode == bit_dump_mode_decimal) {
+          else if (data->mode == byte_dump_mode_decimal) {
             fl_color_print(f_standard_output, data->context.title, data->context.reset, "Decimal");
           }
 
           fl_color_print_line(f_standard_output, data->context.title, data->context.reset, ")");
 
-          status = bit_dump_file(*data, arguments.argv[data->remaining.array[counter]], file);
+          status = byte_dump_file(*data, arguments.argv[data->remaining.array[counter]], file);
 
           f_file_close(&file);
 
           if (f_status_is_error(status)) {
-            bit_dump_delete_data(data);
+            byte_dump_delete_data(data);
             return status;
           }
         } // for
@@ -242,16 +242,16 @@ extern "C" {
       status = f_status_set_error(f_invalid_parameter);
     }
 
-    bit_dump_delete_data(data);
+    byte_dump_delete_data(data);
     return status;
   }
-#endif // _di_bit_dump_main_
+#endif // _di_byte_dump_main_
 
-#ifndef _di_bit_dump_delete_data_
-  f_return_status bit_dump_delete_data(bit_dump_data *data) {
+#ifndef _di_byte_dump_delete_data_
+  f_return_status byte_dump_delete_data(byte_dump_data *data) {
     f_status status = f_none;
 
-    for (f_string_length i = 0; i < bit_dump_total_parameters; i++) {
+    for (f_string_length i = 0; i < byte_dump_total_parameters; i++) {
       f_macro_string_lengths_delete(status, data->parameters[i].additional);
     } // for
 
@@ -260,7 +260,7 @@ extern "C" {
 
     return f_none;
   }
-#endif // _di_bit_dump_delete_data_
+#endif // _di_byte_dump_delete_data_
 
 #ifdef __cplusplus
 } // extern "C"
diff --git a/level_3/byte_dump/c/byte_dump.h b/level_3/byte_dump/c/byte_dump.h
new file mode 100644 (file)
index 0000000..a08b08b
--- /dev/null
@@ -0,0 +1,260 @@
+/**
+ * FLL - Level 3
+ *
+ * Project: Byte Dump
+ * API Version: 0.5
+ * Licenses: lgplv2.1
+ *
+ * This is intendend to support Unicode 12.1.
+ *
+ * When using "text" mode, this program attempts to translate UTF-8 sequences such that certain codes don't cause printing problems.
+ * There may be cases where there are unknown codes that get printed and the invalid UTF-8 marker may be displayed not by this program but instead by the shell or some other program.
+ * This can potentially be seen with the program "less".
+ * The solution is to add the invalid character codes to this project so that this project can properly print the invalid UTF-8 marker and therefore properly display the information.
+ */
+#ifndef _byte_dump_h
+
+// libc includes
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+// fll-0 includes
+#include <level_0/console.h>
+#include <level_0/conversion.h>
+#include <level_0/pipe.h>
+#include <level_0/print.h>
+#include <level_0/status.h>
+#include <level_0/string.h>
+#include <level_0/type.h>
+#include <level_0/utf.h>
+
+// fll-1 includes
+#include <level_1/color.h>
+#include <level_1/console.h>
+#include <level_1/string.h>
+#include <level_1/utf.h>
+
+// fll-2 includes
+#include <level_2/program.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_byte_dump_version_
+  #define byte_dump_major_version "0"
+  #define byte_dump_minor_version "5"
+  #define byte_dump_micro_version "0"
+  #define byte_dump_version byte_dump_major_version "." byte_dump_minor_version "." byte_dump_micro_version
+#endif // _di_byte_dump_version_
+
+#ifndef _di_byte_dump_name_
+  #define byte_dump_name      "byte_dump"
+  #define byte_dump_name_long "Byte Dump"
+#endif // _di_byte_dump_name_
+
+#ifndef _di_byte_dump_default_allocation_step_
+  // provide a UTF-8 friendly allocation step.
+  #define byte_dump_default_allocation_step 4
+#endif // _di_byte_dump_default_allocation_step_
+
+#ifndef _di_byte_dump_defines_
+  enum {
+    byte_dump_mode_hexidecimal,
+    byte_dump_mode_octal,
+    byte_dump_mode_binary,
+    byte_dump_mode_decimal,
+  };
+
+  #define byte_dump_sequence_acknowledge               "␆"
+  #define byte_dump_sequence_backspace                 "␈"
+  #define byte_dump_sequence_bell                      "␇"
+  #define byte_dump_sequence_cancel                    "␘"
+  #define byte_dump_sequence_carriage_return           "␍"
+  #define byte_dump_sequence_data_link_escape          "␐"
+  #define byte_dump_sequence_delete                    "␡"
+  #define byte_dump_sequence_device_control_1          "␑"
+  #define byte_dump_sequence_device_control_2          "␒"
+  #define byte_dump_sequence_device_control_3          "␓"
+  #define byte_dump_sequence_device_control_4          "␔"
+  #define byte_dump_sequence_end_of_enquiry            "␅"
+  #define byte_dump_sequence_end_of_medium             "␙"
+  #define byte_dump_sequence_end_of_text               "␃"
+  #define byte_dump_sequence_end_of_transmission       "␄"
+  #define byte_dump_sequence_end_of_transmission_block "␗"
+  #define byte_dump_sequence_escape                    "␛"
+  #define byte_dump_sequence_file_separator            "␜"
+  #define byte_dump_sequence_form_feed                 "␌"
+  #define byte_dump_sequence_group_separator           "␝"
+  #define byte_dump_sequence_line_feed                 "␊"
+  #define byte_dump_sequence_negative_acknowledge      "␕"
+  #define byte_dump_sequence_new_line                  "␤"
+  #define byte_dump_sequence_null                      "␀"
+  #define byte_dump_sequence_record_separator          "␞"
+  #define byte_dump_sequence_shift_in                  "␏"
+  #define byte_dump_sequence_shift_out                 "␎"
+  #define byte_dump_sequence_space                     "␠"
+  #define byte_dump_sequence_start_of_header           "␁"
+  #define byte_dump_sequence_start_of_text             "␂"
+  #define byte_dump_sequence_substitute                "␚"
+  #define byte_dump_sequence_synchronous_idle          "␖"
+  #define byte_dump_sequence_tab                       "␉"
+  #define byte_dump_sequence_tab_vertical              "␋"
+  #define byte_dump_sequence_unit_separator            "␟"
+  #define byte_dump_sequence_utf_bom                   "␂"
+
+  #define byte_dump_character_wall        "|"
+  #define byte_dump_character_placeholder "␣" // other likely choices: (substitute form 1: '␚', substitute form 2: '␦').
+  #define byte_dump_character_incomplete  "�"
+  #define byte_dump_character_unused      "�"
+
+  #define byte_dump_short_binary      "b"
+  #define byte_dump_short_decimal     "d"
+  #define byte_dump_short_hexdecimal  "x"
+  #define byte_dump_short_octal       "o"
+
+  #define byte_dump_short_first       "f"
+  #define byte_dump_short_last        "l"
+  #define byte_dump_short_text        "t"
+  #define byte_dump_short_width       "w"
+  #define byte_dump_short_placeholder "p"
+
+  #define byte_dump_long_binary       "binary"
+  #define byte_dump_long_decimal      "decimal"
+  #define byte_dump_long_hexidecimal  "hexidecimal"
+  #define byte_dump_long_octal        "octal"
+
+  #define byte_dump_long_first        "first"       // first offset byte size.
+  #define byte_dump_long_last         "last"        // last offset byte size.
+  #define byte_dump_long_width        "width"       // number of characters to display per row.
+
+  #define byte_dump_long_text         "text"        // display text
+  #define byte_dump_long_placeholder  "placeholder" // display (colored) placeholders to signify codes that are UTF-8 fragments.
+
+  enum {
+    byte_dump_parameter_help,
+    byte_dump_parameter_light,
+    byte_dump_parameter_dark,
+    byte_dump_parameter_no_color,
+    byte_dump_parameter_version,
+
+    byte_dump_parameter_binary,
+    byte_dump_parameter_decimal,
+    byte_dump_parameter_hexidecimal,
+    byte_dump_parameter_octal,
+
+    byte_dump_parameter_first,
+    byte_dump_parameter_last,
+    byte_dump_parameter_width,
+
+    byte_dump_parameter_text,
+    byte_dump_parameter_placeholder,
+  };
+
+  #define byte_dump_console_parameter_initialize \
+    { \
+      f_console_parameter_initialize(f_console_standard_short_help, f_console_standard_long_help, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(f_console_standard_short_light, f_console_standard_long_light, 0, 0, f_console_type_inverse), \
+      f_console_parameter_initialize(f_console_standard_short_dark, f_console_standard_long_dark, 0, 0, f_console_type_inverse), \
+      f_console_parameter_initialize(f_console_standard_short_no_color, f_console_standard_long_no_color, 0, 0, f_console_type_inverse), \
+      f_console_parameter_initialize(f_console_standard_short_version, f_console_standard_long_version, 0, 0, f_console_type_inverse), \
+      f_console_parameter_initialize(byte_dump_short_binary, byte_dump_long_binary, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_decimal, byte_dump_long_decimal, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_hexdecimal, byte_dump_long_hexidecimal, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_octal, byte_dump_long_octal, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_first, byte_dump_long_first, 0, 1, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_last, byte_dump_long_last, 0, 1, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_width, byte_dump_long_width, 0, 1, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_text, byte_dump_long_text, 0, 0, f_console_type_normal), \
+      f_console_parameter_initialize(byte_dump_short_placeholder, byte_dump_long_placeholder, 0, 0, f_console_type_normal), \
+    }
+
+  #define byte_dump_total_parameters 14
+#endif // _di_byte_dump_defines_
+
+#ifndef _di_byte_dump_data_
+  typedef struct {
+    f_console_parameter parameters[byte_dump_total_parameters];
+
+    f_string_lengths remaining;
+    f_bool process_pipe;
+
+    uint64_t first;
+    uint64_t last;
+    uint8_t  width;
+    uint8_t  mode;
+
+    fl_color_context context;
+  } byte_dump_data;
+
+  #define byte_dump_data_initialize \
+    { \
+      byte_dump_console_parameter_initialize, \
+      f_string_lengths_initialize, \
+      f_false, \
+      0, \
+      0, \
+      8, \
+      byte_dump_mode_hexidecimal, \
+      fl_color_context_initialize, \
+    }
+#endif // _di_byte_dump_data_
+
+/**
+ * Print help to standard output.
+ *
+ * @param data
+ *   The program data.
+ *
+ * @return
+ *   f_none on success.
+ */
+#ifndef _di_byte_dump_print_help_
+  extern f_return_status byte_dump_print_help(const byte_dump_data data);
+#endif // _di_byte_dump_print_help_
+
+/**
+ * Execute main program.
+ *
+ * Be sure to call byte_dump_delete_data() after executing this.
+ *
+ * @param arguments
+ *   The parameters passed to the process.
+ * @param data
+ *   The program data.
+ *
+ * @return
+ *   f_none on success.
+ *   Status codes (with error bit) are returned on any problem.
+ *
+ * @see byte_dump_delete_data()
+ */
+#ifndef _di_byte_dump_main_
+  extern f_return_status byte_dump_main(const f_console_arguments arguments, byte_dump_data *data);
+#endif // _di_byte_dump_main_
+
+/**
+ * Deallocate data.
+ *
+ * Be sure to call this after executing byte_dump_main().
+ *
+ * @param data
+ *   The program data.
+ *
+ * @return
+ *   f_none on success.
+ *   Status codes (with error bit) are returned on any problem.
+ *
+ * @see byte_dump_main()
+ */
+#ifndef _di_byte_dump_delete_data_
+  extern f_return_status byte_dump_delete_data(byte_dump_data *data);
+#endif // _di_byte_dump_delete_data_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _byte_dump_h
similarity index 63%
rename from level_3/bit_dump/c/main.c
rename to level_3/byte_dump/c/main.c
index b20d152616ee4af1954c6669f07acfc63d12136b..781847738b1c30cca27e4e52cbbe07f8ea2956b2 100644 (file)
@@ -1,14 +1,14 @@
-#include <level_3/bit_dump.h>
+#include <level_3/byte_dump.h>
 
 int main(const int argc, const f_string *argv) {
   const f_console_arguments arguments = { argc, argv };
-  bit_dump_data data = bit_dump_data_initialize;
+  byte_dump_data data = byte_dump_data_initialize;
 
   if (f_pipe_exists()) {
     data.process_pipe = f_true;
   }
 
-  f_status status = bit_dump_main(arguments, &data);
+  f_status status = byte_dump_main(arguments, &data);
 
   if (f_status_is_error(status)) {
     return 1;
similarity index 78%
rename from level_3/bit_dump/c/private-bit_dump.c
rename to level_3/byte_dump/c/private-byte_dump.c
index 26d3b42b24114a113c765958f3fc8869ad1a7d22..27bb179f54c6ef2f5db6e67891b90267841929d6 100644 (file)
@@ -1,11 +1,11 @@
 /**
  * Private source file for firewall.c.
  */
-#include <level_3/bit_dump.h>
-#include "private-bit_dump.h"
+#include <level_3/byte_dump.h>
+#include "private-byte_dump.h"
 
-#ifndef _di_bit_dump_file_
-  f_return_status bit_dump_file(const bit_dump_data data, const f_string file_name, f_file file) {
+#ifndef _di_byte_dump_file_
+  f_return_status byte_dump_file(const byte_dump_data data, const f_string file_name, f_file file) {
     f_status status = f_none;
 
     uint64_t position = data.first;
         invalid[character_current] = width_utf;
       }
 
-      if (bit_dump_print_character_fragment(data, characters, invalid, width_utf, 1, &previous_bytes, &previous_invalid, &column, &row)) {
+      if (byte_dump_print_character_fragment(data, characters, invalid, width_utf, 1, &previous_bytes, &previous_invalid, &column, &row)) {
         character_reset = f_true;
       }
 
       if (width_utf > 1) {
-        if (bit_dump_print_character_fragment(data, characters, invalid, width_utf, 2, &previous_bytes, &previous_invalid, &column, &row) == f_true) {
+        if (byte_dump_print_character_fragment(data, characters, invalid, width_utf, 2, &previous_bytes, &previous_invalid, &column, &row) == f_true) {
           character_reset = f_true;
         }
 
         if (width_utf > 2) {
-          if (bit_dump_print_character_fragment(data, characters, invalid, width_utf, 3, &previous_bytes, &previous_invalid, &column, &row)) {
+          if (byte_dump_print_character_fragment(data, characters, invalid, width_utf, 3, &previous_bytes, &previous_invalid, &column, &row)) {
             character_reset = f_true;
           }
 
           if (width_utf > 3) {
-            if (bit_dump_print_character_fragment(data, characters, invalid, width_utf, 4, &previous_bytes, &previous_invalid, &column, &row)) {
+            if (byte_dump_print_character_fragment(data, characters, invalid, width_utf, 4, &previous_bytes, &previous_invalid, &column, &row)) {
               character_reset = f_true;
             }
           }
       previous_invalid = 0;
 
       while (column < data.width) {
-        if (data.mode == bit_dump_mode_hexidecimal) {
+        if (data.mode == byte_dump_mode_hexidecimal) {
           printf("   ");
         }
-        else if (data.mode == bit_dump_mode_octal) {
+        else if (data.mode == byte_dump_mode_octal) {
           printf("    ");
         }
-        else if (data.mode == bit_dump_mode_binary) {
+        else if (data.mode == byte_dump_mode_binary) {
           printf("         ");
         }
-        else if (data.mode == bit_dump_mode_decimal) {
+        else if (data.mode == byte_dump_mode_decimal) {
           printf("    ");
         }
 
         column++;
 
         if (column < data.width) {
-          if (data.mode == bit_dump_mode_hexidecimal && column % 8 == 0) {
+          if (data.mode == byte_dump_mode_hexidecimal && column % 8 == 0) {
             printf(" ");
           }
-          else if (data.mode == bit_dump_mode_octal && column % 6 == 0) {
+          else if (data.mode == byte_dump_mode_octal && column % 6 == 0) {
             printf(" ");
           }
-          else if (data.mode == bit_dump_mode_binary && column % 4 == 0) {
+          else if (data.mode == byte_dump_mode_binary && column % 4 == 0) {
             printf(" ");
           }
-          else if (data.mode == bit_dump_mode_decimal && column % 6 == 0) {
+          else if (data.mode == byte_dump_mode_decimal && column % 6 == 0) {
             printf(" ");
           }
         }
       } // while
 
-      if (data.parameters[bit_dump_parameter_text].result == f_console_result_found) {
-        bit_dump_print_text(data, characters, invalid, &previous_bytes, &previous_invalid);
+      if (data.parameters[byte_dump_parameter_text].result == f_console_result_found) {
+        byte_dump_print_text(data, characters, invalid, &previous_bytes, &previous_invalid);
       }
       else {
         printf("%c", f_string_eol);
 
     return status;
   }
-#endif // _di_bit_dump_file_
+#endif // _di_byte_dump_file_
 
-#ifndef _di_bit_dump_print_character_fragment_
-  f_bool bit_dump_print_character_fragment(const bit_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], const int8_t width_utf, const int8_t byte_current, uint8_t *previous_bytes, uint8_t *previous_invalid, uint8_t *column, uint64_t *row) {
+#ifndef _di_byte_dump_print_character_fragment_
+  f_bool byte_dump_print_character_fragment(const byte_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], const int8_t width_utf, const int8_t byte_current, uint8_t *previous_bytes, uint8_t *previous_invalid, uint8_t *column, uint64_t *row) {
     uint8_t byte = 0;
 
     f_bool reset = f_false;
       fl_color_print(f_standard_output, data.context.notable, data.context.reset, "%016X ", (uint64_t) *row);
     }
 
-    if (data.mode == bit_dump_mode_hexidecimal) {
+    if (data.mode == byte_dump_mode_hexidecimal) {
       if (invalid[character_current]) {
         fl_color_print(f_standard_output, data.context.error, data.context.reset, " %02x", (uint8_t) byte);
       }
         printf(" %02x", (uint8_t) byte);
       }
     }
-    else if (data.mode == bit_dump_mode_octal) {
+    else if (data.mode == byte_dump_mode_octal) {
       if (invalid[character_current]) {
         fl_color_print(f_standard_output, data.context.error, data.context.reset, " %03o", (uint8_t) byte);
       }
         printf(" %03o", (uint8_t) byte);
       }
     }
-    else if (data.mode == bit_dump_mode_binary) {
+    else if (data.mode == byte_dump_mode_binary) {
       char binary_string[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 
       binary_string[0] = ((byte >> 7) & 0x01) ? '1' : '0';
         printf(" %s", binary_string);
       }
     }
-    else if (data.mode == bit_dump_mode_decimal) {
+    else if (data.mode == byte_dump_mode_decimal) {
       if (invalid[character_current]) {
         fl_color_print(f_standard_output, data.context.error, data.context.reset, " %3d", (uint8_t) byte);
       }
 
       reset = f_true;
 
-      if (data.parameters[bit_dump_parameter_text].result == f_console_result_found) {
-        bit_dump_print_text(data, characters, invalid, previous_bytes, previous_invalid);
+      if (data.parameters[byte_dump_parameter_text].result == f_console_result_found) {
+        byte_dump_print_text(data, characters, invalid, previous_bytes, previous_invalid);
       }
       else {
         printf("%c", f_string_eol);
         *previous_invalid = invalid[character_current];
       }
     }
-    else if (data.mode == bit_dump_mode_hexidecimal && *column % 8 == 0) {
+    else if (data.mode == byte_dump_mode_hexidecimal && *column % 8 == 0) {
       printf(" ");
     }
-    else if (data.mode == bit_dump_mode_octal && *column % 6 == 0) {
+    else if (data.mode == byte_dump_mode_octal && *column % 6 == 0) {
       printf(" ");
     }
-    else if (data.mode == bit_dump_mode_binary && *column % 4 == 0) {
+    else if (data.mode == byte_dump_mode_binary && *column % 4 == 0) {
       printf(" ");
     }
-    else if (data.mode == bit_dump_mode_decimal && *column % 6 == 0) {
+    else if (data.mode == byte_dump_mode_decimal && *column % 6 == 0) {
       printf(" ");
     }
 
     return reset;
   }
-#endif // _di_bit_dump_print_character_fragment_
+#endif // _di_byte_dump_print_character_fragment_
 
-#ifndef _di_bit_dump_print_text_
-  void bit_dump_print_text(const bit_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], uint8_t *previous_bytes, uint8_t *previous_invalid) {
+#ifndef _di_byte_dump_print_text_
+  void byte_dump_print_text(const byte_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], uint8_t *previous_bytes, uint8_t *previous_invalid) {
     uint8_t j = 0;
     uint8_t output = 0;
     uint8_t width_utf = 0;
 
-    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "  %s ", bit_dump_character_wall);
+    fl_color_print(f_standard_output, data.context.notable, data.context.reset, "  %s ", byte_dump_character_wall);
 
     // Print placeholders for the remaining fragments of UTF-8 characters printed on previous lines.
     {
       }
 
       if (*previous_bytes > 0) {
-        if (data.parameters[bit_dump_parameter_placeholder].result == f_console_result_found) {
+        if (data.parameters[byte_dump_parameter_placeholder].result == f_console_result_found) {
           for (; j < *previous_bytes && j < data.width; j++) {
             if (*previous_invalid) {
-              fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_placeholder);
+              fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_placeholder);
             }
             else {
-              fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_placeholder);
+              fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_placeholder);
             }
           } // for
         }
       width_utf = f_macro_utf_byte_width_is(output);
 
       if (invalid[i]) {
-        fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_incomplete);
+        fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_incomplete);
       }
       else if (output == 0) {
-        printf("%s", bit_dump_sequence_null);
+        printf("%s", byte_dump_sequence_null);
       }
       else if (output == 1) {
-        printf("%s", bit_dump_sequence_start_of_header);
+        printf("%s", byte_dump_sequence_start_of_header);
       }
       else if (output == 2) {
-        printf("%s", bit_dump_sequence_start_of_text);
+        printf("%s", byte_dump_sequence_start_of_text);
       }
       else if (output == 3) {
-        printf("%s", bit_dump_sequence_end_of_text);
+        printf("%s", byte_dump_sequence_end_of_text);
       }
       else if (output == 4) {
-        printf("%s", bit_dump_sequence_end_of_transmission);
+        printf("%s", byte_dump_sequence_end_of_transmission);
       }
       else if (output == 5) {
-        printf("%s", bit_dump_sequence_end_of_enquiry);
+        printf("%s", byte_dump_sequence_end_of_enquiry);
       }
       else if (output == 6) {
-        printf("%s", bit_dump_sequence_acknowledge);
+        printf("%s", byte_dump_sequence_acknowledge);
       }
       else if (output == 7) {
-        printf("%s", bit_dump_sequence_bell);
+        printf("%s", byte_dump_sequence_bell);
       }
       else if (output == 8) {
-        printf("%s", bit_dump_sequence_backspace);
+        printf("%s", byte_dump_sequence_backspace);
       }
       else if (output == 9) {
-        printf("%s", bit_dump_sequence_tab);
+        printf("%s", byte_dump_sequence_tab);
       }
       else if (output == 10) {
-        printf("%s", bit_dump_sequence_new_line);
+        printf("%s", byte_dump_sequence_new_line);
       }
       else if (output == 11) {
-        printf("%s", bit_dump_sequence_tab_vertical);
+        printf("%s", byte_dump_sequence_tab_vertical);
       }
       else if (output == 12) {
-        printf("%s", bit_dump_sequence_form_feed);
+        printf("%s", byte_dump_sequence_form_feed);
       }
       else if (output == 13) {
-        printf("%s", bit_dump_sequence_carriage_return);
+        printf("%s", byte_dump_sequence_carriage_return);
       }
       else if (output == 14) {
-        printf("%s", bit_dump_sequence_shift_out);
+        printf("%s", byte_dump_sequence_shift_out);
       }
       else if (output == 15) {
-        printf("%s", bit_dump_sequence_shift_in);
+        printf("%s", byte_dump_sequence_shift_in);
       }
       else if (output == 16) {
-        printf("%s", bit_dump_sequence_data_link_escape);
+        printf("%s", byte_dump_sequence_data_link_escape);
       }
       else if (output == 17) {
-        printf("%s", bit_dump_sequence_device_control_1);
+        printf("%s", byte_dump_sequence_device_control_1);
       }
       else if (output == 18) {
-        printf("%s", bit_dump_sequence_device_control_2);
+        printf("%s", byte_dump_sequence_device_control_2);
       }
       else if (output == 19) {
-        printf("%s", bit_dump_sequence_device_control_3);
+        printf("%s", byte_dump_sequence_device_control_3);
       }
       else if (output == 20) {
-        printf("%s", bit_dump_sequence_device_control_4);
+        printf("%s", byte_dump_sequence_device_control_4);
       }
       else if (output == 21) {
-        printf("%s", bit_dump_sequence_negative_acknowledge);
+        printf("%s", byte_dump_sequence_negative_acknowledge);
       }
       else if (output == 22) {
-        printf("%s", bit_dump_sequence_synchronous_idle);
+        printf("%s", byte_dump_sequence_synchronous_idle);
       }
       else if (output == 23) {
-        printf("%s", bit_dump_sequence_end_of_transmission_block);
+        printf("%s", byte_dump_sequence_end_of_transmission_block);
       }
       else if (output == 24) {
-        printf("%s", bit_dump_sequence_cancel);
+        printf("%s", byte_dump_sequence_cancel);
       }
       else if (output == 25) {
-        printf("%s", bit_dump_sequence_end_of_medium);
+        printf("%s", byte_dump_sequence_end_of_medium);
       }
       else if (output == 26) {
-        printf("%s", bit_dump_sequence_substitute);
+        printf("%s", byte_dump_sequence_substitute);
       }
       else if (output == 27) {
-        printf("%s", bit_dump_sequence_escape);
+        printf("%s", byte_dump_sequence_escape);
       }
       else if (output == 28) {
-        printf("%s", bit_dump_sequence_file_separator);
+        printf("%s", byte_dump_sequence_file_separator);
       }
       else if (output == 29) {
-        printf("%s", bit_dump_sequence_group_separator);
+        printf("%s", byte_dump_sequence_group_separator);
       }
       else if (output == 30) {
-        printf("%s", bit_dump_sequence_record_separator);
+        printf("%s", byte_dump_sequence_record_separator);
       }
       else if (output == 31) {
-        printf("%s", bit_dump_sequence_unit_separator);
+        printf("%s", byte_dump_sequence_unit_separator);
       }
       else if (output == 32) {
-        printf("%s", bit_dump_sequence_space);
+        printf("%s", byte_dump_sequence_space);
       }
       else if (output == 127) {
-        printf("%s", bit_dump_sequence_delete);
+        printf("%s", byte_dump_sequence_delete);
       }
       else if (f_utf_is_whitespace_character(characters.string[i]) == f_true) {
-        printf("%s", bit_dump_sequence_space);
+        printf("%s", byte_dump_sequence_space);
       }
       else if (width_utf == 2 && characters.string[i] == 0xc0800000) {
         // This is an "Overlong Null" and is a valid NULL character.
-        printf("%s", bit_dump_sequence_null);
+        printf("%s", byte_dump_sequence_null);
       }
       else if (width_utf == 2 && characters.string[i] >= 0xcc800000 && characters.string[i] <= 0xcdaf0000) {
         // Combining characters should not be combined here, instead display a space.
         printf(" ");
       }
       else if (characters.string[i] == f_utf_character_mask_bom) {
-        fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_sequence_utf_bom);
+        fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_sequence_utf_bom);
       }
       else if (width_utf == 1) {
         // print invalid placeholder for invalid UTF-8 widths.
         if (invalid[i]) {
-          fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_incomplete);
+          fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_incomplete);
         }
         else {
-          fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_incomplete);
+          fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_incomplete);
         }
       }
       else if (width_utf > 0) {
 
       // When using UTF-8 characters, the character columns will not line up, so print placeholders to simulate the bytes that are not printed, if necessary for alignment.
       if (width_utf > 1 && j + 1 < data.width) {
-        if (data.parameters[bit_dump_parameter_placeholder].result == f_console_result_found) {
+        if (data.parameters[byte_dump_parameter_placeholder].result == f_console_result_found) {
           if (invalid[i]) {
-            fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_placeholder);
+            fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_placeholder);
           }
           else {
-            fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_placeholder);
+            fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_placeholder);
           }
         }
         else {
         j++;
 
         if (width_utf > 2 && j + 1 < data.width) {
-          if (data.parameters[bit_dump_parameter_placeholder].result == f_console_result_found) {
+          if (data.parameters[byte_dump_parameter_placeholder].result == f_console_result_found) {
             if (invalid[i]) {
-              fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_placeholder);
+              fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_placeholder);
             }
             else {
-              fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_placeholder);
+              fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_placeholder);
             }
           }
           else {
           j++;
 
           if (width_utf > 3 && j + 1 < data.width) {
-            if (data.parameters[bit_dump_parameter_placeholder].result == f_console_result_found) {
+            if (data.parameters[byte_dump_parameter_placeholder].result == f_console_result_found) {
               if (invalid[i]) {
-                fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_placeholder);
+                fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_placeholder);
               }
               else {
-                fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_placeholder);
+                fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_placeholder);
               }
             }
             else {
     } // for
 
     // Print placeholder for the remaining parts of the line.
-    if (data.parameters[bit_dump_parameter_placeholder].result == f_console_result_found) {
+    if (data.parameters[byte_dump_parameter_placeholder].result == f_console_result_found) {
       for (; j < data.width; j++) {
         if (invalid[j]) {
-          fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", bit_dump_character_placeholder);
+          fl_color_print(f_standard_output, data.context.error, data.context.reset, "%s", byte_dump_character_placeholder);
         }
         else {
-          fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", bit_dump_character_placeholder);
+          fl_color_print(f_standard_output, data.context.warning, data.context.reset, "%s", byte_dump_character_placeholder);
         }
       } // for
     }
     fl_color_print(f_standard_output, data.context.notable, data.context.reset, " |");
     printf("%c", f_string_eol);
   }
-#endif // _di_bit_dump_file_
+#endif // _di_byte_dump_file_
 
-#ifndef _di_bit_dump_print_file_error_
-  void bit_dump_print_file_error(const fl_color_context context, const f_status status, const f_string function, const f_string file_name) {
+#ifndef _di_byte_dump_print_file_error_
+  void byte_dump_print_file_error(const fl_color_context context, const f_status status, const f_string function, const f_string file_name) {
     f_status error = f_status_set_fine(status);
 
     if (error == f_false) {
     fl_color_print(f_standard_error, context.notable, context.reset, "%s", file_name);
     fl_color_print_line(f_standard_error, context.error, context.reset, "'.");
   }
-#endif // _di_bit_dump_print_file_error_
+#endif // _di_byte_dump_print_file_error_
similarity index 69%
rename from level_3/bit_dump/c/private-bit_dump.h
rename to level_3/byte_dump/c/private-byte_dump.h
index ceb8119711357f67d666cb8287544d49dc433a77..180fa578a6cb69f70c16c915ee7d07b02ad25cda 100644 (file)
@@ -1,12 +1,12 @@
 /**
  * FLL - Level 3
  *
- * Project: Bit Dump
+ * Project: Byte Dump
  * API Version: 0.5
  * Licenses: lgplv2.1
  */
-#ifndef _PRIVATE_bit_dump_h
-#define _PRIVATE_bit_dump_h
+#ifndef _PRIVATE_byte_dump_h
+#define _PRIVATE_byte_dump_h
 
 #ifdef __cplusplus
 extern "C" {
@@ -30,9 +30,9 @@ extern "C" {
  *   f_none on success.
  *   f_failure (with error bit) on failure, usually when read() fails.
  */
-#ifndef _di_bit_dump_file_
-  extern f_return_status bit_dump_file(const bit_dump_data data, const f_string file_name, f_file file);
-#endif // _di_bit_dump_file_
+#ifndef _di_byte_dump_file_
+  extern f_return_status byte_dump_file(const byte_dump_data data, const f_string file_name, f_file file);
+#endif // _di_byte_dump_file_
 
 /**
  * Print a single character hex code and if the width is reached properly terminate the line.
@@ -59,16 +59,16 @@ extern "C" {
  * @param column
  *   The current column that the character is being printed on.
  *   This value is incremented to represent that the character is printed.
- *   When the max width is reached bit_dump_print_text() is called and this value is reset.
+ *   When the max width is reached byte_dump_print_text() is called and this value is reset.
  * @param row
  *   The current row that the character is being printed on.
- *   When the max width is reached bit_dump_print_text() is called and this value is incremented.
+ *   When the max width is reached byte_dump_print_text() is called and this value is incremented.
  *
- * @see bit_dump_print_text()
+ * @see byte_dump_print_text()
  */
-#ifndef _di_bit_dump_print_character_fragment_
-  extern f_bool bit_dump_print_character_fragment(const bit_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], const int8_t width_utf, const int8_t byte_current, uint8_t *previous_bytes, uint8_t *previous_invalid, uint8_t *column, uint64_t *row);
-#endif // _di_bit_dump_print_character_fragment_
+#ifndef _di_byte_dump_print_character_fragment_
+  extern f_bool byte_dump_print_character_fragment(const byte_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], const int8_t width_utf, const int8_t byte_current, uint8_t *previous_bytes, uint8_t *previous_invalid, uint8_t *column, uint64_t *row);
+#endif // _di_byte_dump_print_character_fragment_
 
 
 /**
@@ -90,9 +90,9 @@ extern "C" {
  *   The specific invalid value provided representing the overflowed bytes.
  *   This is used to print the placeholders.
  */
-#ifndef _di_bit_dump_print_text_
-  extern void bit_dump_print_text(const bit_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], uint8_t *previous_bytes, uint8_t *previous_invalid);
-#endif // _di_bit_dump_print_text_
+#ifndef _di_byte_dump_print_text_
+  extern void byte_dump_print_text(const byte_dump_data data, const f_utf_string_dynamic characters, const uint8_t invalid[], uint8_t *previous_bytes, uint8_t *previous_invalid);
+#endif // _di_byte_dump_print_text_
 
 /**
  * Print error messages related to a file.
@@ -110,8 +110,8 @@ extern "C" {
  *   f_true if error has been printed.
  *   f_false if error has not been printed.
  */
-#ifndef _di_bit_dump_print_file_error_
-  extern void bit_dump_print_file_error(const fl_color_context context, const f_status status, const f_string function, const f_string file_name);
-#endif // _di_bit_dump_print_file_error_
+#ifndef _di_byte_dump_print_file_error_
+  extern void byte_dump_print_file_error(const fl_color_context context, const f_status status, const f_string function, const f_string file_name);
+#endif // _di_byte_dump_print_file_error_
 
-#endif // _PRIVATE_bit_dump_h
+#endif // _PRIVATE_byte_dump_h
similarity index 80%
rename from level_3/bit_dump/data/build/settings
rename to level_3/byte_dump/data/build/settings
index 20f93fce2f005001d89bb3de35d7ce0b701dcce3..0521c90970fd429f584eaecba6fd29b64054b5fe 100644 (file)
@@ -1,6 +1,6 @@
 # fss-0000
 
-project_name bit_dump
+project_name byte_dump
 project_level 3
 
 version_major 0
@@ -13,9 +13,9 @@ build_libraries -lc
 build_libraries_fll -lfll_program -lfl_utf -lfl_string -lfl_file -lfl_console -lfl_color -lf_utf -lf_print -lf_pipe -lf_file -lf_conversion -lf_console -lf_memory
 #build_libraries_fll-level -lfll_2 -lfll_1 -lfll_0
 #build_libraries_fll-monolithic -lfll
-build_sources_library bit_dump.c private-bit_dump.c
+build_sources_library byte_dump.c private-byte_dump.c
 build_sources_program main.c
-build_sources_headers bit_dump.h
+build_sources_headers byte_dump.h
 build_sources_bash
 build_sources_settings
 build_shared yes
@@ -29,4 +29,4 @@ flags_all -z now -g
 flags_shared
 flags_static
 flags_library -fPIC
-flags_program -fPIE -lbit_dump
+flags_program -fPIE -lbyte_dump