From: Kevin Day Date: Wed, 9 Jun 2021 02:01:29 +0000 (-0500) Subject: Progress: Incorrect linkage, not handling default values well, add version_nano,... X-Git-Tag: 0.5.4~11 X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=58dc90924b552d117f9ab128c0b43ac9356fb037;p=fll Progress: Incorrect linkage, not handling default values well, add version_nano, add version prefixes, and out of date documentation. The documentation has version_target described as the target to build but the C source for Featureless Make is using it for the link file name. Change this behavior to be consistent with the documentation. Update all build settings to now be set to micro to be consistent with this change. The default values should only be assigned if the Object is not provided at all. This allows for the value to be set to empty (aka NULL). The version_major, version_minor, and version_micro all are currently required to be defined and if empty will be set to 0. Some projects use four versions and others like to add things like "-dev" or "-rc1". Provide a way to do this by adding a version_nano as well as adding version prefixes. For each version there is now a version_X_prefix such as version_major now has version_major_prefix. For all version prefixes, except version_major_prefix, the prefix will be in place of the '.' in the version name. The major version is an exception case as there is no value by default. For example "1.2.3" would have version_major = "1", version_minor_prefix = ".", version_minor = "2", version_micro_prefix = "." version_micro = "3". The default version continues to be a version_target of micro, such as "1.2.3". The build settings documentation is out of date and needed some corrections to be made. There is still more work to do in adding the prefixes and making the bootstrap.sh script and the fake program more consistent with the version numbers. I simply ran out of time. --- diff --git a/build/level_0/settings b/build/level_0/settings index b31ed83..d4340ec 100644 --- a/build/level_0/settings +++ b/build/level_0/settings @@ -5,7 +5,7 @@ project_name fll_0 version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/build/level_1/settings b/build/level_1/settings index 60da028..8814153 100644 --- a/build/level_1/settings +++ b/build/level_1/settings @@ -5,7 +5,7 @@ project_name fll_1 version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/build/level_2/settings b/build/level_2/settings index 3c327a0..1399c50 100644 --- a/build/level_2/settings +++ b/build/level_2/settings @@ -5,7 +5,7 @@ project_name fll_2 version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/build/monolithic/settings b/build/monolithic/settings index da83767..2dc47fa 100644 --- a/build/monolithic/settings +++ b/build/monolithic/settings @@ -5,7 +5,7 @@ project_name fll version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/build/scripts/bootstrap.sh b/build/scripts/bootstrap.sh index 5819d13..dbf83de 100644 --- a/build/scripts/bootstrap.sh +++ b/build/scripts/bootstrap.sh @@ -183,6 +183,13 @@ bootstrap_main() { return 1 fi + bootstrap_load_settings_has + + if [[ $? -ne 0 ]] ; then + bootstrap_cleanup + return 1 + fi + project_built="${path_build_stage}${variables[$(bootstrap_id project_name)]}" if [[ $process != "" ]] ; then project_built="${project_built}-$process" @@ -433,57 +440,76 @@ bootstrap_id() { "build_sources_headers") echo -n 6;; "build_sources_library") echo -n 7;; "build_sources_program") echo -n 8;; - "build_sources_setting") echo -n 9;; - "build_sources_script") echo -n 10;; + "build_sources_script") echo -n 9;; + "build_sources_setting") echo -n 10;; "build_static") echo -n 11;; "defines_all") echo -n 12;; - "defines_shared") echo -n 13;; - "defines_static") echo -n 14;; - "environment") echo -n 15;; - "flags_all") echo -n 16;; - "flags_library") echo -n 17;; - "flags_program") echo -n 18;; - "flags_shared") echo -n 19;; - "flags_static") echo -n 20;; - "modes") echo -n 21;; - "modes_default") echo -n 22;; - "path_language") echo -n 23;; - "path_headers") echo -n 24;; - "path_headers_preserve") echo -n 25;; - "path_library_script") echo -n 26;; - "path_library_shared") echo -n 27;; - "path_library_static") echo -n 28;; - "path_program_script") echo -n 29;; - "path_program_shared") echo -n 30;; - "path_program_static") echo -n 31;; - "path_sources") echo -n 32;; - "path_standard") echo -n 33;; - "process_post") echo -n 34;; - "process_pre") echo -n 35;; - "project_name") echo -n 36;; - "search_exclusive") echo -n 37;; - "search_shared") echo -n 38;; - "search_static") echo -n 39;; - "version_major") echo -n 40;; - "version_micro") echo -n 41;; - "version_minor") echo -n 42;; - "version_target") echo -n 43;; - - "build_libraries-$mode") echo -n 44;; - "build_sources_headers-$mode") echo -n 45;; - "build_sources_library-$mode") echo -n 46;; - "build_sources_program-$mode") echo -n 47;; - "build_sources_setting-$mode") echo -n 48;; - "build_sources_script-$mode") echo -n 49;; - "defines_all-$mode") echo -n 50;; - "defines_shared-$mode") echo -n 51;; - "defines_static-$mode") echo -n 52;; - "environment-$mode") echo -n 53;; - "flags_all-$mode") echo -n 54;; - "flags_library-$mode") echo -n 55;; - "flags_program-$mode") echo -n 56;; - "flags_shared-$mode") echo -n 57;; - "flags_static-$mode") echo -n 58;; + "defines_library") echo -n 13;; + "defines_program") echo -n 14;; + "defines_shared") echo -n 15;; + "defines_static") echo -n 16;; + "environment") echo -n 17;; + "flags_all") echo -n 18;; + "flags_library") echo -n 19;; + "flags_program") echo -n 20;; + "flags_shared") echo -n 21;; + "flags_static") echo -n 22;; + "modes") echo -n 23;; + "modes_default") echo -n 24;; + "path_headers") echo -n 25;; + "path_headers_preserve") echo -n 26;; + "path_language") echo -n 27;; + "path_library_script") echo -n 28;; + "path_library_shared") echo -n 29;; + "path_library_static") echo -n 30;; + "path_program_script") echo -n 31;; + "path_program_shared") echo -n 32;; + "path_program_static") echo -n 33;; + "path_sources") echo -n 34;; + "path_standard") echo -n 35;; + "process_post") echo -n 36;; + "process_pre") echo -n 37;; + "project_name") echo -n 38;; + "search_exclusive") echo -n 39;; + "search_shared") echo -n 40;; + "search_static") echo -n 41;; + "version_major") echo -n 42;; + "version_major_prefix") echo -n 43;; + "version_micro") echo -n 44;; + "version_micro_prefix") echo -n 45;; + "version_minor") echo -n 46;; + "version_minor_prefix") echo -n 47;; + "version_nano") echo -n 48;; + "version_nano_prefix") echo -n 49;; + "version_target") echo -n 50;; + + "build_libraries-$mode") echo -n 51;; + "build_sources_headers-$mode") echo -n 52;; + "build_sources_library-$mode") echo -n 53;; + "build_sources_program-$mode") echo -n 54;; + "build_sources_script-$mode") echo -n 55;; + "build_sources_setting-$mode") echo -n 56;; + "defines_all-$mode") echo -n 57;; + "defines_library-$mode") echo -n 58;; + "defines_program-$mode") echo -n 59;; + "defines_shared-$mode") echo -n 60;; + "defines_static-$mode") echo -n 61;; + "environment-$mode") echo -n 62;; + "flags_all-$mode") echo -n 63;; + "flags_library-$mode") echo -n 64;; + "flags_program-$mode") echo -n 65;; + "flags_shared-$mode") echo -n 66;; + "flags_static-$mode") echo -n 67;; + + "has-version_major_prefix") echo -n 68;; + "has-version_micro_prefix") echo -n 69;; + "has-version_minor_prefix") echo -n 70;; + "has-version_nano_prefix") echo -n 71;; + + "has-version_major_prefix-$mode") echo -n 72;; + "has-version_micro_prefix-$mode") echo -n 73;; + "has-version_minor_prefix-$mode") echo -n 74;; + "has-version_nano_prefix-$mode") echo -n 75;; esac } @@ -510,7 +536,7 @@ bootstrap_load_settings() { return 1 fi - for i in build_compiler build_indexer build_language build_libraries build_script build_shared build_sources_headers build_sources_library build_sources_program build_sources_setting build_sources_script build_static defines_all defines_shared defines_static environment flags_all flags_library flags_program flags_shared flags_static modes modes_default path_language path_headers path_headers_preserve path_library_script path_library_shared path_library_static path_program_script path_program_shared path_program_static path_sources path_standard process_post process_pre project_name search_exclusive search_shared search_static version_major version_micro version_minor ; do + for i in build_compiler build_indexer build_language build_libraries build_script build_shared build_sources_headers build_sources_library build_sources_program build_sources_script build_sources_setting build_static defines_all defines_library defines_program defines_shared defines_static environment flags_all flags_library flags_program flags_shared flags_static modes modes_default path_headers path_headers_preserve path_language path_library_script path_library_shared path_library_static path_program_script path_program_shared path_program_static path_sources path_standard process_post process_pre project_name search_exclusive search_shared search_static version_major version_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target ; do variables[$(bootstrap_id $i)]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||') done } @@ -518,11 +544,31 @@ bootstrap_load_settings() { bootstrap_load_settings_mode() { local i= - for i in build_libraries-$mode build_sources_headers-$mode build_sources_library-$mode build_sources_program-$mode build_sources_setting-$mode build_sources_script-$mode defines_all-$mode defines_shared-$mode defines_static-$mode environment-$mode flags_all-$mode flags_library-$mode flags_program-$mode flags_shared-$mode flags_static-$mode ; do + for i in build_libraries-$mode build_sources_headers-$mode build_sources_library-$mode build_sources_program-$mode build_sources_script-$mode build_sources_setting-$mode defines_all-$mode defines_library-$mode defines_program-$mode defines_shared-$mode defines_static-$mode environment-$mode flags_all-$mode flags_library-$mode flags_program-$mode flags_shared-$mode flags_static-$mode ; do variables[$(bootstrap_id $i)]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||') done } +bootstrap_load_settings_has() { + local i= + + for i in version_major_prefix version_minor_prefix version_micro_prefix version_nano_prefix ; do + if [[ $(grep -s -o "^[[:space:]]*$i\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then + variables[$(bootstrap_id has-$i)]="yes" + else + variables[$(bootstrap_id has-$i)]="no" + fi + done + + for i in version_major_prefix-$mode version_minor_prefix-$mode version_micro_prefix-$mode version_nano_prefix-$mode ; do + if [[ $(grep -s -o "^[[:space:]]*$i-$mode\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then + variables[$(bootstrap_id has-$i)]="yes" + else + variables[$(bootstrap_id has-$i)]="no" + fi + done +} + bootstrap_prepare_build() { local failure= local alt=$1 @@ -547,8 +593,13 @@ bootstrap_operation_build() { local failure= local name=${variables[$(bootstrap_id project_name)]} local major=${variables[$(bootstrap_id version_major)]} + local major_prefix=${variables[$(bootstrap_id version_major_prefix)]} local minor=${variables[$(bootstrap_id version_minor)]} + local minor_prefix=${variables[$(bootstrap_id version_minor_prefix)]} local micro=${variables[$(bootstrap_id version_micro)]} + local micro_prefix=${variables[$(bootstrap_id version_micro_prefix)]} + local nano=${variables[$(bootstrap_id version_nano)]} + local nano_prefix=${variables[$(bootstrap_id version_nano_prefix)]} local target=${variables[$(bootstrap_id version_target)]} local compiler=${variables[$(bootstrap_id build_compiler)]} local indexer=${variables[$(bootstrap_id build_indexer)]} @@ -560,22 +611,24 @@ bootstrap_operation_build() { local search_static=${variables[$(bootstrap_id search_static)]} local shared=${variables[$(bootstrap_id build_shared)]} local static=${variables[$(bootstrap_id build_static)]} + local sources_headers=${variables[$(bootstrap_id build_sources_headers)]} local sources_library=${variables[$(bootstrap_id build_sources_library)]} local sources_program=${variables[$(bootstrap_id build_sources_program)]} - local sources_headers=${variables[$(bootstrap_id build_sources_headers)]} - local sources_bash=${variables[$(bootstrap_id build_sources_bash)]} + local sources_script=${variables[$(bootstrap_id build_sources_script)]} local sources_setting=${variables[$(bootstrap_id build_sources_setting)]} local sources= local libraries=${variables[$(bootstrap_id build_libraries)]} local links= - local defines=${variables[$(bootstrap_id defines_all)]} + local defines_all=${variables[$(bootstrap_id defines_all)]} + local defines_library=${variables[$(bootstrap_id defines_library)]} + local defines_program=${variables[$(bootstrap_id defines_program)]} local defines_shared=${variables[$(bootstrap_id defines_shared)]} local defines_static=${variables[$(bootstrap_id defines_static)]} local flags_all=${variables[$(bootstrap_id flags_all)]} - local flags_shared=${variables[$(bootstrap_id flags_shared)]} - local flags_static=${variables[$(bootstrap_id flags_static)]} local flags_library=${variables[$(bootstrap_id flags_library)]} local flags_program=${variables[$(bootstrap_id flags_program)]} + local flags_shared=${variables[$(bootstrap_id flags_shared)]} + local flags_static=${variables[$(bootstrap_id flags_static)]} local i= local n= local version= @@ -584,16 +637,31 @@ bootstrap_operation_build() { local path_headers=${variables[$(bootstrap_id path_headers)]} local path_headers_preserve=${variables[$(bootstrap_id path_headers_preserve)]} + # provide defaults for version prefixes if they are not specified (except for major). + if [[ ${variables[$(bootstrap_id has-version_minor_prefix)]} != "yes" && $minor != "" ]] ; then + minor_prefix="." + fi + + if [[ ${variables[$(bootstrap_id has-version_micro_prefix)]} != "yes" && $micro != "" ]] ; then + micro_prefix="." + fi + + if [[ ${variables[$(bootstrap_id has-version_nano_prefix)]} != "yes" && $nano != "" ]] ; then + nano_prefix="." + fi + if [[ $target == "" ]] ; then - target="major" + target="micro" fi if [[ $target == "major" ]] ; then - version="$major" + version="$major_prefix$major" elif [[ $target == "minor" ]] ; then - version="${major}.$minor" + version="$major_prefix$major$minor_prefix$minor" elif [[ $target == "micro" ]] ; then - version="${major}.${minor}.$micro" + version="$major_prefix$major$minor_prefix$minor$micro_prefix$micro" + elif [[ $target == "nano" ]] ; then + version="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano" fi if [[ $sources_library == "" ]] ; then @@ -626,10 +694,22 @@ bootstrap_operation_build() { libraries="${variables[$(bootstrap_id build_libraries-$mode)]} $libraries" fi - if [[ $defines == "" ]] ; then - defines=${variables[$(bootstrap_id defines_all-$mode)]} + if [[ $defines_all == "" ]] ; then + defines_all=${variables[$(bootstrap_id defines_all-$mode)]} + else + defines_all="$defines_all ${variables[$(bootstrap_id defines_all-$mode)]}" + fi + + if [[ $defines_library == "" ]] ; then + defines_library=${variables[$(bootstrap_id defines_library-$mode)]} + else + defines_library="$defines_library ${variables[$(bootstrap_id defines_library-$mode)]}" + fi + + if [[ $defines_program == "" ]] ; then + defines_program=${variables[$(bootstrap_id defines_program-$mode)]} else - defines="$defines ${variables[$(bootstrap_id defines_all-$mode)]}" + defines_program="$defines_program ${variables[$(bootstrap_id defines_program-$mode)]}" fi if [[ $defines_shared == "" ]] ; then @@ -650,18 +730,6 @@ bootstrap_operation_build() { flags_all="$flags_all ${variables[$(bootstrap_id flags_all-$mode)]}" fi - if [[ $flags_shared == "" ]] ; then - flags_shared=${variables[$(bootstrap_id flags_shared-$mode)]} - else - flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-$mode)]}" - fi - - if [[ $flags_static == "" ]] ; then - flags_static=${variables[$(bootstrap_id flags_static-$mode)]} - else - flags_static="$flags_static ${variables[$(bootstrap_id flags_static-$mode)]}" - fi - if [[ $flags_library == "" ]] ; then flags_library=${variables[$(bootstrap_id flags_library-$mode)]} else @@ -674,6 +742,18 @@ bootstrap_operation_build() { flags_program="$flags_program ${variables[$(bootstrap_id flags_program-$mode)]}" fi + if [[ $flags_shared == "" ]] ; then + flags_shared=${variables[$(bootstrap_id flags_shared-$mode)]} + else + flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-$mode)]}" + fi + + if [[ $flags_static == "" ]] ; then + flags_static=${variables[$(bootstrap_id flags_static-$mode)]} + else + flags_static="$flags_static ${variables[$(bootstrap_id flags_static-$mode)]}" + fi + if [[ $path_work != "" ]] ; then arguments_include="$arguments_include -I${path_work}includes/" arguments_shared="$arguments_shared -L${path_work}libraries/shared/" @@ -681,32 +761,13 @@ bootstrap_operation_build() { fi if [[ $defines_override != "" ]] ; then - defines="$defines_override" + defines_all="$defines_override" + defines_library= + defines_program= defines_shared= defines_static= fi - if [[ $defines != "" ]] ; then - flags_all="$flags_all " - for i in $defines ; do - flags_all="${flags_all}$i " - done - fi - - if [[ $defines_shared != "" ]] ; then - flags_shared="$flags_shared " - for i in $defines_shared ; do - flags_shared="${flags_shared}$i " - done - fi - - if [[ $defines_static != "" ]] ; then - flags_static="$flags_static " - for i in $defines_static ; do - flags_static="${flags_static}$i " - done - fi - if [[ $enable_shared == "yes" ]] ; then shared="yes" search_shared="yes" @@ -872,13 +933,16 @@ bootstrap_operation_build() { done if [[ $verbosity == "verbose" ]] ; then - echo $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$major.$minor.$micro $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library + echo $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$version $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library fi - $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$major.$minor.$micro $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library || failure=1 + $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$version $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library || failure=1 if [[ $failure == "" ]] ; then - ln $verbose -sf lib$name.so.$major.$minor.$micro ${path_build}libraries/shared/lib$name.so.$major || failure=1 + if [[ $target != "major" ]] ; then + ln $verbose -sf lib$name.so.$version ${path_build}libraries/shared/lib$name.so.$major || failure=1 + fi + ln $verbose -sf lib$name.so.$major ${path_build}libraries/shared/lib$name.so || failure=1 fi fi @@ -896,10 +960,10 @@ bootstrap_operation_build() { done if [[ $verbosity == "verbose" ]] ; then - echo $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program + echo $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program $defines_all $defines_shared $defines_program fi - $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program || failure=1 + $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program $defines_all $defines_shared $defines_program || failure=1 fi fi @@ -922,10 +986,10 @@ bootstrap_operation_build() { sources="$sources${path_build}objects/$directory/$n.o " if [[ $verbosity == "verbose" ]] ; then - echo $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library + echo $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library $defines_all $defines_static $defines_library fi - $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library || failure=1 + $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library $defines_all $defines_static $defines_library || failure=1 if [[ $failure == "1" ]] ; then break; @@ -955,10 +1019,10 @@ bootstrap_operation_build() { done if [[ $verbosity == "verbose" ]] ; then - echo $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program + echo $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program $defines_all $defines_static $defines_program fi - $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program || failure=1 + $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program $defines_all $defines_static $defines_program || failure=1 fi fi @@ -998,6 +1062,7 @@ bootstrap_cleanup() { unset bootstrap_id unset bootstrap_load_settings unset bootstrap_load_settings_mode + unset bootstrap_load_settings_has unset bootstrap_prepare_build unset bootstrap_operation_build unset bootstrap_operation_clean diff --git a/level_0/f_account/data/build/settings b/level_0/f_account/data/build/settings index d8210c9..3fe24fb 100644 --- a/level_0/f_account/data/build/settings +++ b/level_0/f_account/data/build/settings @@ -5,7 +5,7 @@ project_name f_account version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_capability/data/build/settings b/level_0/f_capability/data/build/settings index cdcd09a..27722d8 100644 --- a/level_0/f_capability/data/build/settings +++ b/level_0/f_capability/data/build/settings @@ -5,7 +5,7 @@ project_name f_capability version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_color/data/build/settings b/level_0/f_color/data/build/settings index e09e9c4..95b4dfe 100644 --- a/level_0/f_color/data/build/settings +++ b/level_0/f_color/data/build/settings @@ -5,7 +5,7 @@ project_name f_color version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_console/data/build/settings b/level_0/f_console/data/build/settings index a4a4740..1a1678c 100644 --- a/level_0/f_console/data/build/settings +++ b/level_0/f_console/data/build/settings @@ -5,7 +5,7 @@ project_name f_console version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_control_group/data/build/settings b/level_0/f_control_group/data/build/settings index 769ac4c..f85fea3 100644 --- a/level_0/f_control_group/data/build/settings +++ b/level_0/f_control_group/data/build/settings @@ -5,7 +5,7 @@ project_name f_control_group version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_conversion/data/build/settings b/level_0/f_conversion/data/build/settings index 0768814..7ef969a 100644 --- a/level_0/f_conversion/data/build/settings +++ b/level_0/f_conversion/data/build/settings @@ -5,7 +5,7 @@ project_name f_conversion version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_directory/data/build/settings b/level_0/f_directory/data/build/settings index 5bfcaea..16aae95 100644 --- a/level_0/f_directory/data/build/settings +++ b/level_0/f_directory/data/build/settings @@ -5,7 +5,7 @@ project_name f_directory version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_environment/data/build/settings b/level_0/f_environment/data/build/settings index b8d6fb3..56f22ad 100644 --- a/level_0/f_environment/data/build/settings +++ b/level_0/f_environment/data/build/settings @@ -5,7 +5,7 @@ project_name f_environment version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_execute/data/build/settings b/level_0/f_execute/data/build/settings index d2f719a..297bf65 100644 --- a/level_0/f_execute/data/build/settings +++ b/level_0/f_execute/data/build/settings @@ -5,7 +5,7 @@ project_name f_execute version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_file/data/build/settings b/level_0/f_file/data/build/settings index 79fa433..1c103a2 100644 --- a/level_0/f_file/data/build/settings +++ b/level_0/f_file/data/build/settings @@ -5,7 +5,7 @@ project_name f_file version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_fss/data/build/settings b/level_0/f_fss/data/build/settings index 58dab1f..cc1b833 100644 --- a/level_0/f_fss/data/build/settings +++ b/level_0/f_fss/data/build/settings @@ -5,7 +5,7 @@ project_name f_fss version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_iki/data/build/settings b/level_0/f_iki/data/build/settings index 1c93855..4bc11d2 100644 --- a/level_0/f_iki/data/build/settings +++ b/level_0/f_iki/data/build/settings @@ -5,7 +5,7 @@ project_name f_iki version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_limit/data/build/settings b/level_0/f_limit/data/build/settings index b283796..1d2cc95 100644 --- a/level_0/f_limit/data/build/settings +++ b/level_0/f_limit/data/build/settings @@ -5,7 +5,7 @@ project_name f_limit version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_memory/data/build/settings b/level_0/f_memory/data/build/settings index b36e04a..e601a57 100644 --- a/level_0/f_memory/data/build/settings +++ b/level_0/f_memory/data/build/settings @@ -5,7 +5,7 @@ project_name f_memory version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_path/data/build/settings b/level_0/f_path/data/build/settings index 3525893..973b76f 100644 --- a/level_0/f_path/data/build/settings +++ b/level_0/f_path/data/build/settings @@ -5,7 +5,7 @@ project_name f_path version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_pipe/data/build/settings b/level_0/f_pipe/data/build/settings index e2c93b1..9de6fdd 100644 --- a/level_0/f_pipe/data/build/settings +++ b/level_0/f_pipe/data/build/settings @@ -5,7 +5,7 @@ project_name f_pipe version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_print/data/build/settings b/level_0/f_print/data/build/settings index d9b31d1..119785c 100644 --- a/level_0/f_print/data/build/settings +++ b/level_0/f_print/data/build/settings @@ -5,7 +5,7 @@ project_name f_print version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_serialize/data/build/settings b/level_0/f_serialize/data/build/settings index 755ffbc..6f4d8ae 100644 --- a/level_0/f_serialize/data/build/settings +++ b/level_0/f_serialize/data/build/settings @@ -5,7 +5,7 @@ project_name f_serialize version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_signal/data/build/settings b/level_0/f_signal/data/build/settings index 69ad0c4..6d336af 100644 --- a/level_0/f_signal/data/build/settings +++ b/level_0/f_signal/data/build/settings @@ -5,7 +5,7 @@ project_name f_signal version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_socket/data/build/settings b/level_0/f_socket/data/build/settings index 6dde175..5619361 100644 --- a/level_0/f_socket/data/build/settings +++ b/level_0/f_socket/data/build/settings @@ -5,7 +5,7 @@ project_name f_socket version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_status/data/build/settings b/level_0/f_status/data/build/settings index ab42477..6a631ab 100644 --- a/level_0/f_status/data/build/settings +++ b/level_0/f_status/data/build/settings @@ -5,7 +5,7 @@ project_name f_status version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_string/data/build/settings b/level_0/f_string/data/build/settings index d0f9630..45c2278 100644 --- a/level_0/f_string/data/build/settings +++ b/level_0/f_string/data/build/settings @@ -5,7 +5,7 @@ project_name f_string version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_thread/data/build/settings b/level_0/f_thread/data/build/settings index 374681d..8b32453 100644 --- a/level_0/f_thread/data/build/settings +++ b/level_0/f_thread/data/build/settings @@ -5,7 +5,7 @@ project_name f_thread version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_type/data/build/settings b/level_0/f_type/data/build/settings index 7b31218..5ef106c 100644 --- a/level_0/f_type/data/build/settings +++ b/level_0/f_type/data/build/settings @@ -5,7 +5,7 @@ project_name f_type version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_type_array/data/build/settings b/level_0/f_type_array/data/build/settings index 25f1bad..c4708ef 100644 --- a/level_0/f_type_array/data/build/settings +++ b/level_0/f_type_array/data/build/settings @@ -5,7 +5,7 @@ project_name f_type_array version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_0/f_utf/data/build/settings b/level_0/f_utf/data/build/settings index 56228b2..6b1d86c 100644 --- a/level_0/f_utf/data/build/settings +++ b/level_0/f_utf/data/build/settings @@ -5,7 +5,7 @@ project_name f_utf version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_console/data/build/settings b/level_1/fl_console/data/build/settings index bc49ea5..0741e9f 100644 --- a/level_1/fl_console/data/build/settings +++ b/level_1/fl_console/data/build/settings @@ -5,7 +5,7 @@ project_name fl_console version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_control_group/data/build/settings b/level_1/fl_control_group/data/build/settings index cd81f7a..6de5384 100644 --- a/level_1/fl_control_group/data/build/settings +++ b/level_1/fl_control_group/data/build/settings @@ -5,7 +5,7 @@ project_name fl_control_group version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_conversion/data/build/settings b/level_1/fl_conversion/data/build/settings index b88c617..35248a0 100644 --- a/level_1/fl_conversion/data/build/settings +++ b/level_1/fl_conversion/data/build/settings @@ -5,7 +5,7 @@ project_name fl_conversion version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_directory/data/build/settings b/level_1/fl_directory/data/build/settings index 5392704..cfda9d3 100644 --- a/level_1/fl_directory/data/build/settings +++ b/level_1/fl_directory/data/build/settings @@ -5,7 +5,7 @@ project_name fl_directory version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_environment/data/build/settings b/level_1/fl_environment/data/build/settings index cc6bd47..9b6c1d4 100644 --- a/level_1/fl_environment/data/build/settings +++ b/level_1/fl_environment/data/build/settings @@ -5,7 +5,7 @@ project_name fl_environment version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_execute/data/build/settings b/level_1/fl_execute/data/build/settings index 9268162..55e942d 100644 --- a/level_1/fl_execute/data/build/settings +++ b/level_1/fl_execute/data/build/settings @@ -5,7 +5,7 @@ project_name fl_execute version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_fss/data/build/settings b/level_1/fl_fss/data/build/settings index a87697c..de5e07f 100644 --- a/level_1/fl_fss/data/build/settings +++ b/level_1/fl_fss/data/build/settings @@ -5,7 +5,7 @@ project_name fl_fss version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_iki/data/build/settings b/level_1/fl_iki/data/build/settings index 5872f4c..03be9e8 100644 --- a/level_1/fl_iki/data/build/settings +++ b/level_1/fl_iki/data/build/settings @@ -5,7 +5,7 @@ project_name fl_iki version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_print/data/build/settings b/level_1/fl_print/data/build/settings index 4636dda..2b627e3 100644 --- a/level_1/fl_print/data/build/settings +++ b/level_1/fl_print/data/build/settings @@ -5,7 +5,7 @@ project_name fl_print version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_signal/data/build/settings b/level_1/fl_signal/data/build/settings index 76590c6..9107aef 100644 --- a/level_1/fl_signal/data/build/settings +++ b/level_1/fl_signal/data/build/settings @@ -5,7 +5,7 @@ project_name fl_iki version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_status/data/build/settings b/level_1/fl_status/data/build/settings index eb38ede..a7c80ff 100644 --- a/level_1/fl_status/data/build/settings +++ b/level_1/fl_status/data/build/settings @@ -5,7 +5,7 @@ project_name fl_status version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_string/data/build/settings b/level_1/fl_string/data/build/settings index f21e37e..fb89d0a 100644 --- a/level_1/fl_string/data/build/settings +++ b/level_1/fl_string/data/build/settings @@ -5,7 +5,7 @@ project_name fl_string version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_utf/data/build/settings b/level_1/fl_utf/data/build/settings index 4beff2a..be6ad54 100644 --- a/level_1/fl_utf/data/build/settings +++ b/level_1/fl_utf/data/build/settings @@ -5,7 +5,7 @@ project_name fl_utf version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_1/fl_utf_file/data/build/settings b/level_1/fl_utf_file/data/build/settings index b7bd80d..7b91ce3 100644 --- a/level_1/fl_utf_file/data/build/settings +++ b/level_1/fl_utf_file/data/build/settings @@ -5,7 +5,7 @@ project_name fl_utf_file version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_control_group/data/build/settings b/level_2/fll_control_group/data/build/settings index 43e780e..f5b09c1 100644 --- a/level_2/fll_control_group/data/build/settings +++ b/level_2/fll_control_group/data/build/settings @@ -5,7 +5,7 @@ project_name fll_control_group version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_error/data/build/settings b/level_2/fll_error/data/build/settings index ef6d0e1..88fbe4f 100644 --- a/level_2/fll_error/data/build/settings +++ b/level_2/fll_error/data/build/settings @@ -5,7 +5,7 @@ project_name fll_error version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_execute/data/build/settings b/level_2/fll_execute/data/build/settings index 6727fff..bcfb09f 100644 --- a/level_2/fll_execute/data/build/settings +++ b/level_2/fll_execute/data/build/settings @@ -5,7 +5,7 @@ project_name fll_execute version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_file/data/build/settings b/level_2/fll_file/data/build/settings index 1395c38..0448e2d 100644 --- a/level_2/fll_file/data/build/settings +++ b/level_2/fll_file/data/build/settings @@ -5,7 +5,7 @@ project_name fll_file version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_fss/c/fss.c b/level_2/fll_fss/c/fss.c index b262696..55a67dc 100644 --- a/level_2/fll_fss/c/fss.c +++ b/level_2/fll_fss/c/fss.c @@ -186,7 +186,7 @@ extern "C" { #endif // _di_fll_fss_identify_ #ifndef _di_fll_fss_snatch_ - f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], f_array_length_t *indexs[]) { + f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -207,11 +207,12 @@ extern "C" { memset(&matched, 0, sizeof(bool) * size); - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { + if (matched[j]) continue; status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); @@ -221,6 +222,10 @@ extern "C" { matched[j] = F_true; + if (matches) { + matches[j] = F_true; + } + if (!contents.array[i].used) continue; status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], values[j]); @@ -237,7 +242,7 @@ extern "C" { #endif // _di_fll_fss_snatch_ #ifndef _di_fll_fss_snatch_apart_ - f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -257,11 +262,11 @@ extern "C" { f_array_length_t j = 0; f_array_length_t k = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); @@ -271,6 +276,10 @@ extern "C" { value = values[j]; content = &contents.array[i]; + if (matches) { + matches[j] = F_true; + } + if (values[j]->used + contents.array[i].used > values[j]->size) { if (values[j]->used + contents.array[i].used > f_array_length_t_size) { return F_status_set_error(F_array_too_large); @@ -285,16 +294,16 @@ extern "C" { } } - for (k = 0; k < contents.array[i].used; k++) { + for (k = 0; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[k], &values[j]->array[values[j]->used]); if (F_status_is_error(status)) return status; - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } } // for } // for @@ -305,7 +314,7 @@ extern "C" { #endif // _di_fll_fss_snatch_apart_ #ifndef _di_fll_fss_snatch_map_ - f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -328,12 +337,13 @@ extern "C" { f_string_map_t *map = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { + if (!contents.array[i].used) continue; length_name = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]); @@ -344,24 +354,30 @@ extern "C" { if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } matched = F_false; length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1; - for (k = 0; k < values[j]->used; k++) { + for (k = 0; k < values[j]->used; ++k) { status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used); if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } if (status == F_equal_to) { matched = F_true; + if (matches) { + matches[j] = F_true; + } + macro_f_string_dynamic_t_delete_simple(name); break; } @@ -369,6 +385,7 @@ extern "C" { if (matched) { name.used = 0; + continue; } @@ -376,6 +393,7 @@ extern "C" { if (values[j]->used + f_fss_default_allocation_step > f_array_length_t_size) { if (values[j]->used == f_array_length_t_size) { macro_f_string_dynamic_t_delete_simple(name); + return F_status_set_error(F_array_too_large); } @@ -383,6 +401,7 @@ extern "C" { if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } @@ -396,6 +415,7 @@ extern "C" { if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } @@ -413,6 +433,7 @@ extern "C" { if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } } @@ -421,11 +442,11 @@ extern "C" { map->name.used = name.used; map->name.size = name.size; - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } macro_f_string_dynamic_t_clear(name); @@ -438,7 +459,7 @@ extern "C" { #endif // _di_fll_fss_snatch_map_ #ifndef _di_fll_fss_snatch_map_apart_ - f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -458,18 +479,23 @@ extern "C" { f_string_map_multi_t *map_multi = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { + if (!contents.array[i].used) continue; length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + status = f_string_map_multis_increase(f_fss_default_allocation_step_small, values[j]); if (F_status_is_error(status)) return status; @@ -483,23 +509,23 @@ extern "C" { status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &map_multi->name); if (F_status_is_error(status)) return status; - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } if (contents.array[i].used > 1) { status = f_string_dynamics_increase_by(contents.array[i].used - 1, &map_multi->value); if (F_status_is_error(status)) return status; - for (k = 1; k < contents.array[i].used; k++) { + for (k = 1; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[k], &map_multi->value.array[map_multi->value.used]); if (F_status_is_error(status)) return status; - map_multi->value.used++; + ++map_multi->value.used; } // for } } // for @@ -510,7 +536,7 @@ extern "C" { #endif // _di_fll_fss_snatch_map_apart_ #ifndef _di_fll_fss_snatch_map_mash_ - f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -530,18 +556,23 @@ extern "C" { f_string_map_t *map = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { + if (!contents.array[i].used) continue; length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + status = f_string_maps_increase(f_fss_default_allocation_step_small, values[j]); if (F_status_is_error(status)) return status; @@ -577,7 +608,7 @@ extern "C" { #endif // _di_fll_fss_snatch_map_mash_ #ifndef _di_fll_fss_snatch_map_mash_apart_ - f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -600,33 +631,41 @@ extern "C" { f_string_map_multi_t *map_multi = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { + if (!contents.array[i].used) continue; length_name = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { + status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &name); if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } matched = F_false; length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1; - for (k = 0; k < values[j]->used; k++) { + for (k = 0; k < values[j]->used; ++k) { status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used); if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } @@ -657,11 +696,11 @@ extern "C" { map_multi->name.used = name.used; map_multi->name.size = name.size; - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } macro_f_string_dynamic_t_clear(name); @@ -672,23 +711,24 @@ extern "C" { status = f_string_dynamics_increase(f_fss_default_allocation_step_small, &map_multi->value); if (F_status_is_error(status)) return status; - for (k = 1; k < contents.array[i].used; k++) { + for (k = 1; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], &map_multi->value.array[map_multi->value.used]); if (F_status_is_error(status)) return status; } // for - map_multi->value.used++; + ++map_multi->value.used; } // for } // for macro_f_string_dynamic_t_delete_simple(name); + return F_none; } #endif // _di_fll_fss_snatch_map_mash_apart_ #ifndef _di_fll_fss_snatch_map_together_ - f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -711,34 +751,41 @@ extern "C" { f_string_map_t *map = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { + if (!contents.array[i].used) continue; length_name = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &name); if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } matched = F_false; length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1; - for (k = 0; k < values[j]->used; k++) { + for (k = 0; k < values[j]->used; ++k) { status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used); if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } @@ -770,11 +817,11 @@ extern "C" { map->name.used = name.used; map->name.size = name.size; - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } macro_f_string_dynamic_t_clear(name); @@ -785,6 +832,7 @@ extern "C" { if (F_status_is_error(status)) { macro_f_string_dynamic_t_delete_simple(name); + return status; } } @@ -792,12 +840,13 @@ extern "C" { } // for macro_f_string_dynamic_t_delete_simple(name); + return F_none; } #endif // _di_fll_fss_snatch_map_together_ #ifndef _di_fll_fss_snatch_mash_ - f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]) { + f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -819,11 +868,12 @@ extern "C" { memset(&matched, 0, sizeof(bool) * size); - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { + if (matched[j]) continue; status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); @@ -831,9 +881,13 @@ extern "C" { if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + matched[j] = F_true; - for (k = 0; k < contents.array[i].used; k++) { + for (k = 0; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]); if (F_status_is_error(status)) return status; @@ -850,7 +904,7 @@ extern "C" { #endif // _di_fll_fss_snatch_mash_ #ifndef _di_fll_fss_snatch_mash_apart_ - f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]) { + f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -868,17 +922,21 @@ extern "C" { f_array_length_t j = 0; f_array_length_t k = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; + if (matches) { + matches[j] = F_true; + } + status = f_string_dynamics_increase(f_fss_default_allocation_step_small, values[j]); if (F_status_is_error(status)) return status; @@ -887,17 +945,17 @@ extern "C" { if (F_status_is_error(status)) return status; } - for (k = 0; k < contents.array[i].used; k++) { + for (k = 0; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], &values[j]->array[values[j]->used]); if (F_status_is_error(status)) return status; } // for - values[j]->used++; + ++values[j]->used; if (indexs) { indexs[j]->array[indexs[j]->used] = i; - indexs[j]->used++; + ++indexs[j]->used; } } // for } // for @@ -907,7 +965,7 @@ extern "C" { #endif // _di_fll_fss_snatch_mash_apart_ #ifndef _di_fll_fss_snatch_together_ - f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]) { + f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) { #ifndef _di_level_2_parameter_checking_ if (!size) return F_status_set_error(F_parameter); if (objects.used != contents.used) return F_status_set_error(F_parameter); @@ -925,18 +983,22 @@ extern "C" { f_array_length_t j = 0; f_array_length_t k = 0; - for (; i < objects.used; i++) { + for (; i < objects.used; ++i) { length_object = (objects.array[i].stop - objects.array[i].start) + 1; - for (j = 0; j < size; j++) { + for (j = 0; j < size; ++j) { status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]); if (F_status_is_error(status)) return status; if (status == F_equal_to_not) continue; - for (k = 0; k < contents.array[i].used; k++) { + if (matches) { + matches[j] = F_true; + } + + for (k = 0; k < contents.array[i].used; ++k) { status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]); if (F_status_is_error(status)) return status; diff --git a/level_2/fll_fss/c/fss.h b/level_2/fll_fss/c/fss.h index f4667b9..6bfe1ae 100644 --- a/level_2/fll_fss/c/fss.h +++ b/level_2/fll_fss/c/fss.h @@ -103,8 +103,11 @@ extern "C" { * The total size of the names, lengths, and values arrays. * @param values * An array of values where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -120,7 +123,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_ - extern f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], f_array_length_t *indexs[]); + extern f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]); #endif // _di_fll_fss_snatch_ /** @@ -150,8 +153,11 @@ extern "C" { * The total size of the names, lengths, and values arrays. * @param values * An array of values where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -167,7 +173,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_apart_ - extern f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_apart_ /** @@ -199,8 +205,11 @@ extern "C" { * The total size of the names, lengths, and values arrays. * @param values * An array of map arrays where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -216,7 +225,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_map_ - extern f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_map_ /** @@ -250,8 +259,11 @@ extern "C" { * The total size of the names, lengths, and values arrays. * @param values * An array of multi map arrays where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -267,7 +279,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_map_apart_ - extern f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_map_apart_ /** @@ -304,8 +316,11 @@ extern "C" { * The length of the glue string * @param values * An array of multi map value arrays where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -318,7 +333,7 @@ extern "C" { * Errors (with error bit) from: f_string_dynamic_partial_mash_nulless(). */ #ifndef _di_fll_fss_snatch_map_mash_ - extern f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_map_mash_ /** @@ -356,8 +371,11 @@ extern "C" { * The length of the glue string * @param values * An array of multi map value arrays where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -373,7 +391,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_map_mash_apart_ - extern f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_map_mash_apart_ /** @@ -410,8 +428,11 @@ extern "C" { * The length of the glue string * @param values * An array of map arrays where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -427,7 +448,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_map_together_ - extern f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_map_together_ /** @@ -461,8 +482,11 @@ extern "C" { * The length of the glue string. * @param values * An array of values where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -475,7 +499,7 @@ extern "C" { * Errors (with error bit) from: f_string_dynamic_partial_mash_nulless(). */ #ifndef _di_fll_fss_snatch_mash_ - extern f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]); + extern f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]); #endif // _di_fll_fss_snatch_mash_ /** @@ -510,8 +534,11 @@ extern "C" { * The length of the glue string * @param values * An array of values where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -527,7 +554,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_mash_apart_ - extern f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]); + extern f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]); #endif // _di_fll_fss_snatch_mash_apart_ /** @@ -555,8 +582,11 @@ extern "C" { * The total size of the names, lengths, and values arrays. * @param values * An array of values where "snatched" content is stored. + * @param matches + * An array representing the if an Object was matched. + * Set the pointer address to 0 to disable. * @param indexs - * An array representing the index within the objects where the match was made. + * An array representing the index within the Objects where the Content match was made. * Set the pointer address to 0 to disable. * * @return @@ -572,7 +602,7 @@ extern "C" { * @see fl_string_compare_trim() */ #ifndef _di_fll_fss_snatch_together_ - extern f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]); + extern f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]); #endif // _di_fll_fss_snatch_together_ #ifdef __cplusplus diff --git a/level_2/fll_fss/data/build/settings b/level_2/fll_fss/data/build/settings index 037d2b6..97b272e 100644 --- a/level_2/fll_fss/data/build/settings +++ b/level_2/fll_fss/data/build/settings @@ -5,7 +5,7 @@ project_name fll_fss version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_iki/data/build/settings b/level_2/fll_iki/data/build/settings index 64d9eed..587ee86 100644 --- a/level_2/fll_iki/data/build/settings +++ b/level_2/fll_iki/data/build/settings @@ -5,7 +5,7 @@ project_name fll_iki version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_path/data/build/settings b/level_2/fll_path/data/build/settings index efa52b3..1061c3b 100644 --- a/level_2/fll_path/data/build/settings +++ b/level_2/fll_path/data/build/settings @@ -5,7 +5,7 @@ project_name fll_path version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_program/data/build/settings b/level_2/fll_program/data/build/settings index b8ba359..85a8e41 100644 --- a/level_2/fll_program/data/build/settings +++ b/level_2/fll_program/data/build/settings @@ -5,7 +5,7 @@ project_name fll_program version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_2/fll_status/data/build/settings b/level_2/fll_status/data/build/settings index f373fec..265b63c 100644 --- a/level_2/fll_status/data/build/settings +++ b/level_2/fll_status/data/build/settings @@ -5,7 +5,7 @@ project_name fll_status version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/byte_dump/data/build/settings b/level_3/byte_dump/data/build/settings index 1db2687..1189fc9 100644 --- a/level_3/byte_dump/data/build/settings +++ b/level_3/byte_dump/data/build/settings @@ -5,7 +5,7 @@ project_name byte_dump version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/control/data/build/settings b/level_3/control/data/build/settings index 0d3cb59..90879d6 100644 --- a/level_3/control/data/build/settings +++ b/level_3/control/data/build/settings @@ -5,7 +5,7 @@ project_name control version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/controller/data/build/settings b/level_3/controller/data/build/settings index 9d3edd8..065ab6c 100644 --- a/level_3/controller/data/build/settings +++ b/level_3/controller/data/build/settings @@ -5,7 +5,7 @@ project_name controller version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fake/c/fake.h b/level_3/fake/c/fake.h index 5eb0cc5..980b322 100644 --- a/level_3/fake/c/fake.h +++ b/level_3/fake/c/fake.h @@ -207,15 +207,18 @@ extern "C" { fake_build_version_type_major = 1, fake_build_version_type_micro, fake_build_version_type_minor, + fake_build_version_type_nano, }; #define fake_build_version_major "major" #define fake_build_version_micro "micro" #define fake_build_version_minor "minor" + #define fake_build_version_nano "nano" #define fake_build_version_major_length 5 #define fake_build_version_micro_length 5 #define fake_build_version_minor_length 5 + #define fake_build_version_nano_length 4 #endif // _di_fake_build_version_ #ifndef _di_fake_defines_ diff --git a/level_3/fake/c/private-build.c b/level_3/fake/c/private-build.c index 568d9da..f3d2d9f 100644 --- a/level_3/fake/c/private-build.c +++ b/level_3/fake/c/private-build.c @@ -164,6 +164,21 @@ extern "C" { if (F_status_is_error(*status)) break; } // for } + + if (is_library) { + for (i = 0; i < data_build.setting.defines_library.used && F_status_is_error_not(*status); ++i) { + + *status = fll_execute_arguments_add(data_build.setting.defines_library.array[i].string, data_build.setting.defines_library.array[i].used, arguments); + if (F_status_is_error(*status)) break; + } // for + } + else { + for (i = 0; i < data_build.setting.defines_program.used && F_status_is_error_not(*status); ++i) { + + *status = fll_execute_arguments_add(data_build.setting.defines_program.array[i].string, data_build.setting.defines_program.array[i].used, arguments); + if (F_status_is_error(*status)) break; + } // for + } } } #endif // _di_fake_build_arguments_standard_add_ @@ -839,115 +854,182 @@ extern "C" { } } - f_array_length_t parameter_file_name_length = fake_build_parameter_library_name_prefix_length; - f_array_length_t parameter_file_name_major_length = fake_build_parameter_library_name_prefix_length; - f_array_length_t parameter_file_name_minor_length = fake_build_parameter_library_name_prefix_length; - f_array_length_t parameter_file_name_micro_length = fake_build_parameter_library_name_prefix_length; - - parameter_file_name_micro_length += data_build.setting.project_name.used + fake_build_parameter_library_name_suffix_shared_length; - parameter_file_name_length = parameter_file_name_micro_length; - - parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_major.used; - parameter_file_name_major_length = parameter_file_name_micro_length; - - parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_minor.used; - parameter_file_name_minor_length = parameter_file_name_micro_length; - - parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_micro.used; + const f_array_length_t parameter_file_name_length = fake_build_parameter_library_name_prefix_length + data_build.setting.project_name.used + fake_build_parameter_library_name_suffix_shared_length; + const f_array_length_t parameter_file_name_major_length = data_build.setting.version_major.used ? parameter_file_name_length + data_build.setting.version_major_prefix.used + data_build.setting.version_major.used : 0; + const f_array_length_t parameter_file_name_minor_length = data_build.setting.version_minor.used ? parameter_file_name_major_length + data_build.setting.version_minor_prefix.used + data_build.setting.version_minor.used : 0; + const f_array_length_t parameter_file_name_micro_length = data_build.setting.version_micro.used ? parameter_file_name_minor_length + data_build.setting.version_micro_prefix.used + data_build.setting.version_micro.used : 0; + const f_array_length_t parameter_file_name_nano_length = data_build.setting.version_nano.used ? parameter_file_name_micro_length + data_build.setting.version_nano_prefix.used + data_build.setting.version_nano.used : 0; char parameter_file_name[parameter_file_name_length + 1]; char parameter_file_name_major[parameter_file_name_major_length + 1]; char parameter_file_name_minor[parameter_file_name_minor_length + 1]; char parameter_file_name_micro[parameter_file_name_micro_length + 1]; - - parameter_file_name_micro_length = 0; - - memcpy(parameter_file_name, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - memcpy(parameter_file_name_major, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - memcpy(parameter_file_name_minor, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - memcpy(parameter_file_name_micro, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - parameter_file_name_micro_length += fake_build_parameter_library_name_prefix_length; - - memcpy(parameter_file_name + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used); - memcpy(parameter_file_name_major + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used); - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used); - parameter_file_name_micro_length += data_build.setting.project_name.used; - - memcpy(parameter_file_name + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); - memcpy(parameter_file_name_major + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); - parameter_file_name_micro_length += fake_build_parameter_library_name_suffix_shared_length; - - memcpy(parameter_file_name_major + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - parameter_file_name_micro_length += fake_build_parameter_library_separator_length; - - memcpy(parameter_file_name_major + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used); - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used); - parameter_file_name_micro_length += data_build.setting.version_major.used; - parameter_file_name_major_length = parameter_file_name_micro_length; - - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - parameter_file_name_micro_length += fake_build_parameter_library_separator_length; - - memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.version_minor.string, data_build.setting.version_minor.used); - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_minor.string, data_build.setting.version_minor.used); - parameter_file_name_micro_length += data_build.setting.version_minor.used; - parameter_file_name_minor_length = parameter_file_name_micro_length; - - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length); - parameter_file_name_micro_length += fake_build_parameter_library_separator_length; - - memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_micro.string, data_build.setting.version_micro.used); - parameter_file_name_micro_length += data_build.setting.version_micro.used; + char parameter_file_name_nano[parameter_file_name_nano_length + 1]; parameter_file_name[parameter_file_name_length] = 0; parameter_file_name_major[parameter_file_name_major_length] = 0; parameter_file_name_minor[parameter_file_name_minor_length] = 0; parameter_file_name_micro[parameter_file_name_micro_length] = 0; + parameter_file_name_nano[parameter_file_name_nano_length] = 0; - { - f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_micro_length; + memcpy(parameter_file_name, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - char parameter_file_path[parameter_file_path_length + 1]; + if (parameter_file_name_major_length) { + memcpy(parameter_file_name_major, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_micro, parameter_file_name_micro_length); + if (parameter_file_name_minor_length) { + memcpy(parameter_file_name_minor, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); - parameter_file_path[parameter_file_path_length] = 0; + if (parameter_file_name_micro_length) { + memcpy(parameter_file_name_micro, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); + + if (parameter_file_name_nano_length) { + memcpy(parameter_file_name_nano, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length); + } + } + } + } + + f_array_length_t count = fake_build_parameter_library_name_prefix_length; + + memcpy(parameter_file_name + count, data_build.setting.project_name.string, data_build.setting.project_name.used); + + if (parameter_file_name_major_length) { + memcpy(parameter_file_name_major + count, data_build.setting.project_name.string, data_build.setting.project_name.used); + + if (parameter_file_name_minor_length) { + memcpy(parameter_file_name_minor + count, data_build.setting.project_name.string, data_build.setting.project_name.used); + + if (parameter_file_name_micro_length) { + memcpy(parameter_file_name_micro + count, data_build.setting.project_name.string, data_build.setting.project_name.used); + + if (parameter_file_name_nano_length) { + memcpy(parameter_file_name_nano + count, data_build.setting.project_name.string, data_build.setting.project_name.used); + } + } + } + } + + count += data_build.setting.project_name.used; + + memcpy(parameter_file_name + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); + + if (parameter_file_name_major_length) { + memcpy(parameter_file_name_major + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); + + if (parameter_file_name_minor_length) { + memcpy(parameter_file_name_minor + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); + + if (parameter_file_name_micro_length) { + memcpy(parameter_file_name_micro + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); + + if (parameter_file_name_nano_length) { + memcpy(parameter_file_name_nano + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length); + } + } + } + } + + count += fake_build_parameter_library_name_suffix_shared_length; + + if (parameter_file_name_major_length) { + if (data_build.setting.version_major_prefix.used) { + memcpy(parameter_file_name_major + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used); + memcpy(parameter_file_name_minor + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used); + memcpy(parameter_file_name_micro + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used); + count += data_build.setting.version_major_prefix.used; + } + memcpy(parameter_file_name_major + count, data_build.setting.version_major.string, data_build.setting.version_major.used); + memcpy(parameter_file_name_minor + count, data_build.setting.version_major.string, data_build.setting.version_major.used); + memcpy(parameter_file_name_micro + count, data_build.setting.version_major.string, data_build.setting.version_major.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_major.string, data_build.setting.version_major.used); + count += data_build.setting.version_major.used; + + if (parameter_file_name_minor_length) { + if (data_build.setting.version_minor_prefix.used) { + memcpy(parameter_file_name_minor + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used); + memcpy(parameter_file_name_micro + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used); + count += data_build.setting.version_minor_prefix.used; + } + + memcpy(parameter_file_name_minor + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used); + memcpy(parameter_file_name_micro + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used); + count += data_build.setting.version_minor.used; + + if (parameter_file_name_micro_length) { + if (data_build.setting.version_micro_prefix.used) { + memcpy(parameter_file_name_micro + count, data_build.setting.version_micro_prefix.string, data_build.setting.version_micro_prefix.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_micro_prefix.string, data_build.setting.version_micro_prefix.used); + count += data_build.setting.version_micro_prefix.used; + } + + memcpy(parameter_file_name_micro + count, data_build.setting.version_micro.string, data_build.setting.version_micro.used); + memcpy(parameter_file_name_nano + count, data_build.setting.version_micro.string, data_build.setting.version_micro.used); + count += data_build.setting.version_micro.used; + + if (parameter_file_name_nano_length) { + if (data_build.setting.version_nano_prefix.used) { + memcpy(parameter_file_name_nano + count, data_build.setting.version_nano_prefix.string, data_build.setting.version_nano_prefix.used); + count += data_build.setting.version_nano_prefix.used; + } + + memcpy(parameter_file_name_nano + count, data_build.setting.version_nano.string, data_build.setting.version_nano.used); + count += data_build.setting.version_nano.used; + } + } + } + } + + { f_array_length_t parameter_linker_length = fake_build_parameter_library_shared_prefix_length; + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used; if (data_build.setting.version_target == fake_build_version_type_major) { parameter_linker_length += parameter_file_name_major_length; + parameter_file_path_length += parameter_file_name_major_length; } else if (data_build.setting.version_target == fake_build_version_type_minor) { parameter_linker_length += parameter_file_name_minor_length; + parameter_file_path_length += parameter_file_name_minor_length; } else if (data_build.setting.version_target == fake_build_version_type_micro) { parameter_linker_length += parameter_file_name_micro_length; + parameter_file_path_length += parameter_file_name_micro_length; + } + else if (data_build.setting.version_target == fake_build_version_type_nano) { + parameter_linker_length += parameter_file_name_nano_length; + parameter_file_path_length += parameter_file_name_nano_length; } char parameter_linker[parameter_linker_length + 1]; + char parameter_file_path[parameter_file_path_length + 1]; memcpy(parameter_linker, fake_build_parameter_library_shared_prefix, fake_build_parameter_library_shared_prefix_length); + memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); if (data_build.setting.version_target == fake_build_version_type_major) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_major, parameter_file_name_major_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); } else if (data_build.setting.version_target == fake_build_version_type_minor) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_minor, parameter_file_name_minor_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_minor, parameter_file_name_minor_length); } else if (data_build.setting.version_target == fake_build_version_type_micro) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_micro, parameter_file_name_micro_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_micro, parameter_file_name_micro_length); + } + else if (data_build.setting.version_target == fake_build_version_type_nano) { + memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_nano, parameter_file_name_nano_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_nano, parameter_file_name_nano_length); } parameter_linker[parameter_linker_length] = 0; + parameter_file_path[parameter_file_path_length] = 0; const f_string_t values[] = { fake_build_parameter_library_shared, @@ -975,6 +1057,7 @@ extern "C" { fll_error_print(main.error, F_status_set_fine(*status), "fll_execute_arguments_add", F_true); macro_f_string_dynamics_t_delete_simple(arguments); + return 0; } } @@ -993,29 +1076,26 @@ extern "C" { } } - if (data_build.setting.version_target != fake_build_version_type_micro) { - f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used; - - if (data_build.setting.version_target == fake_build_version_type_major) { - parameter_file_path_length += parameter_file_name_major_length; - } - else { - parameter_file_path_length += parameter_file_name_minor_length; - } + if (data_build.setting.version_target != fake_build_version_type_major && parameter_file_name_major_length) { + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_major_length; + char *link_target = 0; char parameter_file_path[parameter_file_path_length + 1]; - memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); - - if (data_build.setting.version_target == fake_build_version_type_major) { - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); + if (data_build.setting.version_target == fake_build_version_type_minor) { + link_target = parameter_file_name_minor; } - else { - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_minor, parameter_file_name_minor_length); + else if (data_build.setting.version_target == fake_build_version_type_micro) { + link_target = parameter_file_name_micro; + } + else if (data_build.setting.version_target == fake_build_version_type_nano) { + link_target = parameter_file_name_nano; } - parameter_file_path[parameter_file_path_length] = 0; + memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); + parameter_file_path[parameter_file_path_length] = 0; if (fake_signal_received(main)) { *status = F_status_set_error(F_signal); @@ -1023,10 +1103,10 @@ extern "C" { return 0; } - *status = f_file_link(parameter_file_name_micro, parameter_file_path); + *status = f_file_link(link_target, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_micro, f_string_eol_s[0]); + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, link_target, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1035,52 +1115,33 @@ extern "C" { return 0; } - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_micro, "link", fll_error_file_type_file); + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, link_target, "link", fll_error_file_type_file); return 0; } } - if (F_status_is_error_not(*status)) { + if (F_status_is_error_not(*status) && parameter_file_name_major_length) { + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_length; char parameter_file_path[parameter_file_path_length + 1]; memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name, parameter_file_name_length); parameter_file_path[parameter_file_path_length] = 0; if (fake_signal_received(main)) { *status = F_status_set_error(F_signal); + return 0; } - if (data_build.setting.version_target == fake_build_version_type_major) { - *status = f_file_link(parameter_file_name_major, parameter_file_path); - } - else if (data_build.setting.version_target == fake_build_version_type_minor) { - *status = f_file_link(parameter_file_name_minor, parameter_file_path); - } - else if (data_build.setting.version_target == fake_build_version_type_micro) { - *status = f_file_link(parameter_file_name_micro, parameter_file_path); - } + *status = f_file_link(parameter_file_name_major, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '", parameter_file_path); - - if (data_build.setting.version_target == fake_build_version_type_major) { - fprintf(main.output.stream, "%s", parameter_file_name_major); - } - else if (data_build.setting.version_target == fake_build_version_type_minor) { - fprintf(main.output.stream, "%s", parameter_file_name_minor); - } - else if (data_build.setting.version_target == fake_build_version_type_micro) { - fprintf(main.output.stream, "%s", parameter_file_name_micro); - } - - fprintf(main.output.stream, "'.%c", f_string_eol_s[0]); + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_major, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1089,15 +1150,7 @@ extern "C" { return 0; } - if (data_build.setting.version_target == fake_build_version_type_major) { - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_major, "link", fll_error_file_type_file); - } - else if (data_build.setting.version_target == fake_build_version_type_minor) { - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_minor, "link", fll_error_file_type_file); - } - else if (data_build.setting.version_target == fake_build_version_type_micro) { - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_micro, "link", fll_error_file_type_file); - } + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_major, "link", fll_error_file_type_file); return 0; } @@ -1429,6 +1482,39 @@ extern "C" { bool error_printed = F_false; + f_string_dynamics_t build_compiler = f_string_dynamics_t_initialize; + f_string_dynamics_t build_indexer = f_string_dynamics_t_initialize; + f_string_dynamics_t build_language = f_string_dynamics_t_initialize; + f_string_dynamics_t build_script = f_string_dynamics_t_initialize; + f_string_dynamics_t build_shared = f_string_dynamics_t_initialize; + f_string_dynamics_t build_static = f_string_dynamics_t_initialize; + f_string_dynamics_t path_headers = f_string_dynamics_t_initialize; + f_string_dynamics_t path_headers_preserve = f_string_dynamics_t_initialize; + f_string_dynamics_t path_language = f_string_dynamics_t_initialize; + f_string_dynamics_t path_library_script = f_string_dynamics_t_initialize; + f_string_dynamics_t path_library_shared = f_string_dynamics_t_initialize; + f_string_dynamics_t path_library_static = f_string_dynamics_t_initialize; + f_string_dynamics_t path_program_script = f_string_dynamics_t_initialize; + f_string_dynamics_t path_program_shared = f_string_dynamics_t_initialize; + f_string_dynamics_t path_program_static = f_string_dynamics_t_initialize; + f_string_dynamics_t path_sources = f_string_dynamics_t_initialize; + f_string_dynamics_t path_standard = f_string_dynamics_t_initialize; + f_string_dynamics_t process_post = f_string_dynamics_t_initialize; + f_string_dynamics_t process_pre = f_string_dynamics_t_initialize; + f_string_dynamics_t project_name = f_string_dynamics_t_initialize; + f_string_dynamics_t search_exclusive = f_string_dynamics_t_initialize; + f_string_dynamics_t search_shared = f_string_dynamics_t_initialize; + f_string_dynamics_t search_static = f_string_dynamics_t_initialize; + f_string_dynamics_t version_major = f_string_dynamics_t_initialize; + f_string_dynamics_t version_major_prefix = f_string_dynamics_t_initialize; + f_string_dynamics_t version_micro = f_string_dynamics_t_initialize; + f_string_dynamics_t version_micro_prefix = f_string_dynamics_t_initialize; + f_string_dynamics_t version_minor = f_string_dynamics_t_initialize; + f_string_dynamics_t version_minor_prefix = f_string_dynamics_t_initialize; + f_string_dynamics_t version_nano = f_string_dynamics_t_initialize; + f_string_dynamics_t version_nano_prefix = f_string_dynamics_t_initialize; + f_string_dynamics_t version_target = f_string_dynamics_t_initialize; + const f_string_t settings_name[] = { fake_build_setting_name_build_compiler, fake_build_setting_name_build_indexer, @@ -1439,10 +1525,12 @@ extern "C" { fake_build_setting_name_build_sources_headers, fake_build_setting_name_build_sources_library, fake_build_setting_name_build_sources_program, - fake_build_setting_name_build_sources_settings, fake_build_setting_name_build_sources_script, + fake_build_setting_name_build_sources_settings, fake_build_setting_name_build_static, fake_build_setting_name_defines_all, + fake_build_setting_name_defines_library, + fake_build_setting_name_defines_program, fake_build_setting_name_defines_shared, fake_build_setting_name_defines_static, fake_build_setting_name_environment, @@ -1471,8 +1559,13 @@ extern "C" { fake_build_setting_name_search_shared, fake_build_setting_name_search_static, fake_build_setting_name_version_major, + fake_build_setting_name_version_major_prefix, fake_build_setting_name_version_micro, + fake_build_setting_name_version_micro_prefix, fake_build_setting_name_version_minor, + fake_build_setting_name_version_minor_prefix, + fake_build_setting_name_version_nano, + fake_build_setting_name_version_nano_prefix, fake_build_setting_name_version_target, }; @@ -1486,10 +1579,12 @@ extern "C" { fake_build_setting_name_build_sources_headers_length, fake_build_setting_name_build_sources_library_length, fake_build_setting_name_build_sources_program_length, - fake_build_setting_name_build_sources_settings_length, fake_build_setting_name_build_sources_script_length, + fake_build_setting_name_build_sources_settings_length, fake_build_setting_name_build_static_length, fake_build_setting_name_defines_all_length, + fake_build_setting_name_defines_library_length, + fake_build_setting_name_defines_program_length, fake_build_setting_name_defines_shared_length, fake_build_setting_name_defines_static_length, fake_build_setting_name_environment_length, @@ -1518,39 +1613,16 @@ extern "C" { fake_build_setting_name_search_shared_length, fake_build_setting_name_search_static_length, fake_build_setting_name_version_major_length, + fake_build_setting_name_version_major_prefix_length, fake_build_setting_name_version_micro_length, + fake_build_setting_name_version_micro_prefix_length, fake_build_setting_name_version_minor_length, + fake_build_setting_name_version_minor_prefix_length, + fake_build_setting_name_version_nano_length, + fake_build_setting_name_version_nano_prefix_length, fake_build_setting_name_version_target_length, }; - f_string_dynamics_t build_compiler = f_string_dynamics_t_initialize; - f_string_dynamics_t build_indexer = f_string_dynamics_t_initialize; - f_string_dynamics_t build_language = f_string_dynamics_t_initialize; - f_string_dynamics_t build_script = f_string_dynamics_t_initialize; - f_string_dynamics_t build_shared = f_string_dynamics_t_initialize; - f_string_dynamics_t build_static = f_string_dynamics_t_initialize; - f_string_dynamics_t path_headers = f_string_dynamics_t_initialize; - f_string_dynamics_t path_headers_preserve = f_string_dynamics_t_initialize; - f_string_dynamics_t path_language = f_string_dynamics_t_initialize; - f_string_dynamics_t path_library_script = f_string_dynamics_t_initialize; - f_string_dynamics_t path_library_shared = f_string_dynamics_t_initialize; - f_string_dynamics_t path_library_static = f_string_dynamics_t_initialize; - f_string_dynamics_t path_program_script = f_string_dynamics_t_initialize; - f_string_dynamics_t path_program_shared = f_string_dynamics_t_initialize; - f_string_dynamics_t path_program_static = f_string_dynamics_t_initialize; - f_string_dynamics_t path_sources = f_string_dynamics_t_initialize; - f_string_dynamics_t path_standard = f_string_dynamics_t_initialize; - f_string_dynamics_t process_post = f_string_dynamics_t_initialize; - f_string_dynamics_t process_pre = f_string_dynamics_t_initialize; - f_string_dynamics_t project_name = f_string_dynamics_t_initialize; - f_string_dynamics_t search_exclusive = f_string_dynamics_t_initialize; - f_string_dynamics_t search_shared = f_string_dynamics_t_initialize; - f_string_dynamics_t search_static = f_string_dynamics_t_initialize; - f_string_dynamics_t version_major = f_string_dynamics_t_initialize; - f_string_dynamics_t version_micro = f_string_dynamics_t_initialize; - f_string_dynamics_t version_minor = f_string_dynamics_t_initialize; - f_string_dynamics_t version_target = f_string_dynamics_t_initialize; - f_string_dynamics_t *settings_value[] = { &build_compiler, &build_indexer, @@ -1561,10 +1633,12 @@ extern "C" { &setting->build_sources_headers, &setting->build_sources_library, &setting->build_sources_program, - &setting->build_sources_setting, &setting->build_sources_script, + &setting->build_sources_setting, &build_static, &setting->defines_all, + &setting->defines_library, + &setting->defines_program, &setting->defines_shared, &setting->defines_static, &setting->environment, @@ -1593,14 +1667,73 @@ extern "C" { &search_shared, &search_static, &version_major, + &version_major_prefix, &version_micro, + &version_micro_prefix, &version_minor, + &version_minor_prefix, + &version_nano, + &version_nano_prefix, &version_target, }; + bool settings_matches[] = { + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + F_false, + }; + f_string_t function = "fll_fss_snatch_apart"; - *status = fll_fss_snatch_apart(buffer, objects, contents, settings_name, settings_length, fake_build_setting_total, settings_value, 0); + *status = fll_fss_snatch_apart(buffer, objects, contents, settings_name, settings_length, fake_build_setting_total, settings_value, settings_matches, 0); if (*status == F_none) { const int total_build_libraries = setting->build_libraries.used; @@ -1659,7 +1792,7 @@ extern "C" { macro_f_string_dynamic_t_resize(*status, settings_mode_name_dynamic[j], setting_mode_lengths[j]); if (F_status_is_error(*status)) { - function = " macro_f_string_dynamic_t_resize"; + function = "macro_f_string_dynamic_t_resize"; break; } @@ -1671,7 +1804,7 @@ extern "C" { } // for if (*status == F_none) { - *status = fll_fss_snatch_apart(buffer, objects, contents, settings_mode_names, setting_mode_lengths, fake_build_setting_total, settings_value, 0); + *status = fll_fss_snatch_apart(buffer, objects, contents, settings_mode_names, setting_mode_lengths, fake_build_setting_total, settings_value, 0, 0); if (F_status_is_error(*status)) { function = "fll_fss_snatch_apart"; @@ -1753,8 +1886,13 @@ extern "C" { fake_build_setting_name_search_shared, fake_build_setting_name_search_static, fake_build_setting_name_version_major, + fake_build_setting_name_version_major_prefix, fake_build_setting_name_version_micro, + fake_build_setting_name_version_micro_prefix, fake_build_setting_name_version_minor, + fake_build_setting_name_version_minor_prefix, + fake_build_setting_name_version_nano, + fake_build_setting_name_version_nano_prefix, fake_build_setting_name_version_target, }; @@ -1783,8 +1921,13 @@ extern "C" { &search_shared, &search_static, &version_major, + &version_major_prefix, &version_micro, + &version_micro_prefix, &version_minor, + &version_minor_prefix, + &version_nano, + &version_nano_prefix, &version_target, }; @@ -1839,8 +1982,13 @@ extern "C" { 0, 0, &setting->version_major, + &setting->version_major_prefix, &setting->version_micro, + &setting->version_micro_prefix, &setting->version_minor, + &setting->version_minor_prefix, + &setting->version_nano, + &setting->version_nano_prefix, }; uint8_t * const settings_single_language[] = { @@ -1876,10 +2024,15 @@ extern "C" { 0, 0, 0, + 0, + 0, + 0, + 0, + 0, &setting->version_target, }; - // 1 = "yes" or "no", 2 = path/, 3 = literal, 4 = "bash", "c", or "c++", 5 = "major", "minor", or "micro". + // 1 = "yes" or "no", 2 = path/, 3 = literal, 4 = "bash", "c", or "c++", 5 = "major", "minor", "micro", or "nano". const uint8_t settings_single_type[] = { 3, 3, @@ -1907,10 +2060,15 @@ extern "C" { 3, 3, 3, + 3, + 3, + 3, + 3, + 3, 5, }; - for (f_array_length_t i = 0; i < 27; ++i) { + for (f_array_length_t i = 0; i < 32; ++i) { if (!settings_single_source[i]->used) continue; @@ -1997,6 +2155,9 @@ extern "C" { else if (fl_string_compare_trim(settings_single_source[i]->array[0].string, fake_build_version_minor, settings_single_source[i]->array[0].used, fake_build_version_minor_length) == F_equal_to) { *settings_single_version[i] = fake_build_version_type_minor; } + else if (fl_string_compare_trim(settings_single_source[i]->array[0].string, fake_build_version_nano, settings_single_source[i]->array[0].used, fake_build_version_nano_length) == F_equal_to) { + *settings_single_version[i] = fake_build_version_type_nano; + } else { *settings_single_version[i] = fake_build_version_type_major; @@ -2010,8 +2171,10 @@ extern "C" { f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); f_color_print(main.output.stream, main.context.set.warning, "', '"); f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_minor); - f_color_print(main.output.stream, main.context.set.warning, "', or '"); + f_color_print(main.output.stream, main.context.set.warning, "', '"); f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_micro); + f_color_print(main.output.stream, main.context.set.warning, "', or '"); + f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_nano); f_color_print(main.output.stream, main.context.set.warning, "', defaulting to '"); f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); f_color_print(main.output.stream, main.context.set.warning, "'."); @@ -2025,6 +2188,7 @@ extern "C" { settings_single_destination[i]->used = 0; *status = f_string_dynamic_append_nulless(settings_single_source[i]->array[0], settings_single_destination[i]); + if (F_status_is_error(*status)) { fll_error_print(main.error, F_status_set_fine(*status), "f_string_dynamic_append_nulless", F_true); break; @@ -2032,6 +2196,7 @@ extern "C" { if (settings_single_type[i] == 2) { *status = f_string_append_assure(f_path_separator_s, f_path_separator_length, settings_single_destination[i]); + if (F_status_is_error(*status)) { fll_error_print(main.error, F_status_set_fine(*status), "f_string_append_assure", F_true); break; @@ -2045,6 +2210,50 @@ extern "C" { } } } // for + + // Provide these defaults only if the Object is not defined (this allows for empty Content to exist if the Object is defined). + // In the case of the version prefixes, if the associated version is empty, then instead clear the associated version prefix. + { + f_string_dynamic_t *prefix[] = { + &setting->version_major_prefix, + &setting->version_minor_prefix, + &setting->version_micro_prefix, + &setting->version_nano_prefix, + }; + + f_string_dynamic_t *version[] = { + &setting->version_major, + &setting->version_minor, + &setting->version_micro, + &setting->version_nano, + }; + + bool has_prefix_object[] = { + settings_matches[43], // version_major_prefix + settings_matches[45], // version_minor_prefix + settings_matches[47], // version_micro_prefix + settings_matches[49], // version_nano_prefix + }; + + for (f_array_length_t i = 0; i < 4; ++i) { + + if (version[i]->used) { + if (!has_prefix_object[i]) { + prefix[i]->used = 0; + + *status = f_string_append(fake_build_setting_default_version_prefix, fake_build_setting_default_version_prefix_length, prefix[i]); + + if (F_status_is_error(*status)) { + fll_error_print(main.error, F_status_set_fine(*status), "f_string_append", F_true); + break; + } + } + } + else { + prefix[i]->used = 0; + } + } // for + } } macro_f_string_dynamics_t_delete_simple(build_compiler); @@ -2071,8 +2280,13 @@ extern "C" { macro_f_string_dynamics_t_delete_simple(search_shared); macro_f_string_dynamics_t_delete_simple(search_static); macro_f_string_dynamics_t_delete_simple(version_major); + macro_f_string_dynamics_t_delete_simple(version_major_prefix); macro_f_string_dynamics_t_delete_simple(version_micro); + macro_f_string_dynamics_t_delete_simple(version_micro_prefix); macro_f_string_dynamics_t_delete_simple(version_minor); + macro_f_string_dynamics_t_delete_simple(version_minor_prefix); + macro_f_string_dynamics_t_delete_simple(version_nano); + macro_f_string_dynamics_t_delete_simple(version_nano_prefix); macro_f_string_dynamics_t_delete_simple(version_target); } #endif // _di_fake_build_load_setting_process_ diff --git a/level_3/fake/c/private-common.h b/level_3/fake/c/private-common.h index baa3b2a..18d5226 100644 --- a/level_3/fake/c/private-common.h +++ b/level_3/fake/c/private-common.h @@ -44,16 +44,23 @@ extern "C" { f_string_dynamic_t process_pre; f_string_dynamic_t project_name; f_string_dynamic_t version_major; + f_string_dynamic_t version_major_prefix; f_string_dynamic_t version_micro; + f_string_dynamic_t version_micro_prefix; f_string_dynamic_t version_minor; + f_string_dynamic_t version_minor_prefix; + f_string_dynamic_t version_nano; + f_string_dynamic_t version_nano_prefix; f_string_dynamics_t build_libraries; f_string_dynamics_t build_sources_headers; f_string_dynamics_t build_sources_library; f_string_dynamics_t build_sources_program; - f_string_dynamics_t build_sources_setting; f_string_dynamics_t build_sources_script; + f_string_dynamics_t build_sources_setting; f_string_dynamics_t defines_all; + f_string_dynamics_t defines_library; + f_string_dynamics_t defines_program; f_string_dynamics_t defines_shared; f_string_dynamics_t defines_static; f_string_dynamics_t environment; @@ -94,6 +101,13 @@ extern "C" { f_string_dynamic_t_initialize, \ f_string_dynamic_t_initialize, \ f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ + f_string_dynamics_t_initialize, \ + f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ @@ -129,15 +143,22 @@ extern "C" { macro_f_string_dynamic_t_delete_simple(setting.process_pre); \ macro_f_string_dynamic_t_delete_simple(setting.project_name); \ macro_f_string_dynamic_t_delete_simple(setting.version_major); \ + macro_f_string_dynamic_t_delete_simple(setting.version_major_prefix); \ macro_f_string_dynamic_t_delete_simple(setting.version_micro); \ + macro_f_string_dynamic_t_delete_simple(setting.version_micro_prefix); \ macro_f_string_dynamic_t_delete_simple(setting.version_minor); \ + macro_f_string_dynamic_t_delete_simple(setting.version_minor_prefix); \ + macro_f_string_dynamic_t_delete_simple(setting.version_nano); \ + macro_f_string_dynamic_t_delete_simple(setting.version_nano_prefix); \ macro_f_string_dynamics_t_delete_simple(setting.build_libraries); \ macro_f_string_dynamics_t_delete_simple(setting.build_sources_headers); \ macro_f_string_dynamics_t_delete_simple(setting.build_sources_library); \ macro_f_string_dynamics_t_delete_simple(setting.build_sources_program); \ - macro_f_string_dynamics_t_delete_simple(setting.build_sources_setting); \ macro_f_string_dynamics_t_delete_simple(setting.build_sources_script); \ + macro_f_string_dynamics_t_delete_simple(setting.build_sources_setting); \ macro_f_string_dynamics_t_delete_simple(setting.defines_all); \ + macro_f_string_dynamics_t_delete_simple(setting.defines_library); \ + macro_f_string_dynamics_t_delete_simple(setting.defines_program); \ macro_f_string_dynamics_t_delete_simple(setting.defines_shared); \ macro_f_string_dynamics_t_delete_simple(setting.defines_static); \ macro_f_string_dynamics_t_delete_simple(setting.environment); \ @@ -158,10 +179,12 @@ extern "C" { #define fake_build_setting_name_build_sources_headers "build_sources_headers" #define fake_build_setting_name_build_sources_library "build_sources_library" #define fake_build_setting_name_build_sources_program "build_sources_program" - #define fake_build_setting_name_build_sources_settings "build_sources_setting" #define fake_build_setting_name_build_sources_script "build_sources_script" + #define fake_build_setting_name_build_sources_settings "build_sources_setting" #define fake_build_setting_name_build_static "build_static" #define fake_build_setting_name_defines_all "defines_all" + #define fake_build_setting_name_defines_library "defines_library" + #define fake_build_setting_name_defines_program "defines_program" #define fake_build_setting_name_defines_shared "defines_shared" #define fake_build_setting_name_defines_static "defines_static" #define fake_build_setting_name_environment "environment" @@ -190,8 +213,13 @@ extern "C" { #define fake_build_setting_name_search_shared "search_shared" #define fake_build_setting_name_search_static "search_static" #define fake_build_setting_name_version_major "version_major" + #define fake_build_setting_name_version_major_prefix "version_major_prefix" #define fake_build_setting_name_version_micro "version_micro" + #define fake_build_setting_name_version_micro_prefix "version_micro_prefix" #define fake_build_setting_name_version_minor "version_minor" + #define fake_build_setting_name_version_minor_prefix "version_minor_prefix" + #define fake_build_setting_name_version_nano "version_nano" + #define fake_build_setting_name_version_nano_prefix "version_nano_prefix" #define fake_build_setting_name_version_target "version_target" #define fake_build_setting_name_build_compiler_length 14 @@ -203,11 +231,13 @@ extern "C" { #define fake_build_setting_name_build_sources_headers_length 21 #define fake_build_setting_name_build_sources_library_length 21 #define fake_build_setting_name_build_sources_program_length 21 - #define fake_build_setting_name_build_sources_settings_length 22 #define fake_build_setting_name_build_sources_script_length 20 + #define fake_build_setting_name_build_sources_settings_length 22 #define fake_build_setting_name_build_static_length 12 #define fake_build_setting_name_environment_length 11 #define fake_build_setting_name_defines_all_length 11 + #define fake_build_setting_name_defines_library_length 15 + #define fake_build_setting_name_defines_program_length 15 #define fake_build_setting_name_defines_shared_length 14 #define fake_build_setting_name_defines_static_length 14 #define fake_build_setting_name_flags_all_length 9 @@ -235,15 +265,22 @@ extern "C" { #define fake_build_setting_name_search_shared_length 13 #define fake_build_setting_name_search_static_length 13 #define fake_build_setting_name_version_major_length 13 + #define fake_build_setting_name_version_major_prefix_length 20 #define fake_build_setting_name_version_micro_length 13 + #define fake_build_setting_name_version_micro_prefix_length 20 #define fake_build_setting_name_version_minor_length 13 + #define fake_build_setting_name_version_minor_prefix_length 20 + #define fake_build_setting_name_version_nano_length 12 + #define fake_build_setting_name_version_nano_prefix_length 19 #define fake_build_setting_name_version_target_length 14 - #define fake_build_setting_total 44 + #define fake_build_setting_total 51 - #define fake_build_setting_default_version "0" + #define fake_build_setting_default_version "0" + #define fake_build_setting_default_version_prefix "." - #define fake_build_setting_default_version_length 1 + #define fake_build_setting_default_version_length 1 + #define fake_build_setting_default_version_prefix_length 1 #endif // _di_fake_build_setting_t_ #ifndef _di_fake_build_stage_t_ @@ -353,7 +390,6 @@ extern "C" { #define fake_build_parameter_library_name_suffix_shared ".so" #define fake_build_parameter_library_name_suffix_static ".a" #define fake_build_parameter_library_output "-o" - #define fake_build_parameter_library_separator "." #define fake_build_parameter_library_shared "-shared" #define fake_build_parameter_library_static "-static" #define fake_build_parameter_library_shared_prefix "-Wl,-soname," @@ -365,7 +401,6 @@ extern "C" { #define fake_build_parameter_library_name_suffix_shared_length 3 #define fake_build_parameter_library_name_suffix_static_length 2 #define fake_build_parameter_library_output_length 2 - #define fake_build_parameter_library_separator_length 1 #define fake_build_parameter_library_shared_length 7 #define fake_build_parameter_library_static_length 7 #define fake_build_parameter_library_shared_prefix_length 12 diff --git a/level_3/fake/c/private-make.c b/level_3/fake/c/private-make.c index e206107..045a0cf 100644 --- a/level_3/fake/c/private-make.c +++ b/level_3/fake/c/private-make.c @@ -695,7 +695,7 @@ extern "C" { &data_make->setting_make.parameter, }; - *status = fll_fss_snatch_map_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, settings_value, 0); + *status = fll_fss_snatch_map_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, settings_value, 0, 0); if (F_status_is_error(*status)) { fll_error_print(main.error, F_status_set_fine(*status), "fll_fss_snatch_map_apart", F_true); diff --git a/level_3/fake/data/build/settings b/level_3/fake/data/build/settings index 4d9529e..fb5bf9c 100644 --- a/level_3/fake/data/build/settings +++ b/level_3/fake/data/build/settings @@ -5,7 +5,7 @@ project_name fake version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fake/documents/settings.txt b/level_3/fake/documents/settings.txt index ce60e3e..2434013 100644 --- a/level_3/fake/documents/settings.txt +++ b/level_3/fake/documents/settings.txt @@ -2,32 +2,32 @@ Settings Documentation: This describes intent and purposes of the build settings file settings. + The settings file is designed for very simple compilations that represent a single named program and/or a single named library. For specific details on the allowed formatting, see the settings.txt under the specifications folder. build_compiler\: Expects the name of the compiler, which generally should not be the path to the file, just the executable name. - Currently only GCC is truly supported. - All of the arguments assume the GCC, so if a non-GCC executable is provided supports the GCC argument structure, then that is by effect supported. + The programs "gcc" and "clang" are known to work. Many of the parameters in the settings file can be changed if using a non-GCC, but there is certain hard-coded functionality that may still need changing. build_indexer\: Exactly like build_compiler, except for the linker, aka indexer. - The default behavior is to support the GNU ar program. - As with build_compiler, anything linker that supports the "ar" program parameters is effectively supported. + The default behavior is to support the GNU "ar" program. + Similar to "build_compiler", any linker that supports the "ar" program parameters is effectively supported. build_language\: - The language to build with. - The only currently supported languages are: bash, c, and c++. + The programming language to build with. + The languages "c" and "c++" are supported (with "bash" as a consideration for support). The "bash" language is not currently implemented and needs some consideration because there is nothing to compile. - The "bash" language will likely build a set of individual scripts, and perhaps script dependencies, into a single bash script. + The "bash" language will likely build a set of individual scripts, and perhaps script dependencies, into a single Bash script. build_libraries\: A collection of libraries to be linked against. - The should contain the compiler specific parameter parts, such as the "-l" prefix. - The order of these may matter if GCC (or the linker via GCC) is order sensitive. + This should include the compiler specific parameter parts, such as the "-l" prefix in "-lc". + The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive. build_script\: - When "yes", the build process will build any scripts, such as bash script. + When "yes", the build process will build any scripts, such as a Bash script. This is currently not implemented. build_shared\: @@ -35,26 +35,21 @@ Settings Documentation: build_sources_headers\: A collection of header files. - May include a relative sub-path to each individual header (such as "level_0/a.h level_0/b.h level_1/c.h". - The order of these may matter if GCC (or the linker via GCC) is order sensitive. + May include a relative sub-path to each individual header (such as: "level_0/a.h level_0/b.h level_1/c.h"). + The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive. build_sources_library\: A collection of library related source files. - May include a relative sub-path to each individual header (such as "level_0/a.c level_0/b.c level_1/c.c". - The order of these may matter if GCC (or the linker via GCC) is order sensitive. + May include a relative sub-path to each individual source file (such as: "level_0/a.c level_0/b.c level_1/c.c"). + The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive. These files are used when compiling the library. build_sources_program\: A collection of program related source files. - May include a relative sub-path to each individual header (such as "level_0/a.h level_0/b.h level_1/c.h". - The order of these may matter if GCC (or the linker via GCC) is order sensitive. + May include a relative sub-path to each individual source file (such as: "level_0/a.c level_0/b.c level_1/c.c"). + The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive. These files are used when compiling the program. - build_sources_setting\: - A collection of settings files. - These are settings files used by the project and are simply copied over to the build directory. - Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified. - build_sources_script\: A collection of script files. These are settings files used by the project and are simply copied over to the build directory. @@ -62,40 +57,73 @@ Settings Documentation: Unlike the "compile_language" setting "bash", this is not for built Bash script, but is instead for any valid scripting language (including Bash). These could be in any language. + build_sources_setting\: + A collection of settings files. + These are settings files used by the project and are simply copied over to the build directory. + Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified. + build_static\: When "yes", the build process will compile any source code for any supported language that supports static library linking. defines_all\: A collection of macro names. + This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang. These will be appended to the compiler for compiled languages such as C and C++. These are applied to both shared and static builds. + defines_library\: + A collection of macro names. + This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang. + These will be appended to the compiler for compiled languages such as C and C++. + These are applied to only library builds. + + defines_program\: + A collection of macro names. + This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang. + These will be appended to the compiler for compiled languages such as C and C++. + These are applied to only program builds. + defines_shared\: A collection of macro names. + This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang. These will be appended to the compiler for compiled languages such as C and C++. These are applied to only shared builds. defines_static\: A collection of macro names. + This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang. These will be appended to the compiler for compiled languages such as C and C++. These are applied to only static builds. environment\: - A collection of environment names to pass from the callers environment into the environment of executed programs. + A collection of environment names to pass from the callers environment into the executed programs environment. For security and integrity reasons, all environment variables are removed when calling user-space programs, such as "gcc". There are times when someone desires that an environment variable be exposed to the user-space programs. Add them here and they will be available in the environment of all user-space programs executed. flags_all\: - A collection of any flag support by the "build_compiler", such as GCC. + A collection of any flag supported by the "build_compiler", such as gcc. + This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang. These are applied to both shared and static builds. + flags_library\: + A collection of any flag supported by the "build_compiler", such as gcc. + This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang. + These are applied when building a library. + + flags_program\: + A collection of any flag supported by the "build_compiler", such as gcc. + This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang. + These are applied when building a program. + flags_shared\: - A collection of any flag support by the "build_compiler", such as GCC. + A collection of any flag supported by the "build_compiler", such as gcc. + This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang. These are applied to only shared builds. flags_static\: - A collection of any flag support by the "build_compiler", such as GCC. + A collection of any flag supported by the "build_compiler", such as gcc. + This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang. These are applied to only static builds. modes\: @@ -109,8 +137,15 @@ Settings Documentation: path_headers\: A sub-path in which headers are to be installed under. - This is primarily for the FLL project to build the "level_0", "level_1", etc.. headers without requiring that structure within the source. + For example, the FLL project might use the "level_0", "level_1", etc.. headers without requiring that structure within the source. A resulting build destination for a path_headers of "level_0" would be something like "build/includes/level_0/". + If "path_headers" is "level_0", "path_headers_preserve" is "yes", and "build_sources_headers" has "xxx/a.h yyy/zzz/b.h", then the headers would be at: "build/includes/level_0/xxx/a.h build/includes/level_0/yyy/zzz/b.h" + + path_headers_preserve\: + When "yes" the relative directory structure in the source (as defined in "build_sources_headers") is preserved. + If the "build_sources_headers" has the header files "xxx/a.h yyy/zzz/b.h" and this is "yes", then the directories "xxx/" and "yyy/zzz/" are created and the files are stored within them. + If the "build_sources_headers" has the header files "xxx/a.h yyy/zzz/b.h" and this is "no", then the directories "xxx/" and "yyy/zzz/" are stripped before installing. + When this is "no" and the "build_sources_headers" has header files "xxx/a.h yyy/a.h", then one of the "a.h" files will be overwritten, depending on order they were supplied. path_language\: A sub-path in which to find the source files for the currently defined language. @@ -143,11 +178,7 @@ Settings Documentation: When "yes", the sources path will be built using the sources path with the language, such as "sources/c/", ignoring "path_sources" completely. When "no", the default sources path structure is not used and instead "path_sources" is used. When the parameter -S/--sources is specified, such as "-S xxx", then when "yes" is used path would be "xxx/c/" and when "no" path would be "xxx/". - - project_name\: - The name of the project. - If program sources are specified, then this will be used as the program name. - If library sources are specified, then this will be used in the library name, such as "libX.so" where "X" would be the "project_name" value. + The default behavior is "yes". process_post\: The filename (relative to the "data/build/" directory) of a script to execute after the "build" operation successfully completes. @@ -163,16 +194,36 @@ Settings Documentation: Sources Path parameter, such as "-S X', whereas "X" is any valid argument associated with "-S". Work Path parameter, such as "-w X', whereas "X" is any valid argument associated with "-w". + process_pre\: + The filename (relative to the "data/build/" directory) of a script to execute before the "build" operation is executed. + A small subset of parameters from the main execution are passed to this script during execution as parameters (using short parameter codes)\: + Color context parameters, such as: "+l", "+n", and "+d". + Operation mode, such as: "build", "clean", "make", or "skeleton". + Verbosity parameters, such as: "+q", "+D", or "+V". + Define parameters, such as "-d X" or "-d Y", whereas "X" or "Y" are any valid argument associated with "-d". + Process parameter, such as "-p X", whereas "X" is any valid argument associated with "-p". + Settings parameter, such as "-s X', whereas "X" is any valid argument associated with "-s". + Build Path parameter, such as "-b X', whereas "X" is any valid argument associated with "-b". + Data Path parameter, such as "-D X', whereas "X" is any valid argument associated with "-D". + Sources Path parameter, such as "-S X', whereas "X" is any valid argument associated with "-S". + Work Path parameter, such as "-w X', whereas "X" is any valid argument associated with "-w". + + project_name\: + The name of the project. + If program sources are specified, then this will be used as the program name. + If library sources are specified, then this will be used in the library name, such as "libX.so" where "X" would be the "project_name" value. + search_exclusive\: When "yes", the search path during compile for shared libraries will only include shared library paths. When "no", the search path during compile time for shared libraries will include shared library paths followed by static library paths. - Setting this to "yes" helps prevent static libraries from ended up in shared libraries (very useful when bootstrapping a system). + Setting this to "yes" helps prevent static libraries from ending up in shared libraries (very useful when bootstrapping a system). Setting this to "no" allows for including static libraries if no shared libraries are found but static are. This does not alter search paths introduced automatically by the "build_compiler" or "build_indexer", so it is still possible for static libraries to end up even when this is set to "yes". search_shared\: When "yes", shared library paths are searched during compile. - Both this and search_static cannot be "no" at the same time. + Both this and "search_static" cannot be "no" at the same time. + The default behavior is "yes". search_shared\: When "yes", static library paths are searched during compile. @@ -184,20 +235,57 @@ Settings Documentation: Anything else is currently untested but allowed. With a structure of "A.B.C", the major version would be the "A". + version_major_prefix\: + The version major prefix is the character used to designate the start of the major version. + This can zero or more characters. + The default is an empty string. + With a structure of "A.B.C", the major version prefix would be before the "A". + This is only added if "version_major" is not empty. + version_minor\: The minor version number (or in theory any characters allowed in a filename). This should generally be a positive number or 0. Anything else is currently untested but allowed. With a structure of "A.B.C", the minor version would be the "B". + version_minor_prefix\: + The version minor prefix is the character used to separate the major from the minor. + This can zero or more characters. + The default prefix is an ASCII period character "." if and only if "version_minor" is not an empty string. + With a structure of "A.B.C", the minor version prefix would be the "." before the "B". + This is only added if "version_minor" is not empty. + version_micro\: The micro version number (or in theory any characters allowed in a filename). This should generally be a positive number or 0. Anything else is currently untested but allowed. With a structure of "A.B.C", the micro version would be the "C". + version_micro_prefix\: + The version micro prefix is the character used to separate the minor from the micro. + This can zero or more characters. + The default prefix is an ASCII period character "." if and only if "version_micro" is not an empty string. + With a structure of "A.B.C", the micro version prefix would be the "." before the "C". + This is only added if "version_micro" is not empty. + + version_nano\: + The nano version number (or in theory any characters allowed in a filename). + This should generally be a positive number or 0. + Anything else is currently untested but allowed. + With a structure of "A.B.C.D", the micro version prefix would be the "." before the "D". + + version_nano_prefix\: + The version nano prefix is the character used to separate the micro from the nano. + This can zero or more characters. + The default prefix is an ASCII period character "." if and only if "version_nano" is not an empty string. + With a structure of "A.B.C.D", the minor version would be the "." before the "D". + This is only added if "version_nano" is not empty. + version_target\: Designates which version should be used when building the shared library and creating the respective symbolic links. + Any version prefixes are used as defined. + The default target is "micro". When "major" is used, a shared library is generated with "-Wl,-soname,libX.A", whereas "X" is the "project_name" and "A" is the major version. When "minor" is used, a shared library is generated with "-Wl,-soname,libX.A.B", whereas "X" is the "project_name" and "A.B" is the major and minor versions, respectively. When "micro" is used, a shared library is generated with "-Wl,-soname,libX.A.B.C", whereas "X" is the "project_name" and "A.B.C" is the major, minor, and micro versions, respectively. + When "nano" is used, a shared library is generated with "-Wl,-soname,libX.A.B.C.D", whereas "X" is the "project_name" and "A.B.C.D" is the major, minor, micro, and nano versions, respectively. diff --git a/level_3/fake/specifications/settings.txt b/level_3/fake/specifications/settings.txt index ef9895e..09e6818 100644 --- a/level_3/fake/specifications/settings.txt +++ b/level_3/fake/specifications/settings.txt @@ -19,12 +19,14 @@ Settings Specification: "build_sources_headers": Must only contain any number of valid filenames. "build_sources_library": Must only contain any number of valid filenames. "build_sources_program": Must only contain any number of valid filenames. - "build_sources_setting": Must only contain any number of valid filenames. "build_sources_script": Must only contain any number of valid filenames. + "build_sources_setting": Must only contain any number of valid filenames. "build_static": Must only one of: "yes" or "no". - "defines_all": Must only contain any number of valid C/C++ macro names. - "defines_static": Must only contain any number of valid C/C++ macro names. - "defines_shared": Must only contain any number of valid C/C++ macro names. + "defines_all": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler". + "defines_library": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler". + "defines_program": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler". + "defines_shared": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler". + "defines_static": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler". "environment": Environment variable names, case-sensitive, usually uppercase. May only contain characters allowed in an environment variable. "flags_all": Must only contain any number of parameters supported by the compiler specified in "build_compiler". "flags_library": Must only contain any number of parameters supported by the compiler specified in "build_compiler". @@ -34,6 +36,7 @@ Settings Specification: "modes": Any valid word character, '-', or '+'. "modes_default": May only be a single complete Content word defined in "modes" Object. "path_headers": Must be a single valid path. + "path_headers_preserve": Must only be one of "yes" or "no". "path_language": Must be a single valid path. "path_library_script": Must be a single valid path. "path_library_shared": Must be a single valid path. @@ -43,24 +46,29 @@ Settings Specification: "path_program_static": Must be a single valid path. "path_sources": Must only be a valid directory path or not specified. "path_standard": Must only one of: "yes" or "no". - "project_name": Must only contain characters allowed in a filename. "process_post": Must contain only a single valid filename. "process_pre": Must contain only a single valid filename. + "project_name": Must only contain characters allowed in a filename. "search_exclusive": Must only one of: "yes" or "no". "search_shared": Must only one of: "yes" or "no". "search_static": Must only one of: "yes" or "no". - "version_major": Must only be a single value containg valid filename characters. - "version_minor": Must only be a single value containg valid filename characters. - "version_micro": Must only be a single value containg valid filename characters. - "version_target": Must only be one of: "major", "minor", or "micro". + "version_major": Must only be a single value containing valid filename characters. + "version_major_prefix": Must be zero or more valid filename characters. + "version_minor": Must only be a single value containing valid filename characters. + "version_minor_prefix": Must be zero or more valid filename characters. + "version_micro": Must only be a single value containing valid filename characters. + "version_micro_prefix": Must be zero or more valid filename characters. + "version_nano": Must only be a single value containing valid filename characters. + "version_nano_prefix": Must be zero or more valid filename characters. + "version_target": Must only be one of: "major", "minor", "micro", or "nano". The following Object names support having a "-" and a "mode" name, such as "build_libraries-individual" for a mode called "individual"\: "build_libraries" "build_sources_headers" "build_sources_library" "build_sources_program" - "build_sources_setting" "build_sources_script" + "build_sources_setting" "defines_all" "defines_shared" "defines_static" @@ -70,3 +78,7 @@ Settings Specification: "flags_program" "flags_shared" "flags_static" + + TODO: look into adding all, except for "modes" and "modes_default". + TODO: some options will "replace" while others will "append". + those that "replace" will be single property ones, such as "build_compiler" or "version_major". diff --git a/level_3/firewall/data/build/settings b/level_3/firewall/data/build/settings index 63320d7..896130a 100644 --- a/level_3/firewall/data/build/settings +++ b/level_3/firewall/data/build/settings @@ -5,7 +5,7 @@ project_name firewall version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_basic_list_read/data/build/settings b/level_3/fss_basic_list_read/data/build/settings index a03b85d..8d363ca 100644 --- a/level_3/fss_basic_list_read/data/build/settings +++ b/level_3/fss_basic_list_read/data/build/settings @@ -5,7 +5,7 @@ project_name fss_basic_list_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_basic_list_write/data/build/settings b/level_3/fss_basic_list_write/data/build/settings index 2aea34d..a31145d 100644 --- a/level_3/fss_basic_list_write/data/build/settings +++ b/level_3/fss_basic_list_write/data/build/settings @@ -5,7 +5,7 @@ project_name fss_basic_list_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_basic_read/data/build/settings b/level_3/fss_basic_read/data/build/settings index 38da6ca..54656f6 100644 --- a/level_3/fss_basic_read/data/build/settings +++ b/level_3/fss_basic_read/data/build/settings @@ -5,7 +5,7 @@ project_name fss_basic_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_basic_write/data/build/settings b/level_3/fss_basic_write/data/build/settings index cb32cea..ada933b 100644 --- a/level_3/fss_basic_write/data/build/settings +++ b/level_3/fss_basic_write/data/build/settings @@ -5,7 +5,7 @@ project_name fss_basic_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_embedded_list_read/data/build/settings b/level_3/fss_embedded_list_read/data/build/settings index e32512a..cd8bb16 100644 --- a/level_3/fss_embedded_list_read/data/build/settings +++ b/level_3/fss_embedded_list_read/data/build/settings @@ -5,7 +5,7 @@ project_name fss_embedded_list_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_embedded_list_write/data/build/settings b/level_3/fss_embedded_list_write/data/build/settings index 49cbcde..c70ac40 100644 --- a/level_3/fss_embedded_list_write/data/build/settings +++ b/level_3/fss_embedded_list_write/data/build/settings @@ -5,7 +5,7 @@ project_name fss_embedded_list_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_extended_list_read/data/build/settings b/level_3/fss_extended_list_read/data/build/settings index fda158b..cc53cf2 100644 --- a/level_3/fss_extended_list_read/data/build/settings +++ b/level_3/fss_extended_list_read/data/build/settings @@ -5,7 +5,7 @@ project_name fss_extended_list_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_extended_list_write/data/build/settings b/level_3/fss_extended_list_write/data/build/settings index e966b93..bd98b6d 100644 --- a/level_3/fss_extended_list_write/data/build/settings +++ b/level_3/fss_extended_list_write/data/build/settings @@ -5,7 +5,7 @@ project_name fss_extended_list_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_extended_read/data/build/settings b/level_3/fss_extended_read/data/build/settings index 07679b9..7449e6a 100644 --- a/level_3/fss_extended_read/data/build/settings +++ b/level_3/fss_extended_read/data/build/settings @@ -5,7 +5,7 @@ project_name fss_extended_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_extended_write/data/build/settings b/level_3/fss_extended_write/data/build/settings index cef845d..19a8c29 100644 --- a/level_3/fss_extended_write/data/build/settings +++ b/level_3/fss_extended_write/data/build/settings @@ -5,7 +5,7 @@ project_name fss_extended_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_identify/data/build/settings b/level_3/fss_identify/data/build/settings index 57a6c0c..fedacdd 100644 --- a/level_3/fss_identify/data/build/settings +++ b/level_3/fss_identify/data/build/settings @@ -5,7 +5,7 @@ project_name fss_identify version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/fss_status_code/data/build/settings b/level_3/fss_status_code/data/build/settings index f94c9eb..91436eb 100644 --- a/level_3/fss_status_code/data/build/settings +++ b/level_3/fss_status_code/data/build/settings @@ -5,7 +5,7 @@ project_name fss_status_code version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/iki_read/data/build/settings b/level_3/iki_read/data/build/settings index 0b3d820..a6b740a 100644 --- a/level_3/iki_read/data/build/settings +++ b/level_3/iki_read/data/build/settings @@ -5,7 +5,7 @@ project_name iki_read version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/iki_write/data/build/settings b/level_3/iki_write/data/build/settings index 7a28fd3..cd821ad 100644 --- a/level_3/iki_write/data/build/settings +++ b/level_3/iki_write/data/build/settings @@ -5,7 +5,7 @@ project_name iki_write version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment diff --git a/level_3/status_code/data/build/settings b/level_3/status_code/data/build/settings index 106c86a..732705d 100644 --- a/level_3/status_code/data/build/settings +++ b/level_3/status_code/data/build/settings @@ -5,7 +5,7 @@ project_name status_code version_major 0 version_minor 5 version_micro 4 -version_target major +version_target micro environment