--- bin/reminder.calctime.~49~ 2016-08-07 10:53:02.590834421 -0700 +++ bin/reminder.calctime 2017-01-02 16:02:31.174058144 -0800 @@ -17,11 +17,11 @@ if expr "$TIME" : '20[0-9][0-9]'>/dev/null; then : elif [ "x$TIME" = xevening -o "x$TIME" = xmorning \ - -o "x$TIME" = xnoon ] \ - || expr "$TIME" : '[0-9]*[ap]m'>/dev/null \ - || expr "$TIME" : '[0-9][0-9]*:'>/dev/null \ - || expr "$TIME" : '[0-9]*[0-9]$'>/dev/null \ - || expr "$TIME" : '.*+'>/dev/null; then + -o "x$TIME" = xnoon ] || + expr "$TIME" : '[0-9]*[ap]m'>/dev/null || + expr "$TIME" : '[0-9][0-9]*:'>/dev/null || + expr "$TIME" : '[0-9]*[0-9]$'>/dev/null || + expr "$TIME" : '.*+'>/dev/null; then break elif [ "x$TIME" = xweek -o "x$TIME" = xmonth ]; then DATE=$TODAY @@ -42,45 +42,53 @@ break fi if date -d "$TIME" +%Y%m%d >/dev/null 2>&1; then - DATE=`date -d "$TIME" +%Y%m%d` - SDATE=`date -d "$TIME" +%Y/%m/%d` - if [ $TODAY = "$DATE" ]; then - DATE="" - SDATE="" - ALTTIME=`echo "$TIME" | sed -e 's,next *,,'` - if date -d "next $TIME" +%Y%m%d >/dev/null 2>&1; then - DATE=`date -d "next $TIME" +%Y%m%d` - SDATE=`date -d "next $TIME" +%Y/%m/%d` - if [ $TODAY = "$DATE" -a "x$TIME" != xtoday ]; then - DATE=`date -d "2 $TIME" +%Y%m%d` - SDATE=`date -d "2 $TIME" +%Y/%m/%d` - fi - elif date -d "$ALTTIME" +%Y%m%d >/dev/null 2>&1; then - DATE=`date -d "$ALTTIME" +%Y%m%d` - SDATE=`date -d "$ALTTIME" +%Y/%m/%d` - if [ $TODAY = "$DATE" -a "x$ALTTIME" != xtoday ]; then - DATE=`date -d "2 $ALTTIME" +%Y%m%d` - SDATE=`date -d "2 $ALTTIME" +%Y/%m/%d` - fi - fi - unset ALTTIME + if [ "x$BASEFILE" != x -a -e $BASEFILE ]; then + DATE=`date -r "$BASEFILE" +%Y/%m/%d \ + | xargs -i perl -e 'use Date::Manip;print UnixDate(Date_GetNext("{}", "'"$TIME"'", 0), "%Y%m%d")'` + SDATE=`date -r "$BASEFILE" +%Y/%m/%d \ + | xargs -i perl -e 'use Date::Manip;print UnixDate(Date_GetNext("{}", "'"$TIME"'", 0), "%Y/%m/%d")'` + fi + if [ "x$DATE" = x ]; then + DATE=`date -d "$TIME" +%Y%m%d` + SDATE=`date -d "$TIME" +%Y/%m/%d` fi - if [ "x$DATE" != x ]; then - if [ $DATE -lt $TODAY ]; then - DATE=`date -d 'next year' +%Y|xargs -i date -d "$TIME {}" +%Y%m%d` - SDATE=`date -d 'next year' +%Y|xargs -i date -d "$TIME {}" +%Y/%m/%d` + fi + if [ $TODAY = "$DATE" ]; then + DATE="" + SDATE="" + ALTTIME=`echo "$TIME" | sed -e 's,next *,,'` + if date -d "next $TIME" +%Y%m%d >/dev/null 2>&1; then + DATE=`date -d "next $TIME" +%Y%m%d` + SDATE=`date -d "next $TIME" +%Y/%m/%d` + if [ $TODAY = "$DATE" -a "x$TIME" != xtoday ]; then + DATE=`date -d "2 $TIME" +%Y%m%d` + SDATE=`date -d "2 $TIME" +%Y/%m/%d` fi - #if [ $DATE -lt $TODAY ]; then - # DATE=`date -d "$TIME tomorrow" +%Y%m%d` - # SDATE=`date -d "$TIME tomorrow" +%Y/%m/%d` - #fi - if [ $DATE -lt $TODAY ]; then - DATE=`expr $DATE + 10000` - SDATE=`expr $SDATE + 10000` - else - TIME="" + elif date -d "$ALTTIME" +%Y%m%d >/dev/null 2>&1; then + DATE=`date -d "$ALTTIME" +%Y%m%d` + SDATE=`date -d "$ALTTIME" +%Y/%m/%d` + if [ $TODAY = "$DATE" -a "x$ALTTIME" != xtoday ]; then + DATE=`date -d "2 $ALTTIME" +%Y%m%d` + SDATE=`date -d "2 $ALTTIME" +%Y/%m/%d` fi fi + unset ALTTIME + fi + if [ "x$DATE" != x ]; then + if [ $DATE -lt $TODAY ]; then + DATE=`date -d 'next year' +%Y|xargs -i date -d "$TIME {}" +%Y%m%d` + SDATE=`date -d 'next year' +%Y|xargs -i date -d "$TIME {}" +%Y/%m/%d` + fi + #if [ $DATE -lt $TODAY ]; then + # DATE=`date -d "$TIME tomorrow" +%Y%m%d` + # SDATE=`date -d "$TIME tomorrow" +%Y/%m/%d` + #fi + if [ $DATE -lt $TODAY ]; then + DATE=`expr $DATE + 10000` + SDATE=`expr $SDATE + 10000` + else + TIME="" + fi fi if [ "x$DATE" != x ]; then RETSTAT=0 --- bin/reminder.~587~ 2016-12-14 07:33:13.033590868 -0800 +++ bin/reminder 2017-01-02 16:11:30.235814949 -0800 @@ -21,30 +21,51 @@ ONTTY=yes fi mkdir -p $RHOME/lib/reminder -for i in $RHOME/lib/reminder/[a-z]*[a-z] +for i in $RHOME/lib/reminder/[a-z]*[a-z] \ + $RHOME/lib/reminder/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] do if [ ! -f "$i" ]; then continue fi j=`basename $i` - if expr "$j" : '.*\.' >/dev/null \ - || [ "x$j" = "xtriggers" -o "x$j" = "xyesterday" \ - -o "x$j" = "xevening" -o "x$j" = "xnoon" \ - -o "x$j" = "xmorning" ]; then - continue - fi - lockfile -l60 $i.lock - mv $i $i.$$ - echo processing "$i"... - /bin/rm -f $i.lock - if reminder $j <$i.$$ && rm $i.$$; then - : - else - RETSTAT=$? + if expr "$j" : '[a-z]' >/dev/null; then + if expr "$j" : '.*\.' >/dev/null || [ "x$j" = "xtriggers" ] + then + continue + fi + if [ "x$j" = "xyesterday" \ + -o "x$j" = "xevening" -o "x$j" = "xnoon" \ + -o "x$j" = "xmorning" ]; then + if [ ! -f $RHOME/lib/reminder/"$TIME" ] || + [ `date -r $RHOME/lib/reminder/"$TIME" +%Y%m%d` -ge $TODAY ] + then + continue + fi + j=now + fi lockfile -l60 $i.lock - mv $i.$$ $i - echo reminder: could not process "$i" 2>/dev/null + mv $i $i.$$ + BASEFILE=$i.$$ + export BASEFILE + echo processing "$i"... /bin/rm -f $i.lock + if reminder $j <$i.$$ && rm $i.$$; then + : + else + RETSTAT=$? + lockfile -l60 $i.lock + mv $i.$$ $i + echo reminder: could not process "$i" 2>/dev/null + /bin/rm -f $i.lock + fi + unset BASEFILE + elif [ "x$PID" = x ]; then + if reminder "$j" </dev/null; then + : + else + RETSTAT=$? + echo reminder: could not process "$i" 2>/dev/null + fi fi done if [ "x$1" = xnow ]; then @@ -64,6 +85,9 @@ "$RHOME"/notes/tasks /bin/rm -f "$RHOME"/notes/tasks.lock fi + if [ "x$PID" = x ]; then + /bin/rm /tmp/reminder.$HOSTNAME + fi exit fi . $0.calctime @@ -78,9 +102,11 @@ OLDFILE=$FILE EXCLUDE=/dev/null touch /tmp/reminder.repeated.tmp.$$ /tmp/reminder.hbday.tmp.$$ -if [ "x$TIME" = xnoon -a -f $RHOME/cron/noon.last \ - -a `date -r $RHOME/cron/noon.last +%Y%m%d%H%M` -ge `date +%Y%m%d1200` ]; then - TIME=evening +if [ "x$TIME" = xnoon ]; then + if [ -f $RHOME/cron/noon.last ] && + [ `date -r $RHOME/cron/noon.last +%Y%m%d%H%M` -ge `date +%Y%m%d1200` ]; then + TIME=evening + fi fi NEWTIMEFILE="" SAMEFILE=no @@ -94,21 +120,6 @@ elif [ "x$TIME" != xweek -a "x$TIME" != xmonth -a "x$DATE" = "x$TODAY" ]; then FILE="$RHOME"/notes/tasks elif [ "x$DATE" != x ]; then - FILE=$RHOME/lib/reminder/$DATE - SAMEFILE=yes - echo "BANNER %" >/tmp/reminder.remind - PHATDATE=`date '+%b %d %Y' -d $DATE` - HAPPYTODAY="" - if [ $TODAY = "$DATE" ]; then - HAPPYTODAY=";/^Happy /p;/^HAPPY /p" - fi - hbday -hbe `perl -we 'use Date::Parse;$t2=str2time("'"$DATE"'");$t1=time;print int(($t2-$t1)/86400+1)'` \ - | sed -n '/^Coming up:/,$p'"$HAPPYTODAY" \ - | sed -e '/^Coming up:/d;s,in [1-9][0-9]* days*,,;s,\. *(tomorrow),,;s,!!!$,,;s,\. *()$,,;s,^Happy ,celebrate ,;s,tomorrow,,;s,^HAPPY \([^ ]* \)\?BIRTHDAY \(.*\)$,celebrate \2'"'"'s \1birthday,;s,^......: ,celebrate,' \ - | tee /tmp/reminder.hbday.tmp.$$ \ - | sed -n 's,$,%,;s,^,'"$PHATDATE"' MSG ,p' \ - >>/tmp/reminder.remind - sed -e '/ MS[GF] /{s,$,%,}' $RHOME/.remind >>/tmp/reminder.remind if [ "x$TIME" = xweek -o "x$TIME" = xmonth ]; then TODO="cat" if [ -f /var/tmp/lynx/current ]; then @@ -159,8 +170,26 @@ /bin/rm /tmp/reminder.week.nonrepeating I=`expr $I + 1` done + if [ "x$PID" = x ]; then + /bin/rm /tmp/reminder.$HOSTNAME + fi exit fi + FILE=$RHOME/lib/reminder/$DATE + SAMEFILE=yes + echo "BANNER %" >/tmp/reminder.remind + PHATDATE=`date '+%b %d %Y' -d $DATE` + HAPPYTODAY="" + if [ $TODAY = "$DATE" ]; then + HAPPYTODAY=";/^Happy /p;/^HAPPY /p" + fi + hbday -hbe `perl -we 'use Date::Parse;$t2=str2time("'"$DATE"'");$t1=time;print int(($t2-$t1)/86400+1)'` \ + | sed -n '/^Coming up:/,$p'"$HAPPYTODAY" \ + | sed -e '/^Coming up:/d;s,in [1-9][0-9]* days*,,;s,\. *(tomorrow),,;s,!!!$,,;s,\. *()$,,;s,^Happy ,celebrate ,;s,tomorrow,,;s,^HAPPY \([^ ]* \)\?BIRTHDAY \(.*\)$,celebrate \2'"'"'s \1birthday,;s,^......: ,celebrate,' \ + | tee /tmp/reminder.hbday.tmp.$$ \ + | sed -n 's,$,%,;s,^,'"$PHATDATE"' MSG ,p' \ + >>/tmp/reminder.remind + sed -e '/ MS[GF] /{s,$,%,}' $RHOME/.remind >>/tmp/reminder.remind if [ -s $FILE.exclude ]; then EXCLUDE=$FILE.exclude fi @@ -248,6 +277,9 @@ if [ ! -f "$FILE" ]; then /bin/rm -f "$FILE.lock" "$FILE.rem.lock" echo reminder: file never created + if [ "x$PID" = x ]; then + /bin/rm /tmp/reminder.$HOSTNAME + fi exit 1 fi perl -w $THIS_DIR/reminder_triggers.pl $RHOME/lib/reminder/triggers "$FILE" \ @@ -316,7 +348,9 @@ read -p "Enter a new time designation: " TIME else /bin/rm -f "$FILE.lock" "$FILE.rem.lock" - /bin/rm /tmp/reminder.$HOSTNAME + if [ "x$PID" = x ]; then + /bin/rm /tmp/reminder.$HOSTNAME + fi exit 1 fi done @@ -464,6 +498,8 @@ fi lockfile -l60 $i.lock mv $i $i.$$ + BASEFILE=$i.$$ + export BASEFILE if reminder $j <$i.$$ && rm $i.$$; then : else @@ -471,6 +507,7 @@ mv $i.$$ $i echo reminder: could not process "$i" 2>/dev/null fi + unset BASEFILE /bin/rm -f $i.lock done for i in $RHOME/lib/reminder/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] @@ -486,7 +523,9 @@ fi done unset j - /bin/rm /tmp/reminder.$HOSTNAME update_calendar fi +if [ "x$PID" = x ]; then + /bin/rm /tmp/reminder.$HOSTNAME +fi exit $RETSTAT