#!/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 '{D5C6}FLAMP 2.2.07' echo '{D5C6}20230610151423:flamp-file.k2s' echo ' ^^^^^^^^^^^^^^--> --> --> --> Use these numbers -->\' echo '{D5C6}N0CALL Demonstration' echo '{D5C6}45 1 64 |' echo '{D5C6:1}[b64:start]VGhpcyBpcyBhIHRlc3QuCg== v' echo '[b64:end]' echo '{D5C6:EOF} |' echo '{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: ' 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 -m "$UTC_TOUCH" "$2" touch -m "$UTC_TOUCH" "$2"