flamp-queue-touch/fqt

150 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
# fqt - FLAMP Queue Touch'
#
# Simplify matching queue ID in FLAMP by changing file's date.
Help()
{
echo 'Usage: fqt \[OPTION\]... TIMESTAMP... FILE...'
echo 'Update a file'\''s timestamp helping recreate the hash, or queue id, in FLAMP.'
echo
echo 'options:'
echo ' -h display this help and exit'
echo ' --help display longer help and exit'
echo ' -v, --version output version information and exit'
echo
echo 'fqt is short for FLAMP Queue Touch'
}
LongHelp()
{
echo 'Example'
echo ' FLAMP text shown in FLDIGI:'
echo '/// BEGIN ///'
echo 'QST DE N0CALL'
echo
echo '<PROG 18 588E>{D5C6}FLAMP 2.2.07'
echo '<FILE 35 EEAC>{D5C6}20230610151423:flamp-file.k2s'
echo ' ^^^^^^^^^^^^^^--> --> --> --> Use these numbers -->\'
echo '<ID 26 6D1A>{D5C6}N0CALL Demonstration'
echo '<SIZE 13 4B1B>{D5C6}45 1 64 |'
echo '<DATA 53 5A03>{D5C6:1}[b64:start]VGhpcyBpcyBhIHRlc3QuCg== v'
echo '[b64:end]'
echo '<CNTL 10 2CBA>{D5C6:EOF} |'
echo '<CNTL 10 8CB6>{D5C6:EOT} v'
echo
echo 'QST DE N0CALL K |'
echo '/// END /// v'
echo ' vvvvvvvvvvvvvv <-- <-- <-- <-- <-- <-- <-- Here <-- <--/'
echo ' command: fqt 20230607013934 flamp-file.k2s'
echo
echo 'Tips'
echo ' If hash doesn'\''t match, try to'
echo ' Remove and re-Add the file in FLAMP'
echo ' Toggle Comp check box (usually compression, unless file is small)'
echo ' Change base64 (usually base64)'
echo ' Change Blk size (usually 64)'
echo
echo 'Information on hash in documentation'
echo 'FLAMP Amateur Multicast Protocol (AMP-2) - Version 3.0'
echo 'available at: <http://www.w1hkj.com/files/flamp/Amp-2.V3.0.Protocol.pdf>'
echo
echo ' 20130316010524:ShortMessage2.txt0base12896'
echo
echo ' Example format:'
echo
echo ' |20130316010524:ShortMessage2.txt|0|base128|96|'
echo ' | DTS : FN |C| B |BS|'
echo
echo ' DTS = Date/Time Stamp'
echo ' FN = File Name'
echo ' C = Compression 1=ON,0=OFF'
echo ' B = Base Conversion (base64, base128, or base256)'
echo ' BS = Block Size, 1 or more characters'
echo ' | = Field separator.'
echo
echo 'Usage: fqt [OPTION]... TIMESTAMP... FILE...'
echo 'Update a file'\''s timestamp helping recreate the hash, or queue id, in FLAMP.'
echo
echo 'TIMESTAMP is the string appearing in FLAMP header'
echo 'and is formatted YYYYmmddHHMMSS '
echo
echo 'A FILE argument that does not exist is created empty. (Not helpful.)'
echo
echo 'options:'
echo ' -h display short help and exit'
echo ' --help display this longer help and exit'
echo ' -v, --version output version information and exit'
echo
echo 'This should work across timezones and across Daylight Savings times.'
echo
echo 'fqt is short for FLAMP Queue Touch'
}
Version()
{
echo 'fqt - FLAMP Queue Touch'
echo 'Not Copyrighted'
echo 'No License'
echo 'This is free software: you are free to change and redistribute it.'
echo 'There is NO WARRANTY, to the extent permitted by law.'
echo
echo 'Use at your own risk!'
echo
echo 'Written by a ham.'
}
# Note that we use "$@" to let each command-line parameter expand to a
# separate word. The quotes around "$@" are essential!
# We need TEMP as the 'eval set --' would nuke the return value of getopt.
if ! TEMP=$(getopt -o '::hv' --long 'help,version' -n 'fqt' -- "$@") ;
then
echo 'Unexpected input. Terminating...' >&2
exit 1
fi
# Note the quotes around "$TEMP": they are essential!
eval set -- "$TEMP"
unset TEMP
# getopt -l "help" -a -o "" -- "$@"
while true; do
case "$1" in
'-h')
Help
exit;;
'--help')
LongHelp
exit;;
'-v'|'--version')
Version
exit;;
'--') # Useless for this file?
shift
break;;
*) # Invalid option
echo 'Error: Invalid option'
exit 1;;
esac
done
GIVEN="$1"
#echo "$GIVEN"
# YYYYmmddHHMMSS
# 20230607013934
GIVEN_DATE=$(echo "$GIVEN" | sed 's/\(....\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1-\2-\3 \4:\5:\6/')
#echo "$GIVEN_DATE"
# YYYY-mm-dd HH:MM:SS
# 2023-06-07 01:39:34
UTC_TOUCH="$(date -d "$GIVEN_DATE"Z +%Y%m%d%H%M.%S)"
#echo "$UTC_TOUCH"
# YYYYmmddHHMM.SS
# 202306062139.34
#echo touch -mt "$UTC_TOUCH" "$2"
touch -mt "$UTC_TOUCH" "$2"