From aa2a49f124fb37856d7dc19b66cee3392440c8b5 Mon Sep 17 00:00:00 2001
From: Steven Baltakatei Sandoval <baltakatei@gmail.com>
Date: Wed, 1 Jul 2020 19:25:47 +0000
Subject: [PATCH 1/1] fix(bkgpslog): Fix broken working dir name

- Fix broken working dir variable (was missing script start time)

- Remove UTC as default TZ (will use parent shell's env var TZ). Can
  still be customized using `--time-zone` option

- Add logic for creating temporary working directory for possible
future `--temp-dir` option. Working dir hard defaults to
`/dev/shm` (tmpfs) for now.
---
 exec/bkgpslog | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/exec/bkgpslog b/exec/bkgpslog
index 9210e15..db2e6a4 100755
--- a/exec/bkgpslog
+++ b/exec/bkgpslog
@@ -2,18 +2,19 @@
 
 # Desc: Records gps data until midnight
 # Author: Steven Baltakatei Sandoval; License: GPLv3+
-# Usage: bkgpslog --output [output dir]
+# Usage: bkgpslog -o [output dir]
 
 #==BEGIN Define script parameters==
 ## Logging Behavior parameters
 BUFFER_TTL="60"; # time between file writes
 SCRIPT_TTL="day"; # (day|hour)
-TZ="UTC"; export TZ; # Default time zone; overridden by '--time-zone=[str]' option
+#### TZ="UTC"; export TZ; # Default time zone; overridden by '--time-zone=[str]' option
+DIR_TMP_DEFAULT="/dev/shm"; # Default parent of working directory
 
-PATH="$HOME/.local/bin:$PATH"   # Add "$(systemd-path user-binaries)" path in case apps saved there
-SCRIPT_HOSTNAME=$(hostname)     # Save hostname of system running this script.
-SCRIPT_VERSION="bkgpslog 0.1.0" # Define version of script.
-DIR_TMP="/dev/shm/$(timeStart)..bkgpslog"     # Define working directory for temproary files
+SCRIPT_TIME_START=$(date +%Y%m%dT%H%M%S.%N);
+PATH="$HOME/.local/bin:$PATH";   # Add "$(systemd-path user-binaries)" path in case apps saved there
+SCRIPT_HOSTNAME=$(hostname);     # Save hostname of system running this script.
+SCRIPT_VERSION="bkgpslog 0.1.0"; # Define version of script.
 
 declare -Ag appRollCall # Associative array for storing app status
 declare -Ag fileRollCall # Associative array for storing file status
@@ -602,6 +603,18 @@ setScriptTTL() {
 main() {
     processArguments "$@" # Process arguments.
 
+    # Determine working directory
+    if [[ -d "$DIR_TMP_DEFAULT" ]]; then
+	DIR_TMP_BASE="$DIR_TMP_DEFAULT"; # Use default working directory parent (ex: '/dev/shm')
+    #### elif [[ -d /tmp ]]; then
+    #### 	yell "WARNING:/dev/shm not available. Falling back to /tmp .";
+    #### 	DIR_TMP_BASE="/tmp";
+    else
+	yell "ERROR:No valid working directory available. Exiting.";
+	exit 1;
+    fi
+    DIR_TMP="$DIR_TMP_BASE"/"$SCRIPT_TIME_START""..bkgpslog";     # Define working directory for temproary files
+    
     # Set output encryption and compression option strings
     if [[ "$OPTION_ENCRYPT" = "true" ]]; then # Check if encryption option active.
 	if checkapp age; then # Check that age is available.
@@ -661,7 +674,7 @@ main() {
     ## Write bkgpslog version to DIR_TMP/VERSION
     echo "$0"" Version:""$SCRIPT_VERSION" >> "$DIR_TMP/VERSION" && vbm "DEBUG:VERSION created."
     ## Create empty tar archive at PATHOUT_TAR
-    try tar --create --directory="$DIR_TMP" --file="$PATHOUT_TAR" --files-from=/dev/null && vbm "DEBUG:bufferRam.tar created."
+    try tar --create --directory="$DIR_TMP" --file="$PATHOUT_TAR" --files-from=/dev/null && vbm "DEBUG:""$PATHOUT_TAR"" created."
     ## Append VERSION file to PATHOUT_TAR
     try tar --append --directory="$DIR_TMP" --file="$PATHOUT_TAR" "VERSION" && vbm "DEBUG:VERSION added to $PATHOUT_TAR"
     
@@ -671,7 +684,7 @@ main() {
     while [[ "$SECONDS" -lt "$scriptTTL" ]]; do
 	# Determine file paths (time is start of buffer period)
 	FILEOUT_BASENAME="$timeStart""--""$bufferTTL_STR""..""$SCRIPT_HOSTNAME""_location" ; # ISO-8601 YYYYmmddTHHMMSS+zzP[$bufferTTL]S
-	## Files saved to tmpfs memory (DIR_TMP)
+	## Files saved to DIR_TMP
 	PATHOUT_NMEA="$DIR_TMP"/"$FILEOUT_BASENAME".nmea"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ; 
 	PATHOUT_GPX="$DIR_TMP"/"$FILEOUT_BASENAME".gpx"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ;
 	PATHOUT_KML="$DIR_TMP"/"$FILEOUT_BASENAME".kml"$CMD_COMPRESS_SUFFIX""$CMD_ENCRYPT_SUFFIX" ;
-- 
2.39.5