+    fi    
+} # Form compression cmd string and filename suffix
+magicInitWorkingDir() {
+    # Desc: Determine temporary working directory from defaults or user input
+    # Usage: magicInitWorkignDir
+    # Input:  vars: OPTION_TEMPDIR, argTempDirPriority, DIR_TMP_DEFAULT
+    # Input:  vars: SCRIPT_TIME_START
+    # Output: vars: DIR_TMP
+    # Depends: processArguments(), vbm(), yell()
+    # Parse '-t' option (user-specified temporary working dir)
+    ## Set DIR_TMP_PARENT to user-specified value if specified
+    local DIR_TMP_PARENT
+    
+    if [[ "$OPTION_TMPDIR" = "true" ]]; then
+       if [[ -d "$argTempDirPriority" ]]; then
+           DIR_TMP_PARENT="$argTempDirPriority"; 
+       else
+           yell "WARNING:Specified temporary working directory not valid:$argTempDirPriority";
+           exit 1; # Exit since user requires a specific temp dir and it is not available.
+       fi;
+    else
+    ## Set DIR_TMP_PARENT to default or fallback otherwise
+       if [[ -d "$DIR_TMP_DEFAULT" ]]; then
+           DIR_TMP_PARENT="$DIR_TMP_DEFAULT";
+       elif [[ -d /tmp ]]; then
+           yell "WARNING:$DIR_TMP_DEFAULT not available. Falling back to /tmp .";
+           DIR_TMP_PARENT="/tmp";
+       else
+           yell "ERROR:No valid working directory available. Exiting.";
+           exit 1;
+       fi
+    fi;
+    ## Set DIR_TMP using DIR_TMP_PARENT and nonce (SCRIPT_TIME_START)
+    DIR_TMP="$DIR_TMP_PARENT"/"$SCRIPT_TIME_START""..bkgpslog" && vbm "DEBUG:Set DIR_TMP to:$DIR_TMP"; # Note: removed at end of main().    
+} # Sets working dir
+magicParseCustomTTL() {
+    # Desc: Set user-specified TTLs for buffer and script
+    # Input: vars: argCustomBufferTTL (integer), argCustomScriptTTL_TE (string)
+    # Input: vars: OPTION_CUSTOM_BUFFERTTL, OPTION_CUSTOM_SCRIPTTTL
+    # Input: vars: BUFFER_TTL (integer), SCRIPT_TTL_TE (string)
+    # Output: BUFFER_TTL (integer), SCRIPT_TTL_TE (string)
+    # Depends validateInput(), showUsage(), yell
+
+    # React to '-b, --buffer-ttl' option
+    if [[ "$OPTION_CUSTOM_BUFFERTTL" = "true" ]]; then
+       ## T: Check if argCustomBufferTTL is an integer
+       if validateInput "$argCustomBufferTTL" "integer"; then
+           ### T: argCustomBufferTTL is an integer
+           BUFFER_TTL="$argCustomBufferTTL";
+       else
+           ### F: argcustomBufferTTL is not an integer
+           yell "ERROR:Invalid integer argument for custom buffer time-to-live."; showUsage; exit 1;
+       fi;
+       ## F: do not change BUFFER_TTL
+    fi;
+    
+    # React to '-B, --script-ttl' option
+    if [[ "$OPTION_CUSTOM_SCRIPTTTL_TE" = "true" ]]; then
+       ## T: Check if argCustomScriptTTL is a time element (ex: "day", "hour")
+       if validateInput "$argCustomScriptTTL" "time_element"; then
+           ### T: argCustomScriptTTL is a time element
+           SCRIPT_TTL_TE="$argCustomScriptTTL";
+       else
+           ### F: argcustomScriptTTL is not a time element
+           yell "ERROR:Invalid time element argument for custom script time-to-live."; showUsage; exit 1;
+       fi;
+       ## F: do not change SCRIPT_TTL_TE
+    fi;    
+} # Sets custom script or buffer TTL if specified
+
+
+main() {
+    # Process arguments
+    processArguments "$@";
+    ## Act upon arguments
+    ### Determine working directory
+    magicInitWorkingDir; # Sets DIR_TMP from argTempDirPriority
+    ### Set output encryption and compression option strings
+    #### React to "-r" ("encryption recipients") option
+    magicParseRecipientArgs; # Updates recPubKeysValid, CMD_ENCRYPT[_SUFFIX]
+    #### React to "-c" ("compression") option
+    magicParseCompressionArg; # Updates CMD_COMPRESS[_SUFFIX]
+    #### React to "-R" ("recipient directory") option
+    magicParseRecipientDir; # Updates recPubKeysValid
+    #### React to custom buffer and script TTL options ("-b", "-B")
+    magicParseCustomTTL; # Sets custom SCRIPT_TTL_TE and/or BUFFER_TTL if specified