* On 21 Nov 2011, von der Burg wrote:
>
> I am trying to use Champion and Blackman's nice bash script,
> which I have appended below, to assign different date formats
> according to the age of the date.
>
> I have tested each of the conditionals of this script and
> it seems to work from the shell. However when I try to use it
> from the mutt command line, it sets the desired format ONLY
> for the messages which are less than one day old. More accurately
> it applies the "less-than-one-day-old" to ALL messages.
Caveats: I remember this coming up but I don't remember exactly when or
in what context. (If you have a URL where you got this I could double
check.) And I don't use the script in question, since I get the same
functionality (faster) through a patch to mutt's code.
It looks to me like there's an error in the documentation:
> # use with
> # set index_format="format_date.sh '%[%s]' |"
> # test with
> # format_date.sh 1321504390 1321704390 <--- 2 days
There should be two arguments to the script, but the $index_format
there passes only one. You also need the current timestamp.
The simplest solution is probably to change the script: replace
this line:
now="$2" # local current time in epoch seconds
with this:
now=$(date +%s)
But I haven't tested this. Maybe Ed will see this and have a better
answer.
>
>
>
> ##############################
> #!/bin/bash
> #format_date
> # use with
> # set index_format="format_date.sh '%[%s]' |"
> # test with
> # format_date.sh 1321504390 1321704390 <--- 2 days
> # format_date.sh 1321504390 1322704390 <--- 13 days
> # Improvements by
> # David Champion <[email protected]>
> # Ed Blackman <[email protected]>
>
>
>
> msg_date="$1" # datetime of message in epoch seconds
> now="$2" # local current time in epoch seconds
> msg_age="$(( ($now - $msg_date) / 86400 ))" # age of message integer days
>
> if [ $msg_age -ge 30 ]; then
> format="%[%d/%b/%y]" # '20/Jan/11'
> elif [ $msg_age -ge 7 ]; then
> format="%8[%d %b]" # ' 20 Jan'
> elif [ $msg_age -ge 1 ]; then
> format="%8[%a %-H:%M]" # 'Thu 14:21'
> else
> format="%[ %_H:%M]" # ' 18:21'
> fi
>
> echo "%4C %Z $format %-15.15F (%?l?%4l&%4c?) %?H?[%H]?%s%"
> ##############################
>
>
>
>
--
David Champion • [email protected] • IT Services • University of Chicago