DELETED COMMENTS.txt Index: COMMENTS.txt ================================================================== --- COMMENTS.txt +++ COMMENTS.txt @@ -1,8 +0,0 @@ - - -The latest milestone releases of the Silktorrent -are published as part of the mmmv_devel_tools - - http://technology.softf1.com/mmmv_devel_tools/ - - DELETED milestone_releases/2016_06_24_Silktorrent/README.md Index: milestone_releases/2016_06_24_Silktorrent/README.md ================================================================== --- milestone_releases/2016_06_24_Silktorrent/README.md +++ milestone_releases/2016_06_24_Silktorrent/README.md @@ -1,143 +0,0 @@ - -# Silktorrent - ---------------------------------------------------------------------------- - -The current version of the Silktorrent is -**INCOMPLETE** and **VERY EXPERIMENTAL**. - -Up to date Silktorrent documentation **MIGHT** -resides at [silktorrent.ch](http://www.silktorrent.ch). - - -The Silktorrent is meant to be a doomsday last resort network software -infrastructure that allows to create reliable information systems -that can withstand a situation, where Police/adversaries have -taken down literally all servers of the authors of the censored -files and, at the same time, have access to all of the encryption -keys of the authors of the censored files and, at the same time, -have taken down internet connections of the general public. - - ---------------------------------------------------------------------------- - -## The Ideas that are used in this Version - -This version of the Silktorrent is based on the idea that -**tar-files can be named according to their secure hash and size**. -Applications that use the Silktorrent system for "networking", -write and read the tar-files from some local folder -and that folder is then filled with or emptied from -tar-files by some Silktorrent "P2P agent". -In the simplest case the "P2P agent" can be -literally a human, who copies tar-files -between a USB-stick and the local folder, -but in practice there can be more automated -solutions. Due to the fact that the -names of the tar-files contain their -size and secure hash, it does not matter, -which foes help to transport the files. From -Silktorrent architecture point of view, it is -perfectly OK for the NSA to offer a Dropbox service -to privacy advocates, as long as the timing and -location based metadata is hidden from the NSA. - - -Redundancy is achieved by just having a copy of a -collection of the tar-files at multiple locations. -It's a lot like the software package -collections of various Linux distributions. -The path, how the software packages reach the computer, -copied from a DVD, downloaded from a local server, -etc. does not matter. The tar-files can be delivered -by pigeons that have memory cards attached to their -feet, mail-drones, commuters, who just pick up and -dump files through their cellphone WiFi, etc. -**Silktorrent e-mail or an instant messaging -service can be implemented by saving extra -records to a separate database, where there is a -relation between the tar-file name, recipient ID and -suggested-deletion-date.** -Counter-measures for Denial-of-Service attacks are -based on authentication, timing, location(channel). - - -One of the core ideas of the Silktorrent is that -the Silktorrent applications must assume that the -location of the tar-file can not be concluded from -its name. Silktorrent applications ask for tar-files -from agents, who might not have the requested tar-file -available and the agents might not even be able to -retrieve the requested tar-file. The agents are free to -use whatever [crazy](http://longterm.softf1.com/specifications/lightmsgp/v2/) -addressing scheme that they want. - - ---------------------------------------------------------------------------- - -## Further Censorship Countermeasures - -In practice a relatively short fixed width string, for example, a -[GUID](http://longterm.softf1.com/specifications/third_party/ietf/mmmv_highlighted_RFCs/RFC_00004122_GUID_spec.txt) -can be searched from a database table in a fraction of a second. -Even the [SQLite](https://www.sqlite.org/) -database engine is that fast. -That makes it feasible for people to use a set of -one-time ID-s, user-names, with every person that they -exchange Silktorrent based e-mails with. An e-mail server -tells an e-mail client that it has a set of encrypted blobs -that are addressed to Joe, Micky, Jill, Jack and it's up to You -to figure out, which one You are. Each e-mail has a -suggested-deletion-date attached to it, either in the -tar-file, which contains folders - -* payload -* header - -or the e-mail client, which gave the tar-file to the -e-mail server, told the e-mail server the -suggested-deletion-date. The header contains a file -named - - ./silktorrent_salt.txt - -which probabilistically guarantees that the -size and bit-stream of the payload can not be -fully deduced from the tar-file name, forcing -censoring parties to download a considerable -amount of tar-files that they do not need. - - ---------------------------------------------------------------------------- - -## The Silktorrent is Licensed Under the MIT License - - The MIT license from the - http://www.opensource.org/licenses/mit-license.php - - Copyright 2016, martin.vahi@softf1.com that has an - Estonian personal identification code of 38108050020. - - Permission is hereby granted, free of charge, to - any person obtaining a copy of this software and - associated documentation files (the "Software"), - to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and - to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ---------------------------------------------------------------------------- - DELETED milestone_releases/2016_06_24_Silktorrent/doc/COMMENTS.txt Index: milestone_releases/2016_06_24_Silktorrent/doc/COMMENTS.txt ================================================================== --- milestone_releases/2016_06_24_Silktorrent/doc/COMMENTS.txt +++ milestone_releases/2016_06_24_Silktorrent/doc/COMMENTS.txt @@ -1,26 +0,0 @@ - -You may want find out, whether more up to date -documentation is available from the - - http://www.silktorrent.ch - -The - - ./clone_of_the_public_regions_of_the_Fossil_repository - -is likely to be a waste of Your time. -It exists only to make at least something -available, if the online version is not available -or has been compromised in some relevant manner. - - -The - - ./clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash - -is a convenience script, a wrapper to the Fossil. -It requires Bash and has been properly tested only on Linux. -If it is executed without any arguments, it -displays a help message that describes the possible arguments. - - DELETED milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/fossil-src-1.34.tar.gz Index: milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/fossil-src-1.34.tar.gz ================================================================== --- milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/fossil-src-1.34.tar.gz +++ milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/fossil-src-1.34.tar.gz cannot compute difference between binary files DELETED milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash Index: milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash ================================================================== --- milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash +++ milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/mmmv_Fossil_operator_t1.bash @@ -1,1008 +0,0 @@ -#!/usr/bin/env bash -# Initial author: Martin.Vahi@softf1.com -# This file is in the public domain. -#========================================================================== -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -S_FP_ORIG="`pwd`" -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s" - -fun_assert_exists_on_path_t1 () { - local S_NAME_OF_THE_EXECUTABLE=$1 # first function argument - local S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE 2>/dev/null\`" - local S_TMP_1="" - local S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - if [ "$S_TMP_1" == "" ] ; then - echo "" - echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE\" to be on the PATH." - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # fun_assert_exists_on_path_t1 - -fun_assert_exists_on_path_t1 "file" # for checking MIME types -fun_assert_exists_on_path_t1 "find" # for recursing -fun_assert_exists_on_path_t1 "fossil" # tested with v1.34 -fun_assert_exists_on_path_t1 "gawk" -fun_assert_exists_on_path_t1 "grep" -fun_assert_exists_on_path_t1 "cat" -fun_assert_exists_on_path_t1 "ruby" # anything over/equal v.2.1 will probably do -fun_assert_exists_on_path_t1 "shred" # for secure delete -fun_assert_exists_on_path_t1 "uname" # to check the OS type -fun_assert_exists_on_path_t1 "uuidgen" # needed for generating tmp file names -fun_assert_exists_on_path_t1 "xargs" # find . -name '*' | xargs blabla - -#-------------------------------------------------------------------------- -S_TMP_0="`uname -a | grep -E [Ll]inux`" -if [ "$S_TMP_0" == "" ]; then - echo "" - echo " The classical command line utilities at " - echo " different operating systems, for example, Linux and BSD," - echo " differ. This script is designed to run only on Linux." - echo " If You are willing to risk that some of Your data " - echo " is deleted and/or Your operating system instance" - echo " becomes permanently flawed, to the point that " - echo " it will not even boot, then You may edit the Bash script that " - echo " displays this error message by modifying the test that " - echo " checks for the operating system type." - echo "" - echo " If You do decide to edit this Bash script, then " - echo " a recommendation is to test Your modifications " - echo " within a virtual machine or, if virtual machines are not" - echo " an option, as some new operating system user that does not have " - echo " any access to the vital data/files." - echo " GUID=='10b1e716-b716-4be1-950e-60c2018160e7'" - echo "" - echo " Aborting script without doing anything." - echo "" - exit 1 # exit with error -fi - - -#-------------------------------------------------------------------------- -S_TMP_0="" -S_ACTIVITY_OF_THIS_SCRIPT=$1 -S_URL_REMOTE_REPOSITORY="" -SB_EXIT_WITH_ERROR="f" - -# needed for scriptability -S_ARGNAME_ACTIVITY_SHRED_ARG_2="do_not_prompt_for_confirmation" - -fun_print_msg_t1() { - echo "" - echo "The second console argument " - echo "is expected to be the URL of the remote repository." -} # fun_print_msg_t1 - - -fun_exit_without_any_errors_t1() { - local X_SKIP_MESSAGE="$1" - if [ "$X_SKIP_MESSAGE" == "" ]; then - echo "" - echo "Aborting script without doing anything." - echo "" - fi - #---- - cd $S_FP_ORIG - exit 0 -} # fun_exit_without_any_errors_t1 - - -#-------------------------------------------------------------------------- -# Activity aliases for comfort. - -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "up" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "upload" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "ci" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="overwrite_remote_with_local" -fi -#-------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "down" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="overwrite_local_with_remote" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "download" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="overwrite_local_with_remote" -fi -#-------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "co" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="clone_all" -fi -#-------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "?" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="help" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-?" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="help" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--help" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="help" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-help" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="help" -fi -#-------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "rm" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "del" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "delete" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="shred_local_copy" -fi -#-------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "info" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="about" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--info" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="about" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-info" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="about" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "--about" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="about" -fi -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "-about" ]; then - S_ACTIVITY_OF_THIS_SCRIPT="about" -fi -#-------- -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "about" ]; then - echo "" - echo " The initial version of this script has been written by " - echo " Martin.Vahi@softf1.com " - echo " in 2016_02. The initial version is in public domain." - echo " The command \"help\" offers more information. " - echo "" - echo " Thank You for using this script :-)" - echo "" - echo "" - fun_exit_without_any_errors_t1 "t" -fi -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "exit" ]; then - fun_exit_without_any_errors_t1 -else - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_all" ]; then - if [ "$2" == "" ]; then - fun_print_msg_t1 - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - else - S_URL_REMOTE_REPOSITORY="$2" - fi - else - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_public" ]; then - if [ "$2" == "" ]; then - fun_print_msg_t1 - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - else - S_URL_REMOTE_REPOSITORY="$2" - fi - else - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "overwrite_local_with_remote" ]; then - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_remote_with_local" ]; then - if [ "$2" != "" ]; then - if [ "$2" == "use_autogenerated_commit_message" ]; then - if [ "$3" != "" ]; then - echo "" - echo "If the first console argument is \"overwrite_local_with_remote\" and" - echo "the second console argument is \"use_autogenerated_commit_message\", " - echo "then there should not be a 3. console argument." - echo "GUID=='94e31fd3-85c9-4dfb-a2fd-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - else - if [ "$2" == "read_commit_message_from_file" ]; then - S_FP_MESSAGE_FILE_CANDIDATE="$3" # file path candidate - if [ "$S_FP_MESSAGE_FILE_CANDIDATE" == "" ]; then - echo "" - echo "If the first console argument is " - echo "\"overwrite_local_with_remote\" and" - echo "the second console argument is " - echo "\"read_commit_message_from_file\", " - echo "then there should be also a 3. console argument " - echo "that is expected to be a file path to a text file." - echo "GUID=='adfce255-e3fe-40ae-84fd-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then - if [ "$4" != "" ]; then - echo "" - echo "If the first console argument is " - echo "\"overwrite_local_with_remote\" and" - echo "the second console argument is " - echo "\"read_commit_message_from_file\", " - echo "then there should be exactly 3. console arguments, " - echo "not 4 or more. Unfortunately the 4. argument is currently " - echo "---citation--start---" - echo "$4" - echo "---citation--end-----" - echo "GUID=='0b03ec37-da96-456e-b3fd-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then - if [ ! -e "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then - echo "" - echo "The commit message file path candidate " - echo "references either a missing file or " - echo "a broken symlink." - echo "GUID=='4c29c433-48e4-4ced-a4fd-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then - if [ -d "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then - echo "" - echo "The commit message file path candidate " - echo "references a folder, but it should " - echo "reference a text file." - echo "GUID=='fee26538-6bfb-4adb-b4fd-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then - S_TMP_0="`filesize $S_FP_MESSAGE_FILE_CANDIDATE`" - S_TMP_1="`ruby -e \"s_out='OK'; if (2000<$S_TMP_0) then s_out='too_big' end; print(s_out);\"`" - if [ "$S_TMP_1" == "too_big" ]; then - echo "" - echo "The commit message file path " - echo "references a file that has a size of $S_TMP_0 bytes." - echo "The suspicion is that it is a wrong file. " - echo "because a commit message is usually not that lengthy." - echo "GUID=='b95f593c-5140-4506-84ed-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - else - if [ "$S_TMP_0" == "0" ]; then - echo "" - echo "The commit message file path " - echo "references a file that has a size of 0 (zero) bytes." - echo "" - echo "The generation of commit message files " - echo "can be avoided by using the option " - echo "" - echo " \"use_autogenerated_commit_message\"" - echo "" - echo "in stead of the option " - echo "" - echo " \"read_commit_message_from_file\" ." - echo "" - echo "GUID=='31b2b6aa-10c1-4349-93ed-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - fi - if [ "$SB_EXIT_WITH_ERROR" == "f" ]; then - S_TMP_0="`file --mime-type $S_FP_MESSAGE_FILE_CANDIDATE | grep text `" - if [ "$S_TMP_0" == "" ]; then - echo "" - echo "The commit message file path " - echo "references a file that has a MIME type of " - echo "" - echo "`file --mime-type $S_FP_MESSAGE_FILE_CANDIDATE`" - echo "" - echo "The commit message file must be a text file and " - echo "text files have the string \"text\" in their MIME type name." - echo "GUID=='fc0cb22c-578d-47a2-92ed-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - fi # read_commit_message_from_file - fi - fi - else - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "shred_local_copy" ]; then - if [ "$2" != "" ]; then # the 2. arg is optional here - if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then - echo "" - echo "If the first console argument is \"shred_local_copy\", then" - echo "the second console argument is allowed to be only " - echo "" - echo " \"$S_ARGNAME_ACTIVITY_SHRED_ARG_2\", without quotation marks." - echo "GUID=='1a618c55-ef9a-4a2f-aeed-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - else - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "print_script_version" ]; then - if [ "$S_ACTIVITY_OF_THIS_SCRIPT" != "help" ]; then - echo "" - echo "The very first console argument " - echo "of this script is expected to be " - echo "a command that is specific to this script." - echo "GUID=='a6728226-e43f-4baa-93ed-60c2018160e7'" - S_ACTIVITY_OF_THIS_SCRIPT="help" - SB_EXIT_WITH_ERROR="t" - fi - fi - fi - fi - fi - fi - fi -fi - -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "help" ]; then - echo "" - echo "Possible console argument sets are:" - echo "" - echo " clone_all " - echo " clone_public " - echo " overwrite_local_with_remote" - echo "" - echo " overwrite_remote_with_local (use_autogenerated_commit_message)?" - echo " overwrite_remote_with_local read_commit_message_from_file " - echo "" - echo " shred_local_copy ($S_ARGNAME_ACTIVITY_SHRED_ARG_2)?" - echo " help" - echo " print_script_version" - echo " exit # just for testing" - echo "" - #---- - cd $S_FP_ORIG - if [ "$SB_EXIT_WITH_ERROR" == "t" ]; then - exit 1 # To let the parent script know that - # the parent script calls this script with - # flawed console argument values. - else - exit 0 - fi -fi - -#-------------------------------------------------------------------------- -# The script version is needed by other scripts that depend on this script. -# The script version GUID must not be surrounded by -# any quote signs (',"), because otherwise the -# version GUID will be overwritten by the UpGUID tool, -# but unlike error message GUID-s this GUID must stay constant. -# To allow the version to be used as sub-part of file names and -# folder names, the version must not contain any spaces, line breaks -# and other characters that have a special meaning in Bash. -# -# If the version ID did not match the GUID regex, then I would have to -# write a long comment about it not being allowed to match the -# GUID regex. :-D -S_VERSION_OF_THIS_SCRIPT="c52b5919-3ea2-4ebd-94fd-60c2018160e7" -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "print_script_version" ]; then - echo "The version of this script is: $S_VERSION_OF_THIS_SCRIPT" - #---- - cd $S_FP_ORIG - exit 0 -fi - - -#-------------------------------------------------------------------------- -S_FP_SANDBOX_DIRECTORY_NAME="sandbox_of_the_Fossil_repository" -S_FP_SANDBOX="$S_FP_DIR/$S_FP_SANDBOX_DIRECTORY_NAME" -#---- -S_FP_ARCHIVES_DIRECTORY_NAME="archival_copies_of_the_Fossil_repository_sandbox" -S_FP_ARCHIVES="$S_FP_DIR/$S_FP_ARCHIVES_DIRECTORY_NAME" -S_FP_ARCHIVES_TS="$S_FP_ARCHIVES/v$S_TIMESTAMP" -#---- -S_FP_FOSSILFILE_NAME="repository_storage.fossil" -S_FP_FOSSILFILE="$S_FP_DIR/$S_FP_FOSSILFILE_NAME" - -#-------- -S_LC_NOT_DETERMINED="not determined" -SB_SANDBOX_DIR_EXISTS="$S_LC_NOT_DETERMINED" -fun_sandbox_folder_or_symlink_exists() { - SB_SANDBOX_DIR_EXISTS="f" - if [ ! -e $S_FP_SANDBOX ]; then - # Does not exist or it is a broken symbolic link. - SB_SANDBOX_DIR_EXISTS="f" - else - if [ -d $S_FP_SANDBOX ]; then - SB_SANDBOX_DIR_EXISTS="t" - fi - fi -} # fun_sandbox_folder_or_symlink_exists - -SB_FOSSILFILE_EXISTS="$S_LC_NOT_DETERMINED" -fun_fossil_repository_file_or_symlink_exists() { - SB_FOSSILFILE_EXISTS="t" - if [ ! -e $S_FP_FOSSILFILE ]; then - # Does not exist or it is a broken symbolic link. - SB_FOSSILFILE_EXISTS="f" - else - if [ -d $S_FP_FOSSILFILE ]; then - SB_FOSSILFILE_EXISTS="f" - fi - fi -} # fun_fossil_repository_file_or_symlink_exists - -S_LC_NOT_DETERMINED="not determined" -SB_ARCHIVE_DIR_EXISTS="$S_LC_NOT_DETERMINED" -fun_archives_folder_or_symlink_exists() { - SB_ARCHIVE_DIR_EXISTS="f" - if [ ! -e $S_FP_ARCHIVES ]; then - # Does not exist or it is a broken symbolic link. - SB_ARCHIVE_DIR_EXISTS="f" - else - if [ -d $S_FP_ARCHIVES ]; then - SB_ARCHIVE_DIR_EXISTS="t" - fi - fi -} # fun_archives_folder_or_symlink_exists - -#-------- -fun_fossil_repository_file_or_symlink_exists -fun_sandbox_folder_or_symlink_exists -fun_archives_folder_or_symlink_exists - -fun_assertion_t1() { - local SB_CANDIDATE=$1 - local SB_THROW="t" - #---- - if [ "$SB_CANDIDATE" == "t" ]; then - SB_THROW="f" - else - if [ "$SB_CANDIDATE" == "f" ]; then - SB_THROW="f" - fi - fi - #---- - if [ "$SB_THROW" == "t" ]; then - echo "" - echo "This Bash script is flawed. " - echo "fun_assertion_t1() assertion failed." - echo "GUID=='0e253639-885d-49b9-a4ed-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi -} # fun_assertion_t1 - -fun_assertion_t1 "$SB_FOSSILFILE_EXISTS" -fun_assertion_t1 "$SB_SANDBOX_DIR_EXISTS" -fun_assertion_t1 "$SB_ARCHIVE_DIR_EXISTS" - -#-------------------------------------------------------------------------- - -fun_assert_repository_local_copy_existence() { - fun_fossil_repository_file_or_symlink_exists - if [ "$SB_FOSSILFILE_EXISTS" == "f" ]; then - echo "" - echo "The directory " - echo "`pwd`" - echo "does not contain a Fossil repository file named " - echo "" - echo " $S_FP_FOSSILFILE_NAME" - echo "" - echo "Aborting script." - echo "GUID=='9e259331-2604-424b-b2dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - fun_sandbox_folder_or_symlink_exists - if [ "$SB_SANDBOX_DIR_EXISTS" == "f" ]; then - echo "" - echo "The directory " - echo "`pwd`" - echo "does not contain a directory named " - echo "" - echo " $S_FP_SANDBOX_DIRECTORY_NAME" - echo "" - echo "Aborting script." - echo "GUID=='bd274616-5c19-4da2-b3dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi -} # fun_assert_repository_local_copy_existence - - -fun_assert_the_lack_of_repository_local_copy_t1() { - if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then - echo "" - echo "The directory " - echo "`pwd`" - echo "already contain a file named " - echo "" - echo " $S_FP_FOSSILFILE_NAME" - echo "" - echo "To avoid overwriting an existing local copy, this script is aborted" - echo "and nothing is downloaded/uploaded by this script." - echo "GUID=='e82ebd3b-eeec-4eaa-b5dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then - echo "" - echo "The directory " - echo "`pwd`" - echo "already contains a directory named " - echo "" - echo " $S_FP_SANDBOX_DIRECTORY_NAME" - echo "" - echo "To avoid overwriting an existing local copy, this script is aborted" - echo "and nothing is downloaded/uploaded by this script." - echo "GUID=='12ece555-f0b7-4b68-91dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi -} # fun_assert_the_lack_of_repository_local_copy_t1 - - - -fun_initialize_sandbox_t1() { - mkdir -p $S_FP_SANDBOX - sync; - cd $S_FP_SANDBOX - fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability - fossil settings autosync off ; - fossil settings case-sensitive TRUE ; - fossil checkout --force --latest - fossil pull - fossil close - sync; -} # fun_initialize_sandbox_t1 - - -#-------------------------------------------------------------------------- -fun_last_minute_checks_t1() { - # Last minute checks, just to be sure. - local S_FP_FORBIDDEN_VALUE=$1 - if [ "$S_FP_FORBIDDEN_VALUE" == "/" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='731d2a24-b82e-4703-b4dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$S_FP_FORBIDDEN_VALUE" == "$HOME" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='31c15b4f-e658-41c0-92dd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$S_FP_FORBIDDEN_VALUE" == "/home" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='b9f58420-e95a-488e-84cd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$S_FP_FORBIDDEN_VALUE" == "/root" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='40236327-50d4-45aa-83cd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$S_FP_FORBIDDEN_VALUE" == "/etc" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='d26ba631-c952-4f73-b4cd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ "$S_FP_FORBIDDEN_VALUE" == "/usr" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='398688e1-00d4-47b1-98cd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi -} # fun_last_minute_checks_t1 - - -#-------------------------------------------------------------------------- -SB_FOLDER_IS_EMPTY="$S_LC_NOT_DETERMINED" -fun_folder_is_empty_t1() { - local S_FP_FOLDER_TO_STUDY=$1 - local S_FP_ORIG_LOCAL="`pwd`" - #-------- - SB_FOLDER_IS_EMPTY="t" - local S_TMP_0="`cd $S_FP_FOLDER_TO_STUDY; ls -l | grep \"total 0\"`" - if [ "$S_TMP_0" == "" ]; then - SB_FOLDER_IS_EMPTY="f" - fi - #-------- - cd $S_FP_ORIG_LOCAL # just in case -} # fun_folder_is_empty_t1 - -fun_folder_is_empty_t1 "$S_FP_DIR" -fun_assertion_t1 "$SB_FOLDER_IS_EMPTY" -if [ "$SB_FOLDER_IS_EMPTY" == "t" ]; then - echo "" - echo "This Bash script is flawed. The " - echo "$S_FP_DIR" - echo "can not possibly be empty, because it contains " - echo "at least one file, whcih is " - echo "this very same Bash script that outputs the current error message." - echo "GUID=='ca6dfb51-7279-415f-a1bd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 -fi - -#-------------------------------------------------------------------------- - -fun_activity_core_overwrite_local_with_remote() { - fun_assert_repository_local_copy_existence - #-------- - # The checks are party to cope with the `whoami`=="root" case. - fun_last_minute_checks_t1 "$S_FP_SANDBOX" - fun_last_minute_checks_t1 "$S_FP_ARCHIVES" - fun_last_minute_checks_t1 "$S_FP_ARCHIVES_TS" - #-------- - chmod -f -R u+rx $S_FP_SANDBOX - fun_folder_is_empty_t1 "$S_FP_SANDBOX" - if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then - # This if-statement is needed because the - # cp -f -R AnEmptyDirectory/* ToSomewhere/ - # gives an error. - #---- - mkdir -p $S_FP_ARCHIVES_TS - #---- - # The "chmod -f -R " is not used because it would - # waste time on folders that are named by - # the older $S_FP_ARCHIVES_TS values. - chmod -f 0700 $S_FP_ARCHIVES - chmod -f 0700 $S_FP_ARCHIVES_TS - #---- - # The separate cp and rm of the sandbox - # contents is to somewhat retain the original - # file premissions of the sandbox contents. - cp -f -R $S_FP_SANDBOX/* $S_FP_ARCHIVES_TS/ - fun_last_minute_checks_t1 "$S_FP_SANDBOX" - chmod -f -R u+rwx $S_FP_SANDBOX - rm -fr $S_FP_SANDBOX/* - fi - #-------- - cd $S_FP_SANDBOX - fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability - fossil settings autosync off ; - fossil checkout --force --latest - fossil pull - fossil close -} # fun_activity_core_overwrite_local_with_remote - - - -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_local_with_remote" ]; then - fun_activity_core_overwrite_local_with_remote - #---- - cd $S_FP_ORIG - exit 0 -fi # overwrite_local_with_remote - - - -#-------------------------------------------------------------------------- -fossil close 2>/dev/null - -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_public" ]; then - fun_assert_the_lack_of_repository_local_copy_t1 - cd $S_FP_DIR - fossil clone $S_URL_REMOTE_REPOSITORY ./$S_FP_FOSSILFILE_NAME - fun_initialize_sandbox_t1 - cd $S_FP_ORIG - #---- - sync - fun_activity_core_overwrite_local_with_remote - cd $S_FP_ORIG - sync - #---- - exit 0 -fi # clone_public - - -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "clone_all" ]; then - fun_assert_the_lack_of_repository_local_copy_t1 - cd $S_FP_DIR - #-------- - S_USERNAME="" - while [ "$S_USERNAME" == "" ] - do - echo "" - echo "Please enter a username: " - S_USERNAME="`ruby -e \"s=gets.gsub(/[\n\r\s]/,'');print(s)\"`" - S_URL="`export S_USERNAME=\"$S_USERNAME\"; S_URL=\"$S_URL_REMOTE_REPOSITORY\" ruby -e 's_0=ENV[\"S_URL\"].sub(\"http://\",\"http:/\").sub(\"http:/\",\"http://\"+ENV[\"S_USERNAME\"].to_s+\":nonsensepassword@\");print(s_0)'`" - done - #-------- - fossil clone --private $S_URL ./$S_FP_FOSSILFILE_NAME - fun_initialize_sandbox_t1 - cd $S_FP_ORIG - #---- - sync - fun_activity_core_overwrite_local_with_remote - cd $S_FP_ORIG - sync - #---- - exit 0 -fi # clone_all - - -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "overwrite_remote_with_local" ]; then - fun_assert_repository_local_copy_existence - #-------- - # It's important that this script will not try - # to recursively copy/move the content of the "/" to - # a subfolder of the "/", the "/tmp". - # The other folders that are covered by the - # test are a bit of an overkill here, may be even an - # annoying and unjustified restrictions, but - # in most cases those restrictions do not hurt either. - fun_last_minute_checks_t1 "$S_FP_SANDBOX" - #---- - S_TMP_0="/tmp/tmp_mmmv_$S_VERSION_OF_THIS_SCRIPT" - S_TMP_1="__" - S_TMP_FOR_LOCAL="$S_TMP_0$S_TMP_1`uuidgen`" - S_TMP_FOR_COMMIT_MESSAGE="$S_TMP_0$S_TMP_1`uuidgen`" - mkdir -p $S_TMP_FOR_LOCAL - chmod -f -R u+rwx $S_FP_SANDBOX - mv -f $S_FP_SANDBOX/* $S_TMP_FOR_LOCAL/ # the -f is for empty sandbox - #-------- - fun_activity_core_overwrite_local_with_remote - fun_last_minute_checks_t1 "$S_FP_SANDBOX" # should there be flaws elsewhere - chmod -f -R u+rwx $S_FP_SANDBOX # to be able to delete the old content - #-------- - cd $S_FP_SANDBOX - fossil open $S_FP_DIR/$S_FP_FOSSILFILE_NAME # full path for reliability - fossil settings autosync off ; - fun_folder_is_empty_t1 "$S_FP_SANDBOX" - SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="f" - if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then - fossil rm --hard --case-sensitive TRUE ./* - SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="t" - fun_last_minute_checks_t1 "`pwd`" - if [ "$S_FP_SANDBOX" == "`pwd`" ]; then - rm -fr ./* - else - echo "" - echo "This Bash script is flawed." - echo "GUID=='39b31171-e088-4d93-94bd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - fi - mv -f $S_TMP_FOR_LOCAL/* $S_FP_SANDBOX/ # the -f is for empty source - #---- - fun_last_minute_checks_t1 "$S_TMP_FOR_LOCAL" - rm -fr $S_TMP_FOR_LOCAL - #---- - fun_folder_is_empty_t1 "$S_FP_SANDBOX" - if [ "$SB_FOLDER_IS_EMPTY" == "f" ]; then - if [ "$S_FP_SANDBOX" != "`pwd`" ]; then - echo "" - echo "This Bash script is flawed." - echo "GUID=='7e89c51b-f97c-43d2-a5bd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - find . -name '*' | xargs fossil add --force --dotfiles --case-sensitive TRUE - SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED="t" - fi - if [ "$SB_SANDBOX_CONTENT_MIGHT_HAVE_BEEN_CHANGED" == "t" ]; then - if [ "$2" == "" ]; then - echo "" - #echo "Please enter a one-liner commit message: " - #S_TMP_0="`ruby -e \"s=gets.gsub(/[\n\r\s]/,'');print(s)\"`" - # TODO: improve this script so that it would not ask - # for a commit message, when nothing changed. It requires - # some recursive analysis of files, which might be slow. - # This script is not optimal for speed even now and that would - # make it even slower. On the other hand, usually when - # the upload operation is initiated, there are some changes, - # which means that the slow analysis would be useless in - # most frequent cases. So this thing needs to be figured out - # at some later time, when there is more experience with the - # use of this script. - read -p "Please enter a one-liner commit message: " S_TMP_0 - echo $S_TMP_0 > $S_TMP_FOR_COMMIT_MESSAGE - else - if [ "$2" == "use_autogenerated_commit_message" ]; then - echo "Autogenerated commit message timestamp: $S_TIMESTAMP" > $S_TMP_FOR_COMMIT_MESSAGE - else - if [ "$2" == "read_commit_message_from_file" ]; then - S_FP_MESSAGE_FILE_CANDIDATE="$3" # file path candidate - # Initial file existence and type checks for the - # $S_FP_MESSAGE_FILE_CANDIDATE - # were conducted at the start of the script. - # but the $S_FP_MESSAGE_FILE_CANDIDATE might have - # referenced a file in the sandbox and - # that file might have been just removed/deleted. - # - # There is no threat that the file got changed to a folder - # or a symlink switched from a file to a folder, - # at least that's the case for the single threaded model. - if [ ! -e "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then - # missing or a broken symlink - echo "" - echo "The commit message file is missing or " - echo "references a broken symlink." - echo "The file or symlink to it was fine at " - echo "the start of this script, it passed the various tests, " - echo "but for some reason it got deleted or its target . " - echo "got deleted. If the commit message file or" - echo "the symlink target resided within the sandbox, then " - echo "a recommendation is to use a file that resides " - echo "outside of the sandbox." - echo "GUID=='9c0865d1-1134-4203-92bd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - if [ -d "$S_FP_MESSAGE_FILE_CANDIDATE" ]; then - # folder or a symlink to a folder - echo "" - echo "The commit message file path does not reference " - echo "a file. It references a folder or a symlink to a folder." - echo "The file or symlink to it was fine at " - echo "the start of this script, it passed the various tests, " - echo "but for some reason there were changes. " - echo "GUID=='4a707715-ffe8-47ca-b4bd-60c2018160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 - fi - cat $S_FP_MESSAGE_FILE_CANDIDATE > $S_TMP_FOR_COMMIT_MESSAGE - # else - # Due to the checks at the start of the script - # this else branch is useless. - fi - fi - fi - #-------- - fossil commit --message-file $S_TMP_FOR_COMMIT_MESSAGE - #---- - fun_last_minute_checks_t1 "$S_TMP_FOR_COMMIT_MESSAGE" - rm -f $S_TMP_FOR_COMMIT_MESSAGE - #---- - fi - #-------- - fossil push --private - fossil push - fossil pull --private - fossil close - #---- - cd $S_FP_ORIG - exit 0 -fi # overwrite_remote_with_local - - -#-------------------------------------------------------------------------- -if [ "$S_ACTIVITY_OF_THIS_SCRIPT" == "shred_local_copy" ]; then - #-------- - SB_THERE_IS_SOMETHING_TO_DELETE="f" - if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then - SB_THERE_IS_SOMETHING_TO_DELETE="t" - fi - if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then - SB_THERE_IS_SOMETHING_TO_DELETE="t" - fi - if [ "$SB_ARCHIVE_DIR_EXISTS" == "t" ]; then - SB_THERE_IS_SOMETHING_TO_DELETE="t" - fi - #-------- - if [ "$SB_THERE_IS_SOMETHING_TO_DELETE" == "t" ]; then - if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then - # Includes the $2=="" case - # id est if the control flow is in here, then there - # is a need to prompt for confirmation. - # The skipping of the prompt is necessary for - # software that use this script as its sub-component. - #-------- - echo "" - echo "The command \"shred_local_copy\" deletes " - echo "the repository file, the sandbox and " - echo "the associated automatically created archives." - echo "" - read -p "Proceed with deletion? (Yes/whatever_else) " S_TMP_0 - S_TMP_1="`echo $S_TMP_0 | gawk '{print tolower($1)}'`" - if [ "$S_TMP_1" == "yes" ]; then - echo "" - printf "Deleting ... " - else - fun_exit_without_any_errors_t1 - fi - fi - fi - #-------- - if [ "$SB_FOSSILFILE_EXISTS" == "t" ]; then - cd $S_FP_DIR # just in case - # The shred "-f" option re-sets file access permissions as needed. - nice -n10 shred -f --remove $S_FP_FOSSILFILE - fi - #-------- - if [ "$SB_SANDBOX_DIR_EXISTS" == "t" ]; then - cd $S_FP_SANDBOX - fun_last_minute_checks_t1 "`pwd`" - #-------- - # The S_TMP_0 is to suppress shred output. - S_TMP_0="`find . -name '*' | xargs shred -f --remove 2>/dev/null`" - #---- - cd $S_FP_DIR # step out of the sandbox directory - fun_last_minute_checks_t1 "$S_FP_SANDBOX" - chmod -f -R 0700 $S_FP_SANDBOX - rm -fr $S_FP_SANDBOX - fi - #-------- - if [ "$SB_ARCHIVE_DIR_EXISTS" == "t" ]; then - cd $S_FP_ARCHIVES - fun_last_minute_checks_t1 "`pwd`" - #-------- - # The S_TMP_0 is to suppress shred output. - S_TMP_0="`find . -name '*' | xargs shred -f --remove 2>/dev/null`" - #---- - cd $S_FP_DIR # step out of the archive directory - fun_last_minute_checks_t1 "$S_FP_ARCHIVES" - chmod -f -R 0700 $S_FP_ARCHIVES - rm -fr $S_FP_ARCHIVES - fi - #-------- - if [ "$SB_THERE_IS_SOMETHING_TO_DELETE" == "t" ]; then - if [ "$2" != "$S_ARGNAME_ACTIVITY_SHRED_ARG_2" ]; then - echo "✓" - echo "" - fi - fi - #-------- - cd $S_FP_ORIG - exit 0 -fi # shred_local_copy - - -#-------------------------------------------------------------------------- -# All possible actions must have been described -# above this code block. -echo "" -echo "This Bash script is flawed." -echo "GUID=='4332a245-ca3c-45d0-8bad-60c2018160e7'" -echo "" -#---- -cd $S_FP_ORIG -exit 1 - -#========================================================================== - DELETED milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/repository_storage.fossil Index: milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/repository_storage.fossil ================================================================== --- milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/repository_storage.fossil +++ milestone_releases/2016_06_24_Silktorrent/doc/clone_of_the_public_regions_of_the_Fossil_repository/repository_storage.fossil cannot compute difference between binary files DELETED milestone_releases/2016_06_24_Silktorrent/src/silktorrent_packager_t1_v2016_06_24.bash Index: milestone_releases/2016_06_24_Silktorrent/src/silktorrent_packager_t1_v2016_06_24.bash ================================================================== --- milestone_releases/2016_06_24_Silktorrent/src/silktorrent_packager_t1_v2016_06_24.bash +++ milestone_releases/2016_06_24_Silktorrent/src/silktorrent_packager_t1_v2016_06_24.bash @@ -1,2331 +0,0 @@ -#!/usr/bin/env bash -#========================================================================== -# -# The MIT license from the -# http://www.opensource.org/licenses/mit-license.php -# -# Copyright 2016, martin.vahi@softf1.com that has an -# Estonian personal identification code of 38108050020. -# -# Permission is hereby granted, free of charge, to -# any person obtaining a copy of this software and -# associated documentation files (the "Software"), -# to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and -# to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -#========================================================================== -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -S_FP_ORIG="`pwd`" -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s" - -#-------------------------------------------------------------------------- - -SB_TMP_FOLDER_EXISTS="f" # to omit one useless and slow file system access -S_FP_TMP_FOLDER="" - - -func_mmmv_silktorrent_packager_t1_exit_without_any_errors() { - local S_0="" - local S_1="" - if [ "$SB_TMP_FOLDER_EXISTS" == "t" ]; then - S_0= - fi - exit 0 # exit without an error -} # func_mmmv_silktorrent_packager_t1_exit_without_any_errors - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="" -func_mmmv_operating_system_type_t1() { - if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" == "" ]; then - S_TMP_0="`uname -a | grep -E [Ll]inux`" - if [ "$S_TMP_0" != "" ]; then - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="Linux" - else - S_TMP_0="`uname -a | grep BSD `" - if [ "$S_TMP_0" != "" ]; then - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="BSD" - else - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="undetermined" - fi - fi - fi -} # func_mmmv_operating_system_type_t1 - -#-------------------------------------------------------------------------- - -func_mmmv_operating_system_type_t1 -if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "Linux" ]; then - if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "BSD" ]; then - echo "" - echo " The classical command line utilities at " - echo " different operating systems, for example, Linux and BSD," - echo " differ. This script is designed to run only on " - echo " Linux and some BSD variants." - echo " If You are willing to risk that some of Your data " - echo " is deleted and/or Your operating system instance" - echo " becomes permanently flawed, to the point that " - echo " it will not even boot, then You may edit the Bash script that " - echo " displays this error message by modifying the test that " - echo " checks for the operating system type." - echo "" - echo " If You do decide to edit this Bash script, then " - echo " a recommendation is to test Your modifications " - echo " within a virtual machine or, if virtual machines are not" - echo " an option, as some new operating system user that does not have " - echo " any access to the vital data/files." - echo " GUID=='ae8bec13-4773-4811-94a2-83f2c08160e7'" - echo "" - echo " Aborting script without doing anything." - echo "" - exit 1 # exit with error - fi -fi - - -#-------------------------------------------------------------------------- - -SB_EXISTS_ON_PATH_T1_RESULT="f" -func_sb_exists_on_path_t1 () { - local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument - #-------- - # Function calls like - # - # func_sb_exists_on_path_t1 "" - # func_sb_exists_on_path_t1 " " - # func_sb_exists_on_path_t1 "ls ps" # contains a space - # - # are not allowed. - if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_sb_exists_on_path_t1 " - echo "" - echo "is not designed to handle an argument that " - echo "equals with an empty string." - echo "GUID=='d26d1825-90bf-4ab7-94a2-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_sb_exists_on_path_t1 " - echo "" - echo "is not designed to handle an argument value that contains " - echo "spaces or tabulation characters." - echo "The received value in parenthesis:($S_NAME_OF_THE_EXECUTABLE_1)." - echo "GUID=='8b402457-dd5b-4921-b2a2-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`" - local S_TMP_1="" - local S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" - else - SB_EXISTS_ON_PATH_T1_RESULT="t" - fi -} # func_sb_exists_on_path_t1 - - - -func_assert_exists_on_path_t2 () { - local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument - local S_NAME_OF_THE_EXECUTABLE_2="$2" # optional argument - local S_NAME_OF_THE_EXECUTABLE_3="$3" # optional argument - local S_NAME_OF_THE_EXECUTABLE_4="$4" # optional argument - #-------- - # Function calls like - # - # func_assert_exists_on_path_t2 "" "" "ls" - # func_assert_exists_on_path_t2 "ls" "" "ps" - # - # are not allowed by the spec of this function, but it's OK to call - # - # func_assert_exists_on_path_t2 "ls" "" - # func_assert_exists_on_path_t2 "ls" "ps" "" - # func_assert_exists_on_path_t2 "ls" "" "" "" - # - # - local SB_THROW="f" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then - SB_THROW="t" - else - if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "" ] ; then - SB_THROW="t" - fi - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then - SB_THROW="t" - fi - else - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then - SB_THROW="t" - fi - fi - fi - fi - #---- - if [ "$SB_THROW" == "t" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_assert_exists_on_path_t2 " - echo "" - echo "is not designed to handle series of arguments, where " - echo "empty strings preced non-empty strings." - echo "GUID=='ebdae326-6445-46bf-9292-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ "$5" != "" ] ; then - echo "" - echo "This Bash function is designed to work with at most 4 input arguments" - echo "GUID=='522b025f-199b-49f1-a292-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # Function calls like - # - # func_assert_exists_on_path_t2 " " - # func_assert_exists_on_path_t2 "ls ps" # contains a space - # - # are not allowed. - SB_THROW="f" - local S_TMP_0="" - local S_TMP_1="" - local S_TMP_2="" - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_1" - S_TMP_2="GUID=='4f034735-f71d-4fda-9192-83f2c08160e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_2\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_2" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_2" - S_TMP_2="GUID=='d8ee8e35-3634-4963-b192-83f2c08160e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_3\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_3" - S_TMP_2="GUID=='198c2e17-f678-451d-8192-83f2c08160e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_4\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_4" - S_TMP_2="GUID=='405c6c1c-7830-4bc4-a492-83f2c08160e7'" - fi - fi - #-------- - if [ "$SB_THROW" == "t" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_assert_exists_on_path_t2 " - echo "" - echo "is not designed to handle an argument value that contains " - echo "spaces or tabulation characters." - echo "The unaccepted value in parenthesis:($S_TMP_1)." - echo "Branch $S_TMP_2." - echo "GUID=='efcc3ce1-f52a-4f28-b582-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - SB_THROW="f" # Just a reset, should I forget to reset it later. - #--------------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`" - local S_TMP_1="" - local S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE_1\" to be on the PATH." - echo "GUID=='b10b8c12-1d9e-4a4b-b482-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_2 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" is available on the PATH." - echo "GUID=='a3730829-4edf-4221-9482-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_3 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" " - echo "is available on the PATH." - echo "GUID=='50757072-5884-4bf0-8482-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_4 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_4\" is available on the PATH." - echo "GUID=='ece93119-b340-44ea-8382-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - else - return # at least one of the programs was available at the PATH - fi - #-------- -} # func_assert_exists_on_path_t2 - -func_assert_exists_on_path_t2 "bash" # this is a bash script, but it does not hurt -func_assert_exists_on_path_t2 "basename" # for extracting file names from full paths -func_assert_exists_on_path_t2 "cat" # opposite to split -func_assert_exists_on_path_t2 "sha256sum" "sha256" "rhash" -func_assert_exists_on_path_t2 "tigerdeep" "rhash" -func_assert_exists_on_path_t2 "whirlpooldeep" "rhash" -func_assert_exists_on_path_t2 "tar" -#-------- -func_assert_exists_on_path_t2 "file" # for checking the MIME type of the potential tar file -func_assert_exists_on_path_t2 "filesize" "ruby" -func_assert_exists_on_path_t2 "gawk" -#func_assert_exists_on_path_t2 "grep" -#func_assert_exists_on_path_t2 "readlink" -func_assert_exists_on_path_t2 "ruby" # anything over/equal v.2.1 will probably do -#func_assert_exists_on_path_t2 "split" # for cutting files -#func_assert_exists_on_path_t2 "test" -func_assert_exists_on_path_t2 "uname" # to check the OS type -func_assert_exists_on_path_t2 "uuidgen" "uuid" # GUID generation on Linux and BSD -#func_assert_exists_on_path_t2 "xargs" -func_assert_exists_on_path_t2 "wc" # for checking hash lengths - - -#-------------------------------------------------------------------------- - -func_mmmv_exc_hash_function_input_verification_t1() { - local S_NAME_OF_THE_BASH_FUNCTION="$1" # The name of the Bash function. - local S_FP_2_AN_EXISTING_FILE="$2" # The first argument of the Bash function. - #-------- - if [ "$S_NAME_OF_THE_BASH_FUNCTION" == "" ] ; then - echo "" - echo "The implementation of the function that " - echo "calls the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "is flawed. The call to the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "misses the first argument or the first argument is an empty string." - echo "GUID=='5daa2d36-5d4a-45ac-b482-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`printf \"$S_NAME_OF_THE_BASH_FUNCTION\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_BASH_FUNCTION" != "$S_TMP_0" ] ; then - echo "" - echo "The implementation of the function that " - echo "calls the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "is flawed. Function names are not allowed to contain spaces or tabs." - echo "GUID=='32fcb7e5-7f9c-42c5-a382-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # Function calls like - # - # "" - # " " - # - # are not allowed. - local S_TMP_0="`printf \"$S_FP_2_AN_EXISTING_FILE\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_TMP_0" == "" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " $S_NAME_OF_THE_BASH_FUNCTION" - echo "" - echo "is not designed to handle an argument that " - echo "equals with an empty string or a series of spaces and tabs." - echo "GUID=='59c6d156-1693-41f5-a282-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ ! -e $S_FP_2_AN_EXISTING_FILE ] ; then - echo "" - echo "The file " - echo "" - echo " $S_FP_2_AN_EXISTING_FILE " - echo "" - echo "is missing or it is a broken link." - echo "GUID=='2bdfa731-a82d-4c24-9182-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ -d $S_FP_2_AN_EXISTING_FILE ] ; then - echo "" - echo "The file path " - echo "" - echo " $S_FP_2_AN_EXISTING_FILE " - echo "" - echo "references a folder, but a file is expected." - echo "GUID=='342e52a2-f7fa-41c9-b572-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- - # At this line the verifications have all passed. - #-------------------- -} # func_mmmv_exc_hash_function_input_verification_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_GUID_T1_RESULT="not_yet_set" -S_FUNC_MMMV_GUID_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_GUID_t1() { - # Does not take any arguments. - #-------- - #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="uuidgen" # Linux version - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="uuid" # BSD version - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then - echo "" - echo "All of the GUID generation implementations that this script " - echo "is capable of using (uuidgen, uuid) " - echo "are missing from the PATH." - echo "GUID=='92cc9502-5791-4674-8672-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='69f2c03e-920f-4bbf-8472-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_GUID_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuidgen" ]; then - S_TMP_0="`uuidgen`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"uuidgen\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`uuidgen`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='899ef135-d280-406a-b362-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0" - fi - #-------------------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuid" ]; then - S_TMP_0="`uuid`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"uuid\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`uuid`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='185b4073-5086-4196-9462-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_GUID_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - S_TMP_1="36" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the GUID specification, IETF RFC 4122, " - echo "the lenght of the GUID is " - echo "$S_TMP_1 characters, but the result of the " - echo "" - echo " func_mmmv_GUID_t1" - echo "" - echo "is something else. The flawed GUID candidate in parenthesis:" - echo "($S_FUNC_MMMV_GUID_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed GUID candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='8fc9064f-4364-490c-9262-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_GUID_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SHA256_T1_RESULT="not_yet_set" -S_FUNC_MMMV_SHA256_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_sha256_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_sha256_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="sha256sum" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="sha256" # usually available on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - # The console application "rhash" is preferred to the "sha256" - # because the "rhash" output can be simply processed with - # "gawk", which takes over 5x less memory than the Ruby interpreter, - # not to mention the initialization cost of the Ruby interpreter. - #-------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then - echo "" - echo "All of the SHA-256 implementations that this script " - echo "is capable of using (sha256sum, rhash, sha256) " - echo "are missing from the PATH." - echo "GUID=='446b14b1-7fc2-494d-8362-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='7d241052-f154-434c-a262-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_SHA256_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256sum" ]; then - S_TMP_0="`sha256sum $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"sha256sum\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`sha256sum $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='ec70acd6-b0de-4e1b-a262-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - # The gawk is used for selecting the 1. column because - # according to the - # - # echo "aa bb" | time -v gawk '{printf $1}' - # - # the gawk takes about 3MiB, which is far less than the - # - # time -v ruby -e "puts 'hi'" - # - # indicated 16MiB - # - S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --sha256 $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --sha256 $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='56091f39-0544-449c-a562-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256" ]; then - #---- - S_FUNC_MMMV_SHA256_T1_RESULT=\ - "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\" 2>/dev/null`" - #---- - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"sha256\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo \ - "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\"`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='65d0c243-954c-4d36-a452-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_SHA256_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - S_TMP_1="64" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the SHA-256 hash algorithm" - echo "the lenght of the SHA-256 hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_sha256_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_SHA256_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='9fbed31c-5742-4c66-a352-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_sha256_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_TIGERHASH_T1_RESULT="not_yet_set" -S_FUNC_MMMV_TIGERHASH_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_tigerhash_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_tigerhash_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="tigerdeep" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then - echo "" - echo "All of the Tiger hash implementations that this script " - echo "is capable of using (tigerdeep, rhash) " - echo "are missing from the PATH." - echo "GUID=='e0e0004d-7492-4aae-8152-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='4e6ce53e-0891-4a84-a152-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_TIGERHASH_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "tigerdeep" ]; then - S_TMP_0="`tigerdeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"tigerdeep\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`tigerdeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='0ac9014e-b1d8-49c0-a352-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --tiger $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --tiger $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='0d5ce111-3bf8-4eee-9252-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_TIGERHASH_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - S_TMP_1="48" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the Tiger hash algorithm" - echo "the lenght of the Tiger hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_tigerhash_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_TIGERHASH_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='23b13133-f4fb-46fd-8552-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_tigerhash_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="not_yet_set" -S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_whirlpoolhash_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_whirlpoolhash_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="whirlpooldeep" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then - echo "" - echo "All of the Whirlpool hash implementations that this script " - echo "is capable of using (whirlpooldeep, rhash) " - echo "are missing from the PATH." - echo "GUID=='3ec66a62-8721-42e7-b252-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='a812ee31-2b39-4268-9242-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "whirlpooldeep" ]; then - S_TMP_0="`whirlpooldeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"whirlpooldeep\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`whirlpooldeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='5ac1162f-5b05-4db9-8442-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='37202b22-1600-406b-9142-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT\" | wc -m | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - S_TMP_1="128" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the Whirlpool hash algorithm" - echo "the lenght of the Tiger hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_whirlpoolhash_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='6f22524d-5309-48d6-9142-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_whirlpoolhash_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_FILESIZE_T1_RESULT="not_yet_set" -S_FUNC_MMMV_FILESIZE_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_filesize_t1() { - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_filesize_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="filesize" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="ruby" # helps on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then - echo "" - echo "All of the applications that this function is " - echo "capable of using for finding out file size (filesize, ruby)" - echo "are missing from the PATH." - echo "GUID=='c16c313b-1051-410e-a242-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='3b8d513c-90dd-406b-a442-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_FILESIZE_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "filesize" ]; then - S_TMP_0="`filesize $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"filesize\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`filesize $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='28f88541-0f95-4a94-8442-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_FILESIZE_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "ruby" ]; then - S_TMP_0="`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\" 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"ruby\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\"`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='53b91474-cdfe-43f8-b242-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_FILESIZE_T1_RESULT="$S_TMP_0" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_FILESIZE_T1_RESULT\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - local SB_THROW="f" - if [ "$S_TMP_0" != "$S_FUNC_MMMV_FILESIZE_T1_RESULT" ]; then - SB_THROW="t" - else - if [ "$S_FUNC_MMMV_FILESIZE_T1_RESULT" == "" ]; then - SB_THROW="t" - fi - fi - #---- - if [ "$SB_THROW" == "t" ]; then - echo "" - echo "The result of the " - echo "" - echo " func_mmmv_filesize_t1" - echo "" - echo "for " - echo "" - echo "($S_FUNC_MMMV_FILESIZE_T1_RESULT)" - echo "" - echo "either contain spaces, tabs or is an empty string," - echo "which is wrong, because even a file with the size of 0 " - echo "should have a file size of \"0\", which is not an empty string." - echo "GUID=='4e5a622c-7b21-4de0-a432-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_filesize_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1() { - echo "" - echo "Command line format: " - echo "" - echo " ARGLIST " - echo "" - echo " ARGLIST :== help | WRAP | UNWRAP | VERIFY | RUN_SELFTEST " - echo " WRAP :== wrap " - echo " UNWRAP :== unwrap " - echo " VERIFY :== verify " - echo " RUN_SELFTEST :== test_hash_t1 " - echo "" - echo "" - echo "" -} # func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1() { - local S_FP_0="$1" # Path to the file. - #-------- - if [ "$S_FP_0" == "" ]; then - echo "" - echo "The 2. console argument is expected to be " - echo "a path to a file, but currently " - echo "the 2. console argument is missing." - echo "GUID=='fe2aff9e-9555-40a3-b332-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ ! -e "$S_FP_0" ]; then - if [ -h "$S_FP_0" ]; then - echo "" - echo "The file path " - echo "" - echo " $S_FP_0" - echo "" - echo "is a path of a broken symlink, but symlinks " - echo "are not supported at all." - echo "The reason, why symlinks to files are not supported is that " - echo "the file size of symlinks can differ from " - echo "the file size of the target of the symlink." - echo "GUID=='60e5391a-37c5-48e4-b332-83f2c08160e7'" - echo "" - else - echo "" - echo "The file with the path of " - echo "" - echo " $S_FP_0" - echo "" - echo "does not exist." - echo "GUID=='45c4b001-7a5c-4a0a-b732-83f2c08160e7'" - echo "" - fi - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ -d "$S_FP_0" ]; then - if [ -h "$S_FP_0" ]; then - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a symlink that references folder, but " - echo "a file is expected." - echo "GUID=='4b3f22d7-441b-4de8-b432-83f2c08160e7'" - echo "" - else - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a folder, but it is expected to " - echo "to reference a file." - echo "GUID=='f3d00ec1-40be-4f84-a432-83f2c08160e7'" - echo "" - fi - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ -h "$S_FP_0" ]; then - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a symlink, a file is expected." - echo "The reason, why symlinks to files are not supported is that " - echo "the file size of symlinks can differ from " - echo "the file size of the target of the symlink." - echo "GUID=='20430c48-653d-4a05-b432-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="for input and output" -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="" # optim. hack -func_mmmv_silktorrent_packager_t1_bash_reverse_string() { - local S_IN="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER" - #-------------------- - local S_TMP_0="not set" - # Mode selection: - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="gawk" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="ruby" # helps on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then - echo "" - echo "All of the applications that this function is " - echo "capable of using for finding out file size (gawk, ruby)" - echo "are missing from the PATH." - echo "GUID=='35084451-8a4f-465e-a222-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='d1cca38b-d5ee-4fc9-a822-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - #-------------------- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="" - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "gawk" ]; then - # The awk code example originates from - # http://www.linuxandlife.com/2013/06/how-to-reverse-string.html - # archival copy: https://archive.is/Cx0xF - #---- - S_TMP_0="`printf "$S_IN" | \ - awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf x}'`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"gawk\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`printf "$S_IN" | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf x}'`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='2e32181a-f13c-49bf-8222-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0" - fi - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "ruby" ]; then - #---- - S_TMP_0="`ruby -e \"puts(ARGV[0].to_s.reverse)\" "$S_IN" 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"ruby\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`ruby -e \"puts('$S_IN'.reverse)\"`" # with the stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='4707c539-4300-4cb5-8322-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0" - fi - #-------------------- -} # func_mmmv_silktorrent_packager_t1_bash_reverse_string - - -#-------------------------------------------------------------------------- - -# As of 2016 the maximum file name length on Linux is 255 characters. -# At -# -# http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs -# -# the eCryptfs related recommendation is to keep the lengths -# of file names to less than 140 characters. -# -# A citation from -# http://windows.microsoft.com/en-us/windows/file-names-extensions-faq#1TC=windows-7 -# archieval copy: https://archive.is/UKBmd -# "Windows limits a single path to 260 characters." -# -# A citation from CygWin mailing list: -# https://cygwin.com/ml/cygwin/2004-10/msg01323.html -# archival copy: https://archive.is/GRvFK -# "The Unicode versions of several functions permit a -# maximum path length of 32,767 characters, -# composed of components up to 255 characters in length. -# To specify such a path, use the "\\?\" prefix. For example, -# "\\?\D:\". To specify such a UNC path, use the "\\?\UNC\" -# prefix. For example, "\\?\UNC\\". -# Note that these prefixes are not used as part of the path -# itself. They indicate that the path should be passed to the -# system with minimal modification. An implication of this is -# that you cannot use forward slashes to represent path separators -# or a period to represent the current directory." -# Related pages: -# https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx -# archival copy: https://archive.is/p891y -# -# To allow database indexes that store the -# file names of the blogs -# to work as efficiently as possible, the first -# characters of the file name should be as -# uniformly random set of characters as possible. -# If file name starts with a secure hash, then -# that requirement is met. -# -# The parser that dismantles the file name to relevant components -# should be implementable in different programming languages -# without investing considerable amount of development time. -# The syntax of the file name should also allow the -# file name to be parsed computationally cheaply. -# -# As of 2016_05 the file extension .stblob seems to be unused. -# Therefore the "silktorrent blob", .stblob, can be used for the -# extension of the blob files. -# -# Compression of the blobs IS NOT ALLOWED, because the -# blobs must be extractable without becoming a victim -# of an attack, where 100GiB of zeros is packed to a -# small file. The container format is the tar format, -# without any compression. -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - # The Tiger hash has 48 characters. - # The Whirlpool hash has 128 characters. - # The SHA-256 hash has 64 characters. - # - # A file size of 1TiB is ~10^12 ~ 13 characters - # A file size of 1PiB is ~10^15 ~ 14 characters - # A file size of 1EiB is ~10^18 ~ 19 characters - # A file size of 1ZiB is ~10^21 ~ 22 characters - # A file size of 1YiB is ~10^24 ~ 25 characters - # - # The max. file name length on Linux and - # Windows (Unicode API) is 255 characters. - #---- - # The character budget: - # 6 characters --- file name format type ID - # rgx_in_ruby=/v[\d]{4}[_]/ - # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \ - # gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[v_]/,"");printf "%s", $1 }' - # - # max 32 characters --- file size - # rgx_in_ruby=/s[\d]+[_]/ - # echo "v0034_" | gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' - # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \ - # gawk '/^s[0-9]+_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[s_]/,"");printf "%s", $1 }' - # - # - # 66 characters --- SHA-256 - # rgx_in_ruby=/h[\dabcdef]{64}[_]/ - # echo "h`sha256sum /dev/null | gawk '/[0-9abcdef]/ {printf "%s",$1}'`_" | \ - # gawk '/^h[0-9abcdef]+_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[h_]/,"");printf "%s", $1 }' - # - # - # 50 characters --- Tiger - # rgx_in_ruby=/i[\dabcdef]{48}$/ # lacks the ending "_" - # # for db index optimization - # The gawk code is as with the sha256, - # except that sha256sum-> tigerdeep, "^h"->"^i", - # "[h_]"->"[i_]" - # - #-------- - # As the current version of this script depends on Ruby anyway, - # the gawk regex based branches that are really - # complex and require multiple gawk calls can be left unimplemented. - # That way this script becomes more succinct. - #-------------------- - func_mmmv_tigerhash_t1 "$S_FP_0" - #echo " Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT" - #func_mmmv_whirlpoolhash_t1 "$S_FP_0" - #echo " Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT" - func_mmmv_sha256_t1 "$S_FP_0" - #echo " SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT" - func_mmmv_filesize_t1 "$S_FP_0" - #echo " file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT" - #-------- - local S_NAME_REVERSED="bolbts." # ".stblob".reverse - local S_0="v0001_s$S_FUNC_MMMV_FILESIZE_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - S_0="_h$S_FUNC_MMMV_SHA256_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - S_0="_i$S_FUNC_MMMV_TIGERHASH_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - #---- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_NAME_REVERSED" - func_mmmv_silktorrent_packager_t1_bash_reverse_string - S_0="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER" - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="$S_0" -} # func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_delete_tmp_folder_t1(){ - local S_FP_0="$1" # folder path - #-------- - if [ ! -e "$S_FP_0" ]; then - echo "" - echo "This script is flawed. The folder " - echo " $S_FP_0" - echo "is expected to exist during the " - echo "call to this function." - echo "GUID=='28744c23-746a-45de-8322-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # To avoid a situation, where due to some - # flaw the home folder or something else important - # gets accidentally recursively deleted, - # the following test transforms the path from - # /tmp/../home/blabla - # to a full path without the dots and then studies, whether - # the full path points to somehwere in the /tmp - local S_FP_1="`cd $S_FP_0; pwd`" - if [ ! -e "$S_FP_1" ]; then - echo "" - echo "This script is flawed. The folder " - echo " $S_FP_1" - echo "is missing." - echo "GUID=='d16bd124-bc70-4114-8322-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/home `" - if [ "$S_TMP_0" != "" ]; then - echo "" - echo "This script is flawed." - echo "The temporary sandbox folder must reside in /tmp." - echo "" - echo "S_FP_0==$S_FP_0" - echo "" - echo "S_FP_1==$S_FP_1" - echo "" - echo "S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='5eca69e7-8b8d-47d8-8122-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - # Just to be sure, the same thing is checked by a slightly - # different regex and using the "==" in stead of the "!=". - S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/tmp/`" - if [ "$S_TMP_0" == "" ]; then - echo "" - echo "This script is flawed." - echo "The temporary sandbox folder must reside in /tmp." - echo "" - echo "S_FP_0==$S_FP_0" - echo "" - echo "S_FP_1==$S_FP_1" - echo "" - echo "S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='2dafcbf1-68f7-4e41-8512-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - rm -fr $S_FP_1 - if [ -e "$S_FP_1" ]; then - echo "" - echo "Something went wrong. The recursive deletion of the temporary folder, " - echo " $S_FP_1" - echo "failed." - echo "GUID=='1de602b5-174e-4dee-b812-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_delete_tmp_folder_t1 - - -#-------------------------------------------------------------------------- - -# Throws, if there exists a file with the same path. -func_mmmv_create_folder_if_it_does_not_already_exist_t1(){ - local S_FP_0="$1" # folder path - #-------- - if [ "$S_FP_0" == "" ]; then - # Using gawk and alike to cover also cases, where - # $S_FP_0==" " - # is intentionally left out to avoid the overhead, but - # due to some luck the mkdir exits with an error code greater than 0, - # if it misses a path argument. - echo "" - echo "S_FP_0==\"\"" - echo "GUID=='25389fb4-7fb5-4b04-b312-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- - if [ -e "$S_FP_0" ]; then - if [ ! -d "$S_FP_0" ]; then - echo "" - echo "The path that is suppose to reference either " - echo "an existing folder or a non-existent folder, " - echo "references a file." - echo "GUID=='3d10cbe1-d097-42a5-9f12-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - #-------- - mkdir -p $S_FP_0 - if [ "$?" != "0" ]; then - echo "" - echo "mkdir for path " - echo " $S_FP_0" - echo "failed." - echo "GUID=='15fbef3b-805a-45e2-9312-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - if [ ! -e "$S_FP_0" ]; then - echo "" - echo "mkdir execution succeeded, but for some other reason the folder " - echo " $S_FP_0" - echo "does not exist." - echo "GUID=='e281e242-6195-4fd5-b312-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_create_folder_if_it_does_not_already_exist_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # == "" on failure - # otherwise full file path -func_mmmv_create_tmp_folder_t1(){ - # Does not take any arguments. - #-------- - #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1" - #-------------------- - S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # value for failure - func_mmmv_GUID_t1 - if [ "$S_FUNC_MMMV_GUID_T1_RESULT" == "" ]; then - echo "" - echo "This script is flawed. GUID generation failed and " - echo "the GUID generation function did not throw despite " - echo "the fact that it should have detected its own failure." - echo "GUID=='3cc92c1c-4df7-4091-8112-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - local S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - # The following few if-clauses form a short unrolled loop. The unrolling - # is for simplicity, because it is Bash, where loops are nasty. - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - #---- - if [ -e "$S_TMP_0" ]; then - echo "" - echo "This script failed to generate a locally unique path." - echo "GUID=='208aa0d2-e05b-4d70-b512-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_TMP_0" - if [ ! -e "$S_TMP_0" ]; then - echo "" - echo "mkdir for path " - echo " $S_TMP_0" - echo "failed." - echo "GUID=='9fe0c330-c713-46b9-b502-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="$S_TMP_0" -} # func_mmmv_create_tmp_folder_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1() { - local S_FP_0="$1" # Path to the file. - #---- - # It's not necessary for the file to actually exist, - # because this function only analyzes the file path string. - # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - if [ "$S_FP_0" == "" ]; then - echo "" - echo "The file path candidate must not be an empty string." - echo "GUID=='2edcf528-cd73-42d3-9402-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - # The - # - # basename /tmp/foo/ - # - # returns - # - # foo - # - # That is to say, the "basename" ignores the rightmost slash. - #---- - local S_TMP_0="`ruby -e \"\ - s='noslash';\ - if(('$S_FP_0'.reverse)[0..0]=='/') then \ - s='slash_present';\ - end;\ - puts(s);\ - \"`" - if [ "$S_TMP_0" != "noslash" ]; then - echo "" - echo "The path candidate must not end with a slash." - echo "" - echo " S_FP_0==$S_FP_0" - echo "" - echo " S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='22c77358-4f17-4c98-9102-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - basename $S_FP_0 1>/dev/null # to set a value to the $? in this scope - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " basename $S_FP_0 " - echo "" - echo "exited with an error." - echo "GUID=='fba39e45-4c8a-4b37-b402-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_TMP_0="`basename $S_FP_0`" - if [ "$S_TMP_0" == "" ]; then - echo "" - echo "The file path candidate must be a string that " - echo "is not an empty string after " - echo "all of the spaces and tabs have been removed from it." - echo "GUID=='90849917-3e05-40ae-a302-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="" - local S_OUT="unsupported_by_this_script_version" - #-------- - # In Ruby - # "foo.stblob"[0..(-8)]=="foo" - # "foo.stblob"[(-99)..(-1)]==nil - # - local S_TMP_1="`ruby -e \"\ - x='$S_TMP_0'[0..(-8)];\ - if(x!=nil) then\ - md=x.reverse.match(/v[\\d]+/);\ - if(md!=nil) then\ - s_0=(md[0].to_s)[1..(-1)];\ - print(s_0.sub(/^[0]+/,''));\ - end;\ - end;\ - \"`" - # echo "$S_TMP_0" - # echo "$S_TMP_1" - #---- - if [ "$S_TMP_1" != "" ]; then - S_OUT="silktorrent_packet_format_version_$S_TMP_1" - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="$S_OUT" -} # func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 "$S_FP_0" - local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT" - if [ "$S_PACKET_FORMAT" == "unsupported_by_this_script_version" ]; then - echo "" - echo "There exists a possibility that the " - echo "Silktorrent packet candidate is actually OK, but " - echo "this is an older version of the Silktorrent implementaiton and " - echo "the older version does not support " - echo "newer Silktorrent packet formats. " - echo "The file path of the Silktorrent packet candidate:" - echo "" - echo " $S_FP_0" - echo "" - echo "GUID=='3e96d920-02dc-43a2-a202-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_TMP_1="" - if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then - func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_0" - #echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - S_TMP_1="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - fi - #---- - if [ "$S_TMP_1" == "" ]; then - echo "" - echo "This script is flawed." - echo "It should have thrown before the control flow reaches this line." - echo "GUID=='95af1748-4736-48dd-b102-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_TMP_0="`basename $S_FP_0`" # The S_TMP_0 must be evaluated - # after the various functions to - # counter a situation, where - # the S_TMP_0 is overwritten - # by the name-calc function - # or by one of the sub-functions - # of the name-calc function. - # The flaw occurs, when the - # S_TMP_0 is used within the - # name-calc function without - # declaring it to be a local - # variable. - #-------- - #echo "S_FP_0==$S_FP_0" - #echo "S_TMP_0==$S_TMP_0" - #echo "S_TMP_1==$S_TMP_1" - local S_OUT="" - if [ "$S_TMP_1" == "$S_TMP_0" ]; then - S_OUT="verification_passed" - else - S_OUT="verification_failed" - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="$S_OUT" -} # func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_test_1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - echo "" - #---- - func_mmmv_tigerhash_t1 "$S_FP_0" - echo " Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT" - func_mmmv_whirlpoolhash_t1 "$S_FP_0" - echo " Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT" - func_mmmv_sha256_t1 "$S_FP_0" - echo " SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT" - func_mmmv_filesize_t1 "$S_FP_0" - echo " file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT" - #---- - echo "" -} # func_mmmv_silktorrent_packager_t1_bash_test_1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_wrap_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_create_tmp_folder_t1 - if [ "$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" == "" ]; then - echo "This script is flawed, because the folder " - echo "creation function should have thrown " - echo "before the control flow reaches this branch." - echo "GUID=='86a9f465-fc12-4f17-b2f1-83f2c08160e7'" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_FP_TMP_0="$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" - if [ ! -e "$S_FP_TMP_0" ]; then - echo "This script is flawed." - echo "May be some other thread deleted the folder or" - echo "the folder creation function returned a valid path, but" - echo "did not actually create the folder that it was supposed create." - echo "S_FP_TMP_0==$S_FP_TMP_0" - echo "GUID=='58b79d45-c739-4cf0-a2f1-83f2c08160e7'" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_FP_TMP_SILKTORRENT_PACKET="$S_FP_TMP_0/silktorrent_packet" - local S_FP_TMP_SILKTORRENT_PACKET_TAR="$S_FP_TMP_0/silktorrent_packet.tar" - local S_FP_TMP_PAYLOAD="$S_FP_TMP_SILKTORRENT_PACKET/payload" - local S_FP_TMP_HEADER="$S_FP_TMP_SILKTORRENT_PACKET/header" - local S_FP_TMP_HEADER_SALT_TXT="$S_FP_TMP_HEADER/silktorrent_salt.txt" - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_PAYLOAD" # uses mkdir -p - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_HEADER" - #-------- - # Salting makes sure that it is not possible to - # conclude the payload bitstream from the - # Silktorrent packet (file) name, forcing censoring - # parties to download packages - # that they are not looking for and allowing - # censorship dodgers to publish the same payload bitstream - # in multiple, differet, Silktorrent packages. - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - #-------- - # The file size/Silktorrent pakcket size must also be salted. - ruby -e \ - "Random.new_seed;i=0;\ - puts '';\ - rand(10**6).times{\ - i=i+1;\ - print(rand(10**6).to_s(16));\ - if((i%10)==0) then \ - puts '';\ - i=0;\ - end;\ - }" \ - >> $S_FP_TMP_HEADER_SALT_TXT - #-------- - cp -f $S_FP_0 $S_FP_TMP_PAYLOAD/ - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " cp -f \$S_FP_0 \$S_FP_TMP_PAYLOAD/ " - echo "" - echo "failed. Either this script is flawed or something else went wrong. " - echo "" - echo " S_FP_0==$S_FP_0" - echo "" - echo " S_FP_TMP_PAYLOAD=$S_FP_TMP_PAYLOAD" - echo "" - echo "GUID=='82573133-665f-4630-93f1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_FP_TMP_ORIG_0="`pwd`" - cd $S_FP_TMP_SILKTORRENT_PACKET/.. - tar -cf $S_FP_TMP_SILKTORRENT_PACKET_TAR ./`basename $S_FP_TMP_SILKTORRENT_PACKET` 2>/dev/null - cd $S_FP_TMP_ORIG_0 - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " tar -cf \$S_FP_TMP_SILKTORRENT_PACKET_TAR \$S_FP_TMP_SILKTORRENT_PACKET " - echo "" - echo "failed. Either this script is flawed or something else went wrong. " - echo "" - echo " S_FP_TMP_SILKTORRENT_PACKET=$S_FP_TMP_SILKTORRENT_PACKET" - echo "" - echo " S_FP_TMP_SILKTORRENT_PACKET_TAR==$S_FP_TMP_SILKTORRENT_PACKET_TAR" - echo "" - echo "GUID=='36819d11-7f01-4740-a4f1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_TMP_SILKTORRENT_PACKET_TAR" - local S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME="$S_FP_ORIG/$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - mv $S_FP_TMP_SILKTORRENT_PACKET_TAR $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME 2>/dev/null - if [ "$?" != "0" ]; then - echo "" - echo "Something went wrong." - echo "The renaming and copying of " - echo " $S_FP_TMP_SILKTORRENT_PACKET_TAR " - echo "to " - echo " $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME " - echo "failed." - echo "GUID=='db65c191-4ba3-4672-b3f1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ ! -e "$S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME" ]; then - echo "" - echo "Something went wrong." - echo "The renaming and copying of " - echo "" - echo " $S_FP_TMP_SILKTORRENT_PACKET_TAR " - echo "" - echo "to " - echo "" - echo " $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME " - echo "" - echo "failed. The mv command succeed, but for some reason " - echo "the destination file does not exist." - echo "GUID=='83fae955-7e6b-4a80-85f1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - func_mmmv_delete_tmp_folder_t1 "$S_FP_TMP_0" - if [ -e "$S_FP_TMP_0" ]; then - echo "" - echo "Something went wrong." - echo "The deletion of the temporary folder, " - echo "" - echo " $S_FP_TMP_0" - echo "" - echo "failed." - echo "GUID=='2dd1f121-5407-48a0-b2f1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_silktorrent_packager_t1_bash_wrap_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_unwrap_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_FP_0" - local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT" - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" != "verification_passed" ]; then - echo "" - echo "The Silktorrent packet candidate, " - echo "" - echo " $S_FP_0" - echo "" - echo "failed Silktorrent packet name verification." - echo "There exists a possibility that the " - echo "Silktorrent packet candidate is actually OK, but " - echo "this is an older version of the Silktorrent implementaiton and " - echo "this, the older, version does not support " - echo "newer Silktorrent packet formats. " - echo "GUID=='859bd022-e09e-4d45-94e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="f" - if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then - SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="t" - #---- - local S_FP_TMP_SILKTORRENT_PACKET="`pwd`/silktorrent_packet" - if [ -e $S_FP_TMP_SILKTORRENT_PACKET ]; then - echo "" - echo "To avoid accidental deletion of files, " - echo "and some other types of flaws, " - echo "there is a requirement that the folder " - echo "" - echo " ./silktorrent_packet" - echo "" - echo "must be explicitly deleted before calling this script." - echo "GUID=='c2967e69-c2b9-4774-91e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - tar -xf $S_FP_0 2>/dev/null - if [ "$?" != "0" ]; then - echo "" - echo "Something went wrong. The command " - echo "" - echo " tar -xf $S_FP_0" - echo "" - echo "exited with an error code, which is $? ." - echo "GUID=='aef74f24-a969-470f-85e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - rm -f $S_FP_TMP_SILKTORRENT_PACKET/header/silktorrent_salt.txt - #---- - if [ ! -e $S_FP_TMP_SILKTORRENT_PACKET ]; then - echo "" - echo "Something went wrong. " - echo "The unpacking of the Silktorrent packet with the path of " - echo "" - echo " $S_FP_0" - echo "" - echo "failed. The folder \"silktorrent_packet\" " - echo "is missing after the \"tar\" exited without any errors." - echo "GUID=='b6ee795a-4468-480f-a2e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi # silktorrent_packet_format_version_1 - #-------- - if [ "$SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION" != "t" ]; then - echo "" - echo "This script is flawed." - echo "There is at least one branch missing from this function." - echo "GUID=='d0662736-c1b5-4902-a1e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- -} # func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 - - -#-------------------------------------------------------------------------- - -# The -S_SILKTORRENT_PACKAGER_T1_ACTION="" # is global to allow it to be used -# in the error messages of different functions. - -func_mmmv_silktorrent_packager_t1_bash_determine_action() { - local S_ARGV_0="$1" # Ruby style ARGV, 0 is the first command line argument. - local S_ARGV_1="$2" - local S_ARGV_2="$3" - local S_ARGV_3="$4" - #-------- - if [ "$S_ARGV_0" == "" ]; then - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 1 # exit with an error - fi - #---- - local SB_0="f" - if [ "$S_ARGV_0" == "help" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "--help" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-?" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-h" ]; then - SB_0="t" - fi - #---- - if [ "$SB_0" == "t" ]; then - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------------------------- - # Start of actions that require the existance of at least one file. - local S_TMP_0="" - local S_TMP_1="" - #---- - S_TMP_0="wrap" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - if [ "$S_ARGV_0" == "pack" ]; then # alias - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - #---- - S_TMP_0="unwrap" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - if [ "$S_ARGV_0" == "unpack" ]; then # alias - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - #---- - S_TMP_0="verify" # checks the matche between the blob and the file name - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - #---- - S_TMP_0="test_hash_t1" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - fi - #-------- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "" ]; then - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 1 # exit with an error - fi - # The action name test above has to be before the - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_ARGV_1" - # because otherwise the texts of the - # error messages are incorrect. Indeed, it does - # introduce the following duplicating series of if-clauses, - # but it's all in the name of producing helpful error - # messages at different situations. - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "wrap" ]; then - func_mmmv_silktorrent_packager_t1_bash_wrap_t1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "unwrap" ]; then - func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify" ]; then - func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_ARGV_1" - echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "test_hash_t1" ]; then - func_mmmv_silktorrent_packager_t1_bash_test_1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------------------------- - echo "" - echo "This bash script is flawed. The control flow " - echo "should have never reached this line." - echo "GUID=='87e4c185-e25f-4047-a8e1-83f2c08160e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with an error -} # func_mmmv_silktorrent_packager_t1_bash_determine_action - -func_mmmv_silktorrent_packager_t1_bash_determine_action $1 $2 $3 $4 $5 $6 $7 - - -#-------------------------------------------------------------------------- - - -#-------------------------------------------------------------------------- -cd $S_FP_ORIG -exit 0 # - -#========================================================================== -# Fragments of comments and code that might find use some times later: -#-------------------------------------------------------------------------- -# -# max 55 characters --- package suggested deprecation date in nanoseconds -# relative to the Unix Epoch, -# written in base 10. It can be negative. -# rgx_in_ruby=/t((y[-]?[\d]+)|n)[_]/ -# echo "v0034_s2342_tn_" | gawk '{ gsub(/_/, "_\n"); print }' | \ -# gawk '/^t(y[-]?[0-9]+|n)_/ {printf "%s",$1 }' | -# gawk '{gsub(/[tyn_]/,"");printf "%s", $1 }' -# -# - - -#========================================================================== - DELETED milestone_releases/silktorrent_packager_t1_2016_07_16.bash Index: milestone_releases/silktorrent_packager_t1_2016_07_16.bash ================================================================== --- milestone_releases/silktorrent_packager_t1_2016_07_16.bash +++ milestone_releases/silktorrent_packager_t1_2016_07_16.bash @@ -1,2496 +0,0 @@ -#!/usr/bin/env bash -#========================================================================== -# -# Copyright 2016, martin.vahi@softf1.com that has an -# Estonian personal identification code of 38108050020. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of the Martin Vahi nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -#========================================================================== -S_FP_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -S_FP_ORIG="`pwd`" -S_TIMESTAMP="`date +%Y`_`date +%m`_`date +%d`_T_`date +%H`h_`date +%M`min_`date +%S`s" - -#-------------------------------------------------------------------------- -# Settings: -S_SCRIPT_VERSION="2016_07_16_a" -#-------------------------------------------------------------------------- - -SB_TMP_FOLDER_EXISTS="f" # to omit one useless and slow file system access -S_FP_TMP_FOLDER="" - - -func_mmmv_silktorrent_packager_t1_exit_without_any_errors() { - local S_0="" - local S_1="" - if [ "$SB_TMP_FOLDER_EXISTS" == "t" ]; then - S_0= - fi - exit 0 # exit without an error -} # func_mmmv_silktorrent_packager_t1_exit_without_any_errors - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="" -func_mmmv_operating_system_type_t1() { - if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" == "" ]; then - S_TMP_0="`uname -a | grep -E [Ll]inux`" - if [ "$S_TMP_0" != "" ]; then - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="Linux" - else - S_TMP_0="`uname -a | grep BSD `" - if [ "$S_TMP_0" != "" ]; then - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="BSD" - else - S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT="undetermined" - fi - fi - fi -} # func_mmmv_operating_system_type_t1 - -#-------------------------------------------------------------------------- - -func_mmmv_operating_system_type_t1 -if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "Linux" ]; then - if [ "$S_FUNC_MMMV_OPERATING_SYSTEM_TYPE_T1_RESULT" != "BSD" ]; then - echo "" - echo " The classical command line utilities at " - echo " different operating systems, for example, Linux and BSD," - echo " differ. This script is designed to run only on " - echo " Linux and some BSD variants." - echo " If You are willing to risk that some of Your data " - echo " is deleted and/or Your operating system instance" - echo " becomes permanently flawed, to the point that " - echo " it will not even boot, then You may edit the Bash script that " - echo " displays this error message by modifying the test that " - echo " checks for the operating system type." - echo "" - echo " If You do decide to edit this Bash script, then " - echo " a recommendation is to test Your modifications " - echo " within a virtual machine or, if virtual machines are not" - echo " an option, as some new operating system user that does not have " - echo " any access to the vital data/files." - echo " GUID=='33d63375-7582-49dd-aa88-71b3900170e7'" - echo "" - echo " Aborting script without doing anything." - echo "" - exit 1 # exit with error - fi -fi - - -#-------------------------------------------------------------------------- - -SB_EXISTS_ON_PATH_T1_RESULT="f" -func_sb_exists_on_path_t1 () { - local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument - #-------- - # Function calls like - # - # func_sb_exists_on_path_t1 "" - # func_sb_exists_on_path_t1 " " - # func_sb_exists_on_path_t1 "ls ps" # contains a space - # - # are not allowed. - if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_sb_exists_on_path_t1 " - echo "" - echo "is not designed to handle an argument that " - echo "equals with an empty string." - echo "GUID=='39128b22-8ba8-4037-bb88-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_sb_exists_on_path_t1 " - echo "" - echo "is not designed to handle an argument value that contains " - echo "spaces or tabulation characters." - echo "The received value in parenthesis:($S_NAME_OF_THE_EXECUTABLE_1)." - echo "GUID=='47c83d31-51ea-4119-ae88-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`" - local S_TMP_1="" - local S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" - else - SB_EXISTS_ON_PATH_T1_RESULT="t" - fi -} # func_sb_exists_on_path_t1 - - - -func_assert_exists_on_path_t2 () { - local S_NAME_OF_THE_EXECUTABLE_1="$1" # first function argument - local S_NAME_OF_THE_EXECUTABLE_2="$2" # optional argument - local S_NAME_OF_THE_EXECUTABLE_3="$3" # optional argument - local S_NAME_OF_THE_EXECUTABLE_4="$4" # optional argument - #-------- - # Function calls like - # - # func_assert_exists_on_path_t2 "" "" "ls" - # func_assert_exists_on_path_t2 "ls" "" "ps" - # - # are not allowed by the spec of this function, but it's OK to call - # - # func_assert_exists_on_path_t2 "ls" "" - # func_assert_exists_on_path_t2 "ls" "ps" "" - # func_assert_exists_on_path_t2 "ls" "" "" "" - # - # - local SB_THROW="f" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" == "" ] ; then - SB_THROW="t" - else - if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "" ] ; then - SB_THROW="t" - fi - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then - SB_THROW="t" - fi - else - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "" ] ; then - SB_THROW="t" - fi - fi - fi - fi - #---- - if [ "$SB_THROW" == "t" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_assert_exists_on_path_t2 " - echo "" - echo "is not designed to handle series of arguments, where " - echo "empty strings preced non-empty strings." - echo "GUID=='1ae7a9bd-e472-4344-8188-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ "$5" != "" ] ; then - echo "" - echo "This Bash function is designed to work with at most 4 input arguments" - echo "GUID=='05af1c56-ee4e-485e-8388-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # Function calls like - # - # func_assert_exists_on_path_t2 " " - # func_assert_exists_on_path_t2 "ls ps" # contains a space - # - # are not allowed. - SB_THROW="f" - local S_TMP_0="" - local S_TMP_1="" - local S_TMP_2="" - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_1\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_1" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_1" - S_TMP_2="GUID=='eb3a821d-b300-4128-8588-71b3900170e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_2\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_2" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_2" - S_TMP_2="GUID=='071590a7-41d2-467f-8888-71b3900170e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_3\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_3" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_3" - S_TMP_2="GUID=='1beff945-939d-48f9-a178-71b3900170e7'" - fi - fi - #---- - if [ "$SB_THROW" == "f" ] ; then - S_TMP_0="`printf \"$S_NAME_OF_THE_EXECUTABLE_4\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_EXECUTABLE_4" != "$S_TMP_0" ] ; then - SB_THROW="t" - S_TMP_1="$S_NAME_OF_THE_EXECUTABLE_4" - S_TMP_2="GUID=='9bf9ca59-4c78-4fb6-8378-71b3900170e7'" - fi - fi - #-------- - if [ "$SB_THROW" == "t" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " func_assert_exists_on_path_t2 " - echo "" - echo "is not designed to handle an argument value that contains " - echo "spaces or tabulation characters." - echo "The unaccepted value in parenthesis:($S_TMP_1)." - echo "Branch $S_TMP_2." - echo "GUID=='24b11e55-b4ea-419c-8578-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - SB_THROW="f" # Just a reset, should I forget to reset it later. - #--------------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_1 2>/dev/null\`" - local S_TMP_1="" - local S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_2" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires the \"$S_NAME_OF_THE_EXECUTABLE_1\" to be on the PATH." - echo "GUID=='62b54420-f8c0-4d4b-b278-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_2 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_3" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" is available on the PATH." - echo "GUID=='aa80d32e-c312-40b0-8478-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_3 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - if [ "$S_NAME_OF_THE_EXECUTABLE_4" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" " - echo "is available on the PATH." - echo "GUID=='3ae0cfcc-0a10-45c5-8168-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - else - return # at least one of the programs was available at the PATH - fi - #-------- - S_TMP_0="\`which $S_NAME_OF_THE_EXECUTABLE_4 2>/dev/null\`" - S_TMP_1="" - S_TMP_2="S_TMP_1=$S_TMP_0" - eval ${S_TMP_2} - #---- - if [ "$S_TMP_1" == "" ] ; then - echo "" - echo "This bash script requires that either \"$S_NAME_OF_THE_EXECUTABLE_1\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_2\" or \"$S_NAME_OF_THE_EXECUTABLE_3\" or " - echo " \"$S_NAME_OF_THE_EXECUTABLE_4\" is available on the PATH." - echo "GUID=='64dba5fe-7564-4666-a468-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - else - return # at least one of the programs was available at the PATH - fi - #-------- -} # func_assert_exists_on_path_t2 - -func_assert_exists_on_path_t2 "bash" # this is a bash script, but it does not hurt -func_assert_exists_on_path_t2 "basename" # for extracting file names from full paths -func_assert_exists_on_path_t2 "cat" # opposite to split -func_assert_exists_on_path_t2 "sha256sum" "sha256" "rhash" -func_assert_exists_on_path_t2 "tigerdeep" "rhash" -func_assert_exists_on_path_t2 "whirlpooldeep" "rhash" -func_assert_exists_on_path_t2 "tar" -#-------- -func_assert_exists_on_path_t2 "file" # for checking the MIME type of the potential tar file -func_assert_exists_on_path_t2 "filesize" "ruby" -func_assert_exists_on_path_t2 "gawk" -#func_assert_exists_on_path_t2 "grep" -#func_assert_exists_on_path_t2 "readlink" -func_assert_exists_on_path_t2 "ruby" # anything over/equal v.2.1 will probably do -#func_assert_exists_on_path_t2 "split" # for cutting files -#func_assert_exists_on_path_t2 "test" -func_assert_exists_on_path_t2 "uname" # to check the OS type -func_assert_exists_on_path_t2 "uuidgen" "uuid" # GUID generation on Linux and BSD -#func_assert_exists_on_path_t2 "xargs" -func_assert_exists_on_path_t2 "wc" # for checking hash lengths - - -#-------------------------------------------------------------------------- - -func_mmmv_exc_hash_function_input_verification_t1() { - local S_NAME_OF_THE_BASH_FUNCTION="$1" # The name of the Bash function. - local S_FP_2_AN_EXISTING_FILE="$2" # The first argument of the Bash function. - #-------- - if [ "$S_NAME_OF_THE_BASH_FUNCTION" == "" ] ; then - echo "" - echo "The implementation of the function that " - echo "calls the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "is flawed. The call to the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "misses the first argument or the first argument is an empty string." - echo "GUID=='b91da738-c651-4c2a-8b68-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`printf \"$S_NAME_OF_THE_BASH_FUNCTION\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_NAME_OF_THE_BASH_FUNCTION" != "$S_TMP_0" ] ; then - echo "" - echo "The implementation of the function that " - echo "calls the " - echo "" - echo " func_mmmv_exc_hash_function_input_verification_t1" - echo "" - echo "is flawed. Function names are not allowed to contain spaces or tabs." - echo "GUID=='405b2523-bd54-463b-9368-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # Function calls like - # - # "" - # " " - # - # are not allowed. - local S_TMP_0="`printf \"$S_FP_2_AN_EXISTING_FILE\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - if [ "$S_TMP_0" == "" ] ; then - echo "" - echo "The Bash function " - echo "" - echo " $S_NAME_OF_THE_BASH_FUNCTION" - echo "" - echo "is not designed to handle an argument that " - echo "equals with an empty string or a series of spaces and tabs." - echo "GUID=='7118e122-ef7a-43e6-af68-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ ! -e $S_FP_2_AN_EXISTING_FILE ] ; then - echo "" - echo "The file " - echo "" - echo " $S_FP_2_AN_EXISTING_FILE " - echo "" - echo "is missing or it is a broken link." - echo "GUID=='1c0b3101-7922-42b3-ac68-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ -d $S_FP_2_AN_EXISTING_FILE ] ; then - echo "" - echo "The file path " - echo "" - echo " $S_FP_2_AN_EXISTING_FILE " - echo "" - echo "references a folder, but a file is expected." - echo "GUID=='04596259-93f4-45f3-8368-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- - # At this line the verifications have all passed. - #-------------------- -} # func_mmmv_exc_hash_function_input_verification_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_GUID_T1_RESULT="not_yet_set" -S_FUNC_MMMV_GUID_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_GUID_t1() { - # Does not take any arguments. - #-------- - #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="uuidgen" # Linux version - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="uuid" # BSD version - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_GUID_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "" ] ; then - echo "" - echo "All of the GUID generation implementations that this script " - echo "is capable of using (uuidgen, uuid) " - echo "are missing from the PATH." - echo "GUID=='25286e58-fb76-41f5-8568-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='31132449-5de3-431f-a258-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_GUID_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuidgen" ]; then - S_TMP_0="`uuidgen`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"uuidgen\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`uuidgen`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='2d8df7d1-9ef0-4531-b558-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0" - fi - #-------------------- - if [ "$S_FUNC_MMMV_GUID_T1_MODE" == "uuid" ]; then - S_TMP_0="`uuid`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"uuid\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`uuid`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='7616c855-15e3-4331-a158-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - S_FUNC_MMMV_GUID_T1_RESULT="$S_TMP_0" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_GUID_T1_RESULT\" | wc -m `" - S_TMP_1="36" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the GUID specification, IETF RFC 4122, " - echo "the lenght of the GUID is " - echo "$S_TMP_1 characters, but the result of the " - echo "" - echo " func_mmmv_GUID_t1" - echo "" - echo "is something else. The flawed GUID candidate in parenthesis:" - echo "($S_FUNC_MMMV_GUID_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed GUID candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='7a226a41-91ce-4ab9-a258-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_GUID_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SHA256_T1_RESULT="not_yet_set" -S_FUNC_MMMV_SHA256_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_sha256_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_sha256_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="sha256sum" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="sha256" # usually available on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SHA256_T1_MODE="$S_TMP_0" - fi - fi - # The console application "rhash" is preferred to the "sha256" - # because the "rhash" output can be simply processed with - # "gawk", which takes over 5x less memory than the Ruby interpreter, - # not to mention the initialization cost of the Ruby interpreter. - #-------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "" ] ; then - echo "" - echo "All of the SHA-256 implementations that this script " - echo "is capable of using (sha256sum, rhash, sha256) " - echo "are missing from the PATH." - echo "GUID=='4aef5146-0d53-414e-b258-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='852b0558-3ebd-4de9-a158-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_SHA256_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256sum" ]; then - S_TMP_0="`sha256sum $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"sha256sum\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`sha256sum $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='611e5732-c1cc-480a-a458-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - # The gawk is used for selecting the 1. column because - # according to the - # - # echo "aa bb" | time -v gawk '{printf $1}' - # - # the gawk takes about 3MiB, which is far less than the - # - # time -v ruby -e "puts 'hi'" - # - # indicated 16MiB - # - S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --sha256 $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --sha256 $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='f377bf45-4ea1-4fe6-9148-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SHA256_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_SHA256_T1_MODE" == "sha256" ]; then - #---- - S_FUNC_MMMV_SHA256_T1_RESULT=\ - "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\" 2>/dev/null`" - #---- - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"sha256\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo \ - "`S_TMP_0=\"\`sha256 $S_FP_2_AN_EXISTING_FILE\`\" ruby -e \"s0=ENV['S_TMP_0'].to_s;ix_0=s0.index(') = ');print s0[(ix_0+4)..(-1)]\"`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='22691ef3-f14b-4f46-bb48-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_SHA256_T1_RESULT\" | wc -m `" - S_TMP_1="64" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the SHA-256 hash algorithm" - echo "the lenght of the SHA-256 hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_sha256_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_SHA256_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='3e6b48bd-8a81-4f15-b148-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_sha256_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_TIGERHASH_T1_RESULT="not_yet_set" -S_FUNC_MMMV_TIGERHASH_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_tigerhash_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_tigerhash_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="tigerdeep" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_TIGERHASH_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "" ] ; then - echo "" - echo "All of the Tiger hash implementations that this script " - echo "is capable of using (tigerdeep, rhash) " - echo "are missing from the PATH." - echo "GUID=='2bed8ba2-1f17-43d0-8b48-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='401fae19-71e9-4c52-b148-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_TIGERHASH_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "tigerdeep" ]; then - S_TMP_0="`tigerdeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"tigerdeep\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`tigerdeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='2bd1ed5f-5735-45d7-8248-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_TIGERHASH_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --tiger $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --tiger $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='51e5a1c5-292f-4bf1-8948-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_TIGERHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_TIGERHASH_T1_RESULT\" | wc -m `" - S_TMP_1="48" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the Tiger hash algorithm" - echo "the lenght of the Tiger hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_tigerhash_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_TIGERHASH_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='30fcf82d-5cb9-4c96-9148-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_tigerhash_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="not_yet_set" -S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_whirlpoolhash_t1() { # requires also ruby and gawk - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_whirlpoolhash_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="whirlpooldeep" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="rhash" # part of the BSD package collection in 2016 - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "" ] ; then - echo "" - echo "All of the Whirlpool hash implementations that this script " - echo "is capable of using (whirlpooldeep, rhash) " - echo "are missing from the PATH." - echo "GUID=='2a608859-8310-44b4-8338-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='48097a1c-5e76-4dcc-b538-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "whirlpooldeep" ]; then - S_TMP_0="`whirlpooldeep $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"whirlpooldeep\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`whirlpooldeep $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='46922d93-033d-44be-a438-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_WHIRLPOOLHASH_T1_MODE" == "rhash" ]; then - S_TMP_0="`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"rhash\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`rhash --whirlpool $S_FP_2_AN_EXISTING_FILE `" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='22eb6a73-6762-4aa1-9538-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT\" | wc -m `" - S_TMP_1="128" - if [ "$S_TMP_0" != "$S_TMP_1" ]; then - echo "" - echo "According to the specification of the Whirlpool hash algorithm" - echo "the lenght of the Tiger hash is " - echo "$S_TMP_1 hexadecimal characters, but the result of the " - echo "" - echo " func_mmmv_whirlpoolhash_t1" - echo "" - echo "is something else. The flawed hash candidate in parenthesis:" - echo "($S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT)" - echo "" - echo "The lenght candidate of the flawed hash candidate in parenthesis:" - echo "($S_TMP_0)." - echo "" - echo "GUID=='712dc4a3-3fc9-40ca-9338-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_whirlpoolhash_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_FILESIZE_T1_RESULT="not_yet_set" -S_FUNC_MMMV_FILESIZE_T1_MODE="" # optim. to skip repeating console tool selection -func_mmmv_filesize_t1() { - local S_FP_2_AN_EXISTING_FILE="$1" # first function argument - #-------- - func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_filesize_t1" "$1" - #-------------------- - # Mode selection: - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="filesize" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="ruby" # helps on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_FILESIZE_T1_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "" ] ; then - echo "" - echo "All of the applications that this function is " - echo "capable of using for finding out file size (filesize, ruby)" - echo "are missing from the PATH." - echo "GUID=='3c1c971a-a8b6-4c5f-a238-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='a54cc438-f608-4e38-b138-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - S_FUNC_MMMV_FILESIZE_T1_RESULT="" - #-------------------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "filesize" ]; then - S_TMP_0="`filesize $S_FP_2_AN_EXISTING_FILE 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"filesize\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`filesize $S_FP_2_AN_EXISTING_FILE`" # stdout and stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='556a2e84-9d18-4e09-a338-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_FILESIZE_T1_RESULT="`echo \"$S_TMP_0\" | gawk '{printf $1}'`" - fi - #-------------------- - if [ "$S_FUNC_MMMV_FILESIZE_T1_MODE" == "ruby" ]; then - S_TMP_0="`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\" 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"ruby\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`ruby -e \"printf(File.size('$S_FP_2_AN_EXISTING_FILE').to_s)\"`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='855f9c25-6bb5-4f85-9428-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_FILESIZE_T1_RESULT="$S_TMP_0" - fi - #-------------------- - S_TMP_0="`printf \"$S_FUNC_MMMV_FILESIZE_T1_RESULT\" | gawk '{gsub(/\s/,"");printf "%s", $1 }'`" - local SB_THROW="f" - if [ "$S_TMP_0" != "$S_FUNC_MMMV_FILESIZE_T1_RESULT" ]; then - SB_THROW="t" - else - if [ "$S_FUNC_MMMV_FILESIZE_T1_RESULT" == "" ]; then - SB_THROW="t" - fi - fi - #---- - if [ "$SB_THROW" == "t" ]; then - echo "" - echo "The result of the " - echo "" - echo " func_mmmv_filesize_t1" - echo "" - echo "for " - echo "" - echo "($S_FUNC_MMMV_FILESIZE_T1_RESULT)" - echo "" - echo "either contain spaces, tabs or is an empty string," - echo "which is wrong, because even a file with the size of 0 " - echo "should have a file size of \"0\", which is not an empty string." - echo "GUID=='1b8bc205-8c7e-40a4-a528-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- -} # func_mmmv_filesize_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1() { - echo "" - echo "Command line format: " - echo "" - echo " ARGLIST " - echo "" - echo " ARGLIST :== help | WRAP | UNWRAP | RUN_SELFTEST | VERIFY |" - echo " VERIFY_PACKET_NAME_FORMAT_V1 | version " - echo "" - echo " WRAP :== wrap " - echo " UNWRAP :== unwrap " - echo " RUN_SELFTEST :== test_hash_t1 " - echo " VERIFY :== verify " - echo "" - echo " VERIFY_PACKET_NAME_FORMAT_V1 :== verify_packet_name_format_v1 XX" - echo "" - echo "" - echo "If this API is used correctly and there are no other " - echo "reasons for the failure of this script, then " - echo "all of the verification commands exit with error code 0 " - echo "regardless of whether the verification fails or passes." - echo "All verification commands return a string that " - echo "belongs to the set {\"verification_passed\", " - echo " \"verification_failed\"}." - echo "" - echo "" - echo "" -} # func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1() { - local S_FP_0="$1" # Path to the file. - #-------- - if [ "$S_FP_0" == "" ]; then - echo "" - echo "The 2. console argument is expected to be " - echo "a path to a file, but currently " - echo "the 2. console argument is missing." - echo "GUID=='1eee6d46-d91c-4bfb-a228-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ ! -e "$S_FP_0" ]; then - if [ -h "$S_FP_0" ]; then - echo "" - echo "The file path " - echo "" - echo " $S_FP_0" - echo "" - echo "is a path of a broken symlink, but symlinks " - echo "are not supported at all." - echo "The reason, why symlinks to files are not supported is that " - echo "the file size of symlinks can differ from " - echo "the file size of the target of the symlink." - echo "GUID=='4c68cb15-2c2b-49fd-9218-71b3900170e7'" - echo "" - else - echo "" - echo "The file with the path of " - echo "" - echo " $S_FP_0" - echo "" - echo "does not exist." - echo "GUID=='428ff042-efd8-4566-a318-71b3900170e7'" - echo "" - fi - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ -d "$S_FP_0" ]; then - if [ -h "$S_FP_0" ]; then - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a symlink that references folder, but " - echo "a file is expected." - echo "GUID=='b2d2a237-9fcb-46fe-8318-71b3900170e7'" - echo "" - else - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a folder, but it is expected to " - echo "to reference a file." - echo "GUID=='1dd79224-6a1e-44fd-b118-71b3900170e7'" - echo "" - fi - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ -h "$S_FP_0" ]; then - echo "" - echo "The path " - echo "" - echo " $S_FP_0" - echo "" - echo "references a symlink, a file is expected." - echo "The reason, why symlinks to files are not supported is that " - echo "the file size of symlinks can differ from " - echo "the file size of the target of the symlink." - echo "GUID=='7afe9e27-cee1-4ad1-b218-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1() { - local S_FP_0="$1" # Path to the file. - #-------- - if [ "$S_FP_0" == "" ]; then - echo "" - echo "The 2. console argument is expected to be " - echo "a Silktorrent packet name candidate, but currently " - echo "the 2. console argument is missing." - echo "GUID=='227d93c4-61a6-42b7-b118-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="for input and output" -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="" # optim. hack -func_mmmv_silktorrent_packager_t1_bash_reverse_string() { - local S_IN="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER" - #-------------------- - local S_TMP_0="not set" - # Mode selection: - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then - SB_EXISTS_ON_PATH_T1_RESULT="f" # if-block init - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="gawk" # usually available on Linux - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0" - fi - fi - #---- - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "f" ] ; then - S_TMP_0="ruby" # helps on BSD - func_sb_exists_on_path_t1 "$S_TMP_0" - if [ "$SB_EXISTS_ON_PATH_T1_RESULT" == "t" ] ; then - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE="$S_TMP_0" - fi - fi - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "" ] ; then - echo "" - echo "All of the applications that this function is " - echo "capable of using for finding out file size (gawk, ruby)" - echo "are missing from the PATH." - echo "GUID=='b55b1414-6247-47f6-9118-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - if [ "$?" != "0" ]; then - echo "" - echo "This script is flawed." - echo "GUID=='109b82e1-8efb-49a4-b408-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - fi - #-------------------- - #-------------------- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="" - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "gawk" ]; then - # The awk code example originates from - # http://www.linuxandlife.com/2013/06/how-to-reverse-string.html - # archival copy: https://archive.is/Cx0xF - #---- - S_TMP_0="`printf "$S_IN" | \ - awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf x}'`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"gawk\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`printf "$S_IN" | awk '{ for(i=length;i!=0;i--)x=x substr($0,i,1);}END{printf x}'`" - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='95dcc43d-90b7-4bfd-8408-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0" - fi - #-------- - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_MODE" == "ruby" ]; then - #---- - S_TMP_0="`ruby -e \"puts(ARGV[0].to_s.reverse)\" "$S_IN" 2>/dev/null`" - if [ "$?" != "0" ]; then - echo "" - echo "The console application \"ruby\" " - echo "exited with an error." - echo "" - echo "----console--outut--citation--start-----" - echo "`ruby -e \"puts('$S_IN'.reverse)\"`" # with the stderr - echo "----console--outut--citation--end-------" - echo "" - echo "GUID=='59c56443-ab6c-4899-9408-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_TMP_0" - fi - #-------------------- -} # func_mmmv_silktorrent_packager_t1_bash_reverse_string - - -#-------------------------------------------------------------------------- - -# As of 2016 the maximum file name length on Linux is 255 characters. -# At -# -# http://unix.stackexchange.com/questions/32795/what-is-the-maximum-allowed-filename-and-folder-size-with-ecryptfs -# -# the eCryptfs related recommendation is to keep the lengths -# of file names to less than 140 characters. -# -# A citation from -# http://windows.microsoft.com/en-us/windows/file-names-extensions-faq#1TC=windows-7 -# archieval copy: https://archive.is/UKBmd -# "Windows limits a single path to 260 characters." -# -# A citation from CygWin mailing list: -# https://cygwin.com/ml/cygwin/2004-10/msg01323.html -# archival copy: https://archive.is/GRvFK -# "The Unicode versions of several functions permit a -# maximum path length of 32,767 characters, -# composed of components up to 255 characters in length. -# To specify such a path, use the "\\?\" prefix. For example, -# "\\?\D:\". To specify such a UNC path, use the "\\?\UNC\" -# prefix. For example, "\\?\UNC\\". -# Note that these prefixes are not used as part of the path -# itself. They indicate that the path should be passed to the -# system with minimal modification. An implication of this is -# that you cannot use forward slashes to represent path separators -# or a period to represent the current directory." -# Related pages: -# https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx -# archival copy: https://archive.is/p891y -# -# To allow database indexes that store the -# file names of the blogs -# to work as efficiently as possible, the first -# characters of the file name should be as -# uniformly random set of characters as possible. -# If file name starts with a secure hash, then -# that requirement is met. -# -# The parser that dismantles the file name to relevant components -# should be implementable in different programming languages -# without investing considerable amount of development time. -# The syntax of the file name should also allow the -# file name to be parsed computationally cheaply. -# -# As of 2016_05 the file extension .stblob seems to be unused. -# Therefore the "silktorrent blob", .stblob, can be used for the -# extension of the blob files. -# -# Compression of the blobs IS NOT ALLOWED, because the -# blobs must be extractable without becoming a victim -# of an attack, where 100GiB of zeros is packed to a -# small file. The container format is the tar format, -# without any compression. -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - # The Tiger hash has 48 characters. - # The Whirlpool hash has 128 characters. - # The SHA-256 hash has 64 characters. - # - # A file size of 1TiB is ~10^12 ~ 13 characters - # A file size of 1PiB is ~10^15 ~ 14 characters - # A file size of 1EiB is ~10^18 ~ 19 characters - # A file size of 1ZiB is ~10^21 ~ 22 characters - # A file size of 1YiB is ~10^24 ~ 25 characters - # - # The max. file name length on Linux and - # Windows (Unicode API) is 255 characters. - #---- - # The character budget: - # 6 characters --- file name format type ID - # rgx_in_ruby=/v[\d]{4}[_]/ - # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \ - # gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[v_]/,"");printf "%s", $1 }' - # - # max 32 characters --- file size - # rgx_in_ruby=/s[\d]+[_]/ - # echo "v0034_" | gawk '/^v[0-9]{4}_/ {printf "%s",$1 }' - # echo "v0034_s2342_" | gawk '{ gsub(/_/, "_\n"); print }' | \ - # gawk '/^s[0-9]+_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[s_]/,"");printf "%s", $1 }' - # - # - # 66 characters --- SHA-256 - # rgx_in_ruby=/h[\dabcdef]{64}[_]/ - # echo "h`sha256sum /dev/null | gawk '/[0-9abcdef]/ {printf "%s",$1}'`_" | \ - # gawk '/^h[0-9abcdef]+_/ {printf "%s",$1 }' | \ - # gawk '{gsub(/[h_]/,"");printf "%s", $1 }' - # - # - # 50 characters --- Tiger - # rgx_in_ruby=/i[\dabcdef]{48}$/ # lacks the ending "_" - # # for db index optimization - # The gawk code is as with the sha256, - # except that sha256sum-> tigerdeep, "^h"->"^i", - # "[h_]"->"[i_]" - # - #-------- - # As the current version of this script depends on Ruby anyway, - # the gawk regex based branches that are really - # complex and require multiple gawk calls can be left unimplemented. - # That way this script becomes more succinct. - #-------------------- - func_mmmv_tigerhash_t1 "$S_FP_0" - #echo " Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT" - #func_mmmv_whirlpoolhash_t1 "$S_FP_0" - #echo " Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT" - func_mmmv_sha256_t1 "$S_FP_0" - #echo " SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT" - func_mmmv_filesize_t1 "$S_FP_0" - #echo " file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT" - #-------- - local S_NAME_REVERSED="bolbts." # ".stblob".reverse - local S_0="v0001_s$S_FUNC_MMMV_FILESIZE_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - S_0="_h$S_FUNC_MMMV_SHA256_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - S_0="_i$S_FUNC_MMMV_TIGERHASH_T1_RESULT" - S_NAME_REVERSED="$S_NAME_REVERSED$S_0" - #---- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER="$S_NAME_REVERSED" - func_mmmv_silktorrent_packager_t1_bash_reverse_string - S_0="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_REVERSE_STRING_REGISTER" - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT="$S_0" -} # func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_delete_tmp_folder_t1(){ - local S_FP_0="$1" # folder path - #-------- - if [ ! -e "$S_FP_0" ]; then - echo "" - echo "This script is flawed. The folder " - echo " $S_FP_0" - echo "is expected to exist during the " - echo "call to this function." - echo "GUID=='aa3a281b-e603-44e0-9208-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # To avoid a situation, where due to some - # flaw the home folder or something else important - # gets accidentally recursively deleted, - # the following test transforms the path from - # /tmp/../home/blabla - # to a full path without the dots and then studies, whether - # the full path points to somehwere in the /tmp - local S_FP_1="`cd $S_FP_0; pwd`" - if [ ! -e "$S_FP_1" ]; then - echo "" - echo "This script is flawed. The folder " - echo " $S_FP_1" - echo "is missing." - echo "GUID=='f1c9d550-72d2-407d-9208-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/home `" - if [ "$S_TMP_0" != "" ]; then - echo "" - echo "This script is flawed." - echo "The temporary sandbox folder must reside in /tmp." - echo "" - echo "S_FP_0==$S_FP_0" - echo "" - echo "S_FP_1==$S_FP_1" - echo "" - echo "S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='ef812232-9359-4769-9208-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - # Just to be sure, the same thing is checked by a slightly - # different regex and using the "==" in stead of the "!=". - S_TMP_0="`echo \"$S_FP_1\" | grep -E ^/tmp/`" - if [ "$S_TMP_0" == "" ]; then - echo "" - echo "This script is flawed." - echo "The temporary sandbox folder must reside in /tmp." - echo "" - echo "S_FP_0==$S_FP_0" - echo "" - echo "S_FP_1==$S_FP_1" - echo "" - echo "S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='4604f696-2a07-4943-b508-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - rm -fr $S_FP_1 - if [ -e "$S_FP_1" ]; then - echo "" - echo "Something went wrong. The recursive deletion of the temporary folder, " - echo " $S_FP_1" - echo "failed." - echo "GUID=='5e2970b5-eda5-4371-a208-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_delete_tmp_folder_t1 - - -#-------------------------------------------------------------------------- - -# Throws, if there exists a file with the same path. -func_mmmv_create_folder_if_it_does_not_already_exist_t1(){ - local S_FP_0="$1" # folder path - #-------- - if [ "$S_FP_0" == "" ]; then - # Using gawk and alike to cover also cases, where - # $S_FP_0==" " - # is intentionally left out to avoid the overhead, but - # due to some luck the mkdir exits with an error code greater than 0, - # if it misses a path argument. - echo "" - echo "S_FP_0==\"\"" - echo "GUID=='24c43d27-d0bf-4114-b5f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------------------- - if [ -e "$S_FP_0" ]; then - if [ ! -d "$S_FP_0" ]; then - echo "" - echo "The path that is suppose to reference either " - echo "an existing folder or a non-existent folder, " - echo "references a file." - echo "GUID=='658b0135-9bb2-4a53-82f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi - #-------- - mkdir -p $S_FP_0 - if [ "$?" != "0" ]; then - echo "" - echo "mkdir for path " - echo " $S_FP_0" - echo "failed." - echo "GUID=='75439f3e-59f7-4751-b2f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - if [ ! -e "$S_FP_0" ]; then - echo "" - echo "mkdir execution succeeded, but for some other reason the folder " - echo " $S_FP_0" - echo "does not exist." - echo "GUID=='92a90266-13b1-4468-b5f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_create_folder_if_it_does_not_already_exist_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # == "" on failure - # otherwise full file path -func_mmmv_create_tmp_folder_t1(){ - # Does not take any arguments. - #-------- - #func_mmmv_exc_hash_function_input_verification_t1 "func_mmmv_GUID_t1" "$1" - #-------------------- - S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="" # value for failure - func_mmmv_GUID_t1 - if [ "$S_FUNC_MMMV_GUID_T1_RESULT" == "" ]; then - echo "" - echo "This script is flawed. GUID generation failed and " - echo "the GUID generation function did not throw despite " - echo "the fact that it should have detected its own failure." - echo "GUID=='4c3fc054-3af8-4cb4-94f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - local S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - # The following few if-clauses form a short unrolled loop. The unrolling - # is for simplicity, because it is Bash, where loops are nasty. - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - if [ -e "$S_TMP_0" ]; then - func_mmmv_GUID_t1 - S_TMP_0="/tmp/tmp_silktorrent_$S_FUNC_MMMV_GUID_T1_RESULT" - fi - #---- - if [ -e "$S_TMP_0" ]; then - echo "" - echo "This script failed to generate a locally unique path." - echo "GUID=='864ea729-ebeb-488b-82f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_TMP_0" - if [ ! -e "$S_TMP_0" ]; then - echo "" - echo "mkdir for path " - echo " $S_TMP_0" - echo "failed." - echo "GUID=='54add286-d3ba-4fc9-81f7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT="$S_TMP_0" -} # func_mmmv_create_tmp_folder_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1() { - local S_FP_0="$1" # Path to the file. - #---- - # It's not necessary for the file to actually exist, - # because this function only analyzes the file path string. - # func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - if [ "$S_FP_0" == "" ]; then - echo "" - echo "The file path candidate must not be an empty string." - echo "GUID=='636ea139-ea1a-44ec-b1e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - # The - # - # basename /tmp/foo/ - # - # returns - # - # foo - # - # That is to say, the "basename" ignores the rightmost slash. - #---- - local S_TMP_0="`ruby -e \"\ - s='noslash';\ - if(('$S_FP_0'.reverse)[0..0]=='/') then \ - s='slash_present';\ - end;\ - puts(s);\ - \"`" - if [ "$S_TMP_0" != "noslash" ]; then - echo "" - echo "The path candidate must not end with a slash." - echo "" - echo " S_FP_0==$S_FP_0" - echo "" - echo " S_TMP_0==$S_TMP_0" - echo "" - echo "GUID=='27e5ea85-56d2-40d2-93e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - basename $S_FP_0 1>/dev/null # to set a value to the $? in this scope - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " basename $S_FP_0 " - echo "" - echo "exited with an error." - echo "GUID=='72ca4146-50f7-41ee-92e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - S_TMP_0="`basename $S_FP_0`" - if [ "$S_TMP_0" == "" ]; then - echo "" - echo "The file path candidate must be a string that " - echo "is not an empty string after " - echo "all of the spaces and tabs have been removed from it." - echo "GUID=='36dee451-756e-49de-83e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="" - local S_OUT="unsupported_by_this_script_version" - #-------- - # In Ruby - # "foo.stblob"[0..(-8)]=="foo" - # "foo.stblob"[(-99)..(-1)]==nil - # - local S_TMP_1="`ruby -e \"\ - x='$S_TMP_0'[0..(-8)];\ - if(x!=nil) then\ - md=x.reverse.match(/v[\\d]+/);\ - if(md!=nil) then\ - s_0=(md[0].to_s)[1..(-1)];\ - print(s_0.sub(/^[0]+/,''));\ - end;\ - end;\ - \"`" - # echo "$S_TMP_0" - # echo "$S_TMP_1" - #---- - if [ "$S_TMP_1" != "" ]; then - S_OUT="silktorrent_packet_format_version_$S_TMP_1" - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT="$S_OUT" -} # func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 - - -#-------------------------------------------------------------------------- - -S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="not set" -func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_silktorrent_packager_t1_bash_get_packet_format_version_t1 "$S_FP_0" - local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT" - if [ "$S_PACKET_FORMAT" == "unsupported_by_this_script_version" ]; then - echo "" - echo "There exists a possibility that the " - echo "Silktorrent packet candidate is actually OK, but " - echo "this is an older version of the Silktorrent implementaiton and " - echo "the older version does not support " - echo "newer Silktorrent packet formats. " - echo "The file path of the Silktorrent packet candidate:" - echo "" - echo " $S_FP_0" - echo "" - echo "GUID=='1158d282-b615-4c4c-93e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_TMP_1="" - if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then - func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_0" - #echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - S_TMP_1="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - fi - #---- - if [ "$S_TMP_1" == "" ]; then - echo "" - echo "This script is flawed." - echo "It should have thrown before the control flow reaches this line." - echo "GUID=='3aa4bc43-bbe8-440f-a2e7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_TMP_0="`basename $S_FP_0`" # The S_TMP_0 must be evaluated - # after the various functions to - # counter a situation, where - # the S_TMP_0 is overwritten - # by the name-calc function - # or by one of the sub-functions - # of the name-calc function. - # The flaw occurs, when the - # S_TMP_0 is used within the - # name-calc function without - # declaring it to be a local - # variable. - #-------- - #echo "S_FP_0==$S_FP_0" - #echo "S_TMP_0==$S_TMP_0" - #echo "S_TMP_1==$S_TMP_1" - local S_OUT="" - if [ "$S_TMP_1" == "$S_TMP_0" ]; then - S_OUT="verification_passed" - else - S_OUT="verification_failed" - fi - S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT="$S_OUT" -} # func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_test_1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - echo "" - #---- - func_mmmv_tigerhash_t1 "$S_FP_0" - echo " Tiger: $S_FUNC_MMMV_TIGERHASH_T1_RESULT" - func_mmmv_whirlpoolhash_t1 "$S_FP_0" - echo " Whirlpool: $S_FUNC_MMMV_WHIRLPOOLHASH_T1_RESULT" - func_mmmv_sha256_t1 "$S_FP_0" - echo " SHA256: $S_FUNC_MMMV_SHA256_T1_RESULT" - func_mmmv_filesize_t1 "$S_FP_0" - echo " file size: $S_FUNC_MMMV_FILESIZE_T1_RESULT" - #---- - echo "" -} # func_mmmv_silktorrent_packager_t1_bash_test_1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_wrap_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_create_tmp_folder_t1 - if [ "$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" == "" ]; then - echo "This script is flawed, because the folder " - echo "creation function should have thrown " - echo "before the control flow reaches this branch." - echo "GUID=='726a8332-1505-4018-b2e7-71b3900170e7'" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - local S_FP_TMP_0="$S_FUNC_FUNC_MMMV_CREATE_TMP_FOLDER_T1_RESULT" - if [ ! -e "$S_FP_TMP_0" ]; then - echo "This script is flawed." - echo "May be some other thread deleted the folder or" - echo "the folder creation function returned a valid path, but" - echo "did not actually create the folder that it was supposed create." - echo "S_FP_TMP_0==$S_FP_TMP_0" - echo "GUID=='f8fc342c-18e1-40b4-a3d7-71b3900170e7'" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_FP_TMP_SILKTORRENT_PACKET="$S_FP_TMP_0/silktorrent_packet" - local S_FP_TMP_SILKTORRENT_PACKET_TAR="$S_FP_TMP_0/silktorrent_packet.tar" - local S_FP_TMP_PAYLOAD="$S_FP_TMP_SILKTORRENT_PACKET/payload" - local S_FP_TMP_HEADER="$S_FP_TMP_SILKTORRENT_PACKET/header" - local S_FP_TMP_HEADER_SALT_TXT="$S_FP_TMP_HEADER/silktorrent_salt.txt" - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_PAYLOAD" # uses mkdir -p - func_mmmv_create_folder_if_it_does_not_already_exist_t1 "$S_FP_TMP_HEADER" - #-------- - # Salting makes sure that it is not possible to - # conclude the payload bitstream from the - # Silktorrent packet (file) name, forcing censoring - # parties to download packages - # that they are not looking for and allowing - # censorship dodgers to publish the same payload bitstream - # in multiple, differet, Silktorrent packages. - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - func_mmmv_GUID_t1 - echo "$S_FUNC_MMMV_GUID_T1_RESULT" >> $S_FP_TMP_HEADER_SALT_TXT - #-------- - # The file size/Silktorrent pakcket size must also be salted. - ruby -e \ - "Random.new_seed;i=0;\ - puts '';\ - rand(10**6).times{\ - i=i+1;\ - print(rand(10**6).to_s(16));\ - if((i%10)==0) then \ - puts '';\ - i=0;\ - end;\ - }" \ - >> $S_FP_TMP_HEADER_SALT_TXT - #-------- - cp -f $S_FP_0 $S_FP_TMP_PAYLOAD/ - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " cp -f \$S_FP_0 \$S_FP_TMP_PAYLOAD/ " - echo "" - echo "failed. Either this script is flawed or something else went wrong. " - echo "" - echo " S_FP_0==$S_FP_0" - echo "" - echo " S_FP_TMP_PAYLOAD=$S_FP_TMP_PAYLOAD" - echo "" - echo "GUID=='214ba8b2-3cff-420c-a4d7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_FP_TMP_ORIG_0="`pwd`" - cd $S_FP_TMP_SILKTORRENT_PACKET/.. - tar -cf $S_FP_TMP_SILKTORRENT_PACKET_TAR ./`basename $S_FP_TMP_SILKTORRENT_PACKET` 2>/dev/null - cd $S_FP_TMP_ORIG_0 - if [ "$?" != "0" ]; then - echo "" - echo "The command " - echo "" - echo " tar -cf \$S_FP_TMP_SILKTORRENT_PACKET_TAR \$S_FP_TMP_SILKTORRENT_PACKET " - echo "" - echo "failed. Either this script is flawed or something else went wrong. " - echo "" - echo " S_FP_TMP_SILKTORRENT_PACKET=$S_FP_TMP_SILKTORRENT_PACKET" - echo "" - echo " S_FP_TMP_SILKTORRENT_PACKET_TAR==$S_FP_TMP_SILKTORRENT_PACKET_TAR" - echo "" - echo "GUID=='68428819-d399-43c8-a2d7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - func_mmmv_silktorrent_packager_t1_bash_blob2filename_t1 "$S_FP_TMP_SILKTORRENT_PACKET_TAR" - local S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME="$S_FP_ORIG/$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_BLOB2FILENAME_T1_RESULT" - mv $S_FP_TMP_SILKTORRENT_PACKET_TAR $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME - if [ "$?" != "0" ]; then - echo "" - echo "Something went wrong." - echo "The renaming and copying of " - echo " $S_FP_TMP_SILKTORRENT_PACKET_TAR " - echo "to " - echo " $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME " - echo "failed." - echo "GUID=='c158ce46-9e8d-4bb9-a2d7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - if [ ! -e "$S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME" ]; then - echo "" - echo "Something went wrong." - echo "The renaming and copying of " - echo "" - echo " $S_FP_TMP_SILKTORRENT_PACKET_TAR " - echo "" - echo "to " - echo "" - echo " $S_FP_TMP_SILKTORRENT_PACKET_PUBLISHINGNAME " - echo "" - echo "failed. The mv command succeed, but for some reason " - echo "the destination file does not exist." - echo "GUID=='7f7e1258-7c19-451f-91d7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - func_mmmv_delete_tmp_folder_t1 "$S_FP_TMP_0" - if [ -e "$S_FP_TMP_0" ]; then - echo "" - echo "Something went wrong." - echo "The deletion of the temporary folder, " - echo "" - echo " $S_FP_TMP_0" - echo "" - echo "failed." - echo "GUID=='23b56e4e-b7c4-4668-85d7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi -} # func_mmmv_silktorrent_packager_t1_bash_wrap_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_unwrap_t1() { - local S_FP_0="$1" # Path to the file. - #---- - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_FP_0" - #-------- - func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_FP_0" - local S_PACKET_FORMAT="$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_GET_PACKET_FORMAT_VERSION_T1_RESULT" - if [ "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" != "verification_passed" ]; then - echo "" - echo "The Silktorrent packet candidate, " - echo "" - echo " $S_FP_0" - echo "" - echo "failed Silktorrent packet name verification." - echo "There exists a possibility that the " - echo "Silktorrent packet candidate is actually OK, but " - echo "this is an older version of the Silktorrent implementaiton and " - echo "this, the older, version does not support " - echo "newer Silktorrent packet formats. " - echo "GUID=='1ea93ef2-0fb7-4cbb-8fd7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="f" - if [ "$S_PACKET_FORMAT" == "silktorrent_packet_format_version_1" ]; then - SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION="t" - #---- - local S_FP_TMP_SILKTORRENT_PACKET="`pwd`/silktorrent_packet" - if [ -e $S_FP_TMP_SILKTORRENT_PACKET ]; then - echo "" - echo "To avoid accidental deletion of files, " - echo "and some other types of flaws, " - echo "there is a requirement that the folder " - echo "" - echo " ./silktorrent_packet" - echo "" - echo "must be explicitly deleted before calling this script." - echo "GUID=='df3e4c6e-045b-4163-bfc7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #---- - tar -xf $S_FP_0 2>/dev/null - if [ "$?" != "0" ]; then - echo "" - echo "Something went wrong. The command " - echo "" - echo " tar -xf $S_FP_0" - echo "" - echo "exited with an error code, which is $? ." - echo "GUID=='07dfbc27-b793-4b68-93c7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - rm -f $S_FP_TMP_SILKTORRENT_PACKET/header/silktorrent_salt.txt - #---- - if [ ! -e $S_FP_TMP_SILKTORRENT_PACKET ]; then - echo "" - echo "Something went wrong. " - echo "The unpacking of the Silktorrent packet with the path of " - echo "" - echo " $S_FP_0" - echo "" - echo "failed. The folder \"silktorrent_packet\" " - echo "is missing after the \"tar\" exited without any errors." - echo "GUID=='39c08e15-9cab-4585-8fc7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - fi # silktorrent_packet_format_version_1 - #-------- - if [ "$SB_FORMAT_BRANCH_EXISTS_IN_THIS_FUNCTION" != "t" ]; then - echo "" - echo "This script is flawed." - echo "There is at least one branch missing from this function." - echo "GUID=='b9f42610-010a-4a35-a1c7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- -} # func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 - - -#-------------------------------------------------------------------------- - -func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1(){ - local S_PACKET_NAME_CANDIDATE="$1" - if [ "$S_PACKET_NAME_CANDIDATE" == "" ]; then - echo "" - echo "This script is flawed." - echo "Input verification should have cauht the " - echo "\"\" case before the control flow reaches this line." - echo "GUID=='eb6d4411-292c-40b6-a4c7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - local S_OUT="verification_failed" # opposite: "verification_passed" - - # rgx_in_ruby=/v[\d]{4}[_]/ - # rgx_in_ruby=/s[\d]+[_]/ - # rgx_in_ruby=/h[\dabcdef]{64}[_]/ - # rgx_in_ruby=/i[\dabcdef]{48}$/ # lacks the ending "_" - # # for db index optimization - local S_RUBY_REGEX="/^X[\\dabcdef]{48}i[_][\\dabcdef]{64}h[_][\\d]+s[_][\\d]{4}v.stblobX\$/" - # Tiger SHA-256 size version - # test cases: - # ruby -e "puts(ARGV[0])" aa\ bb - # printf "%q" "AA BB CC $^ \ / '\`\" <>()[];.{}" | xargs ruby -e "puts(ARGV[0])" - # - # The S_PACKET_NAME_CANDIDATE might contain various quotation marks. - # If it does, then hopefully it crashes at least something so that - # the crash can be detected from the "$?". - # The surrounding X-es, XX, - # are to counter a situation, where the file name candidate ends - # with a pspace, like "foo " and the Bash reads the console - # argument in as "foo" in stead of the "foo ". - #---- - #local S_TMP_0="`printf \"%q\" \"'$S_PACKET_NAME_CANDIDATE'\" | xargs ruby -e \" \ - local S_TMP_0="`ruby -e \" \ - s_in=ARGV[0];\ - rgx=$S_RUBY_REGEX;\ - md=s_in.match(rgx);\ - s_out='no_match';\ - if(md!=nil) then \ - s_out='match';\ - end;\ - printf(s_out);\ - \" \"$S_PACKET_NAME_CANDIDATE\" `" - #---- - if [ "$?" != "0" ]; then - echo "" - echo "Something went wrong. \$?==$? " - echo " S_PACKET_NAME_CANDIDATE==$S_PACKET_NAME_CANDIDATE" - echo "GUID=='41352353-e739-4fd1-b1c7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with error - fi - #-------- - # If the file name starts like "./foo" in stead of "foo", - # then the verification also fails, - # exactly as expected and demanded by the spec. - if [ "$S_TMP_0" == "match" ]; then - S_OUT="verification_passed" # opposite: "verification_failed" - fi - #-------- - echo "$S_OUT" -} # func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1 - - -#-------------------------------------------------------------------------- - -# The -S_SILKTORRENT_PACKAGER_T1_ACTION="" # is global to allow it to be used -# in the error messages of different functions. - -func_mmmv_silktorrent_packager_t1_bash_determine_action() { - local S_ARGV_0="$1" # Ruby style ARGV, 0 is the first command line argument. - local S_ARGV_1="$2" - local S_ARGV_2="$3" - local S_ARGV_3="$4" - #-------- - if [ "$S_ARGV_0" == "" ]; then - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 1 # exit with an error - fi - #---- - local SB_0="f" - if [ "$S_ARGV_0" == "help" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "--help" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-?" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-h" ]; then - SB_0="t" - fi - #---- - if [ "$SB_0" == "t" ]; then - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------------------------- - if [ "$S_ARGV_0" == "version" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "--version" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-version" ]; then - SB_0="t" - fi - if [ "$S_ARGV_0" == "-v" ]; then - SB_0="t" - fi - #---- - if [ "$SB_0" == "t" ]; then - echo "$S_SCRIPT_VERSION" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------------------------- - # Start of actions that require the existance of at least one file. - local SB_FILE_REQUIRED="t" - local SB_REQUESTED_ACTION_EXISTS="f" - local S_TMP_0="" - local S_TMP_1="" - #---- - S_TMP_0="wrap" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - if [ "$S_ARGV_0" == "pack" ]; then # alias - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - #---- - S_TMP_0="unwrap" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - if [ "$S_ARGV_0" == "unpack" ]; then # alias - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - #---- - S_TMP_0="verify" # checks the matche between the blob and the file name - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - #---- - S_TMP_0="test_hash_t1" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - fi - #-------- - # Start of actions that do not require a file: - S_TMP_0="verify_packet_name_format_v1" - if [ "$S_ARGV_0" == "$S_TMP_0" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - SB_FILE_REQUIRED="f" - fi - if [ "$S_ARGV_0" == "verify_package_name_format_v1" ]; then - S_SILKTORRENT_PACKAGER_T1_ACTION="$S_TMP_0" - SB_REQUESTED_ACTION_EXISTS="t" - SB_FILE_REQUIRED="f" - fi - #-------- - if [ "$SB_REQUESTED_ACTION_EXISTS" != "t" ]; then # lack of action included - func_mmmv_silktorrent_packager_t1_bash_print_help_msg_t1 - #---- - cd $S_FP_ORIG - exit 1 # exit with an error - fi - SB_REQUESTED_ACTION_EXISTS="f" # a reset to anticipate flaws elsewhere - # The action name test above has to be before the - if [ "$SB_FILE_REQUIRED" == "t" ]; then - func_mmmv_silktorrent_packager_t1_bash_exc_assert_wrappable_file_exists_t1 "$S_ARGV_1" - else - func_mmmv_silktorrent_packager_t1_bash_exc_assert_packet_name_candidate_exists_t1 "$S_ARGV_1" - fi - # because otherwise the error messages would be incorrect. - #-------- - # The following duplicating series of if-clauses is to allow - # actions to have aliases. - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "wrap" ]; then - func_mmmv_silktorrent_packager_t1_bash_wrap_t1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "unwrap" ]; then - func_mmmv_silktorrent_packager_t1_bash_unwrap_t1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify" ]; then - func_mmmv_silktorrent_packager_t1_bash_verify_file_name_t1 "$S_ARGV_1" - echo "$S_FUNC_MMMV_SILKTORRENT_PACKAGER_T1_BASH_VERIFY_FILE_NAME_T1_RESULT" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #---- - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "test_hash_t1" ]; then - func_mmmv_silktorrent_packager_t1_bash_test_1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------- - # Start of actions that do not require a file: - if [ "$S_SILKTORRENT_PACKAGER_T1_ACTION" == "verify_packet_name_format_v1" ]; then - func_mmmv_silktorrent_packager_t1_bash_verify_packet_name_format_v1 "$S_ARGV_1" - #---- - cd $S_FP_ORIG - exit 0 # exit without an error - fi - #-------------------------- - echo "" - echo "This bash script is flawed. The control flow " - echo "should have never reached this line." - echo "GUID=='e3af811a-93a7-4512-91b7-71b3900170e7'" - echo "" - #---- - cd $S_FP_ORIG - exit 1 # exit with an error -} # func_mmmv_silktorrent_packager_t1_bash_determine_action - -func_mmmv_silktorrent_packager_t1_bash_determine_action $1 $2 $3 $4 $5 $6 $7 - - -#-------------------------------------------------------------------------- - - -#-------------------------------------------------------------------------- -cd $S_FP_ORIG -exit 0 # - -#========================================================================== -# Fragments of comments and code that might find use some times later: -#-------------------------------------------------------------------------- -# -# max 55 characters --- package suggested deprecation date in nanoseconds -# relative to the Unix Epoch, -# written in base 10. It can be negative. -# rgx_in_ruby=/t((y[-]?[\d]+)|n)[_]/ -# echo "v0034_s2342_tn_" | gawk '{ gsub(/_/, "_\n"); print }' | \ -# gawk '/^t(y[-]?[0-9]+|n)_/ {printf "%s",$1 }' | -# gawk '{gsub(/[tyn_]/,"");printf "%s", $1 }' -# -# - - -#========================================================================== - DELETED work_in_progress/COMMENTS.txt Index: work_in_progress/COMMENTS.txt ================================================================== --- work_in_progress/COMMENTS.txt +++ work_in_progress/COMMENTS.txt @@ -1,4 +0,0 @@ - -This folder might one day -contain the Silktorrent "development trunk". - DELETED work_in_progress/doc/logo/How_to_draw_the_Silktorrent_logo_type_01.xcf Index: work_in_progress/doc/logo/How_to_draw_the_Silktorrent_logo_type_01.xcf ================================================================== --- work_in_progress/doc/logo/How_to_draw_the_Silktorrent_logo_type_01.xcf +++ work_in_progress/doc/logo/How_to_draw_the_Silktorrent_logo_type_01.xcf cannot compute difference between binary files DELETED work_in_progress/doc/logo/Silktorrent_logo_type_01_Inkscape_development_file.svg Index: work_in_progress/doc/logo/Silktorrent_logo_type_01_Inkscape_development_file.svg ================================================================== --- work_in_progress/doc/logo/Silktorrent_logo_type_01_Inkscape_development_file.svg +++ work_in_progress/doc/logo/Silktorrent_logo_type_01_Inkscape_development_file.svg @@ -1,2304 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DELETED work_in_progress/doc/logo/ready_for_use/How_to_draw_the_Silktorrent_logo_type_01.jpeg Index: work_in_progress/doc/logo/ready_for_use/How_to_draw_the_Silktorrent_logo_type_01.jpeg ================================================================== --- work_in_progress/doc/logo/ready_for_use/How_to_draw_the_Silktorrent_logo_type_01.jpeg +++ work_in_progress/doc/logo/ready_for_use/How_to_draw_the_Silktorrent_logo_type_01.jpeg cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black.svg Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black.svg ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black.svg +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black.svg @@ -1,68 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_100x100.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_100x100.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_100x100.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_100x100.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_200x200.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_200x200.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_200x200.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_200x200.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_600x600.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_600x600.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_600x600.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_600x600.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_60x60.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_60x60.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_60x60.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_black_60x60.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor.svg Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor.svg ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor.svg +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor.svg @@ -1,68 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_100x100.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_100x100.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_100x100.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_100x100.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_200x200.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_200x200.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_200x200.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_200x200.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_50x50.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_50x50.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_50x50.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_50x50.png cannot compute difference between binary files DELETED work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_600x600.png Index: work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_600x600.png ================================================================== --- work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_600x600.png +++ work_in_progress/doc/logo/ready_for_use/silktorrent_logo_type_01_fossilcolor_600x600.png cannot compute difference between binary files