1*b30d1939SAndy Fiddaman######################################################################## 2*b30d1939SAndy Fiddaman# # 3*b30d1939SAndy Fiddaman# This software is part of the ast package # 4*b30d1939SAndy Fiddaman# Copyright (c) 1982-2011 AT&T Intellectual Property # 5*b30d1939SAndy Fiddaman# and is licensed under the # 6*b30d1939SAndy Fiddaman# Eclipse Public License, Version 1.0 # 7*b30d1939SAndy Fiddaman# by AT&T Intellectual Property # 8*b30d1939SAndy Fiddaman# # 9*b30d1939SAndy Fiddaman# A copy of the License is available at # 10*b30d1939SAndy Fiddaman# http://www.eclipse.org/org/documents/epl-v10.html # 11*b30d1939SAndy Fiddaman# (with md5 checksum b35adb5213ca9657e911e9befb180842) # 12*b30d1939SAndy Fiddaman# # 13*b30d1939SAndy Fiddaman# Information and Software Systems Research # 14*b30d1939SAndy Fiddaman# AT&T Research # 15*b30d1939SAndy Fiddaman# Florham Park NJ # 16*b30d1939SAndy Fiddaman# # 17*b30d1939SAndy Fiddaman# David Korn <dgk@research.att.com> # 18*b30d1939SAndy Fiddaman# # 19*b30d1939SAndy Fiddaman######################################################################## 20*b30d1939SAndy Fiddamanfunction err_exit 21*b30d1939SAndy Fiddaman{ 22*b30d1939SAndy Fiddaman print -u2 -n "\t" 23*b30d1939SAndy Fiddaman print -u2 -r ${Command}[$1]: "${@:2}" 24*b30d1939SAndy Fiddaman (( Errors+=1 )) 25*b30d1939SAndy Fiddaman} 26*b30d1939SAndy Fiddamanalias err_exit='err_exit $LINENO' 27*b30d1939SAndy Fiddaman 28*b30d1939SAndy FiddamanCommand=${0##*/} 29*b30d1939SAndy Fiddamaninteger Errors=0 30*b30d1939SAndy Fiddaman 31*b30d1939SAndy Fiddamantypeset -T Time_t=( 32*b30d1939SAndy Fiddaman integer .=-1 33*b30d1939SAndy Fiddaman _='%F+%H:%M' 34*b30d1939SAndy Fiddaman get() 35*b30d1939SAndy Fiddaman { 36*b30d1939SAndy Fiddaman if (( _ < 0 )) 37*b30d1939SAndy Fiddaman then .sh.value=${ printf "%(${_._})T" now ;} 38*b30d1939SAndy Fiddaman else .sh.value=${ printf "%(${_._})T" "#$((_))" ;} 39*b30d1939SAndy Fiddaman fi 40*b30d1939SAndy Fiddaman } 41*b30d1939SAndy Fiddaman set() 42*b30d1939SAndy Fiddaman { 43*b30d1939SAndy Fiddaman .sh.value=${ printf "%(%#)T" "${.sh.value}";} 44*b30d1939SAndy Fiddaman } 45*b30d1939SAndy Fiddaman) 46*b30d1939SAndy Fiddaman 47*b30d1939SAndy Fiddamand=$(printf "%(%F+%H:%M)T" now) 48*b30d1939SAndy Fiddamaninteger s=$(printf "%(%#)T" "$d") 49*b30d1939SAndy FiddamanTime_t t=$d 50*b30d1939SAndy Fiddaman[[ $t == "$d" ]] || err_exit "printf %T != Time_t -- expected '$d', got '$t'" 51*b30d1939SAndy Fiddaman(( t == s )) || err_exit "numeric Time_t failed -- expected '$s', got '$t'" 52*b30d1939SAndy Fiddamant._='%#' 53*b30d1939SAndy Fiddaman[[ $t == $s ]] || err_exit "t._='%#' failed -- expected '$s', got '$t'" 54*b30d1939SAndy Fiddamanunset t 55*b30d1939SAndy FiddamanTime_t tt=(yesterday today tomorrow) 56*b30d1939SAndy Fiddamantt[3]=2pm 57*b30d1939SAndy Fiddaman[[ ${!tt[@]} == '0 1 2 3' ]] || err_exit "indexed array subscript names failed -- expected '0 1 2 3', got '${!tt[@]}'" 58*b30d1939SAndy Fiddaman[[ ${tt[0]} == *+00:00 ]] || err_exit "tt[0] failed -- expected 00:00, got '${tt[0]##*+}'" 59*b30d1939SAndy Fiddaman[[ ${tt[1]} == *+00:00 ]] || err_exit "tt[1] failed -- expected 00:00, got '${tt[1]##*+}'" 60*b30d1939SAndy Fiddaman[[ ${tt[2]} == *+00:00 ]] || err_exit "tt[2] failed -- expected 00:00, got '${tt[2]##*+}'" 61*b30d1939SAndy Fiddaman[[ ${tt[3]} == *+14:00 ]] || err_exit "tt[3] failed -- expected 14:00, got '${tt[3]##*+}'" 62*b30d1939SAndy Fiddamanunset tt 63*b30d1939SAndy FiddamanTime_t tt=('2008-08-11+00:00:00,yesterday' '2008-08-11+00:00:00,today' '2008-08-11+00:00:00,tomorrow') 64*b30d1939SAndy Fiddamantt[3]=9am 65*b30d1939SAndy Fiddamantt[4]=5pm 66*b30d1939SAndy Fiddaman(( (tt[1] - tt[0]) == 24*3600 )) || err_exit "today-yesterday='$((tt[1] - tt[0]))' != 1 day" 67*b30d1939SAndy Fiddaman(( (tt[2] - tt[1]) == 24*3600 )) || err_exit "tomorrow-today='$((tt[2] - tt[1]))' != 1 day" 68*b30d1939SAndy Fiddaman(( (tt[4] - tt[3]) == 8*3600 )) || err_exit "9am..5pm='$((tt[4] - tt[3]))' != 8 hours" 69*b30d1939SAndy Fiddamanunset tt 70*b30d1939SAndy FiddamanTime_t tt=([yesterday]='2008-08-11+00:00:00,yesterday' [today]='2008-08-11+00:00:00,today' [tomorrow]='2008-08-11+00:00:00,tomorrow') 71*b30d1939SAndy Fiddamantt[2pm]='2008-08-11+00:00:00,2pm' 72*b30d1939SAndy Fiddaman[[ ${tt[yesterday]} == *+00:00 ]] || err_exit "tt[yesterday] failed -- expected 00:00, got '${tt[yesterday]##*+}'" 73*b30d1939SAndy Fiddaman[[ ${tt[today]} == *+00:00 ]] || err_exit "tt[today] failed -- expected 00:00, got '${tt[today]##*+}'" 74*b30d1939SAndy Fiddaman[[ ${tt[tomorrow]} == *+00:00 ]] || err_exit "tt[tomorrow] failed -- expected 00:00, got '${tt[tomorrow]##*+}'" 75*b30d1939SAndy Fiddaman[[ ${tt[2pm]} == *+14:00 ]] || err_exit "tt[2pm] failed -- expected 14:00, got '${tt[2pm]##*+}'" 76*b30d1939SAndy Fiddaman(( (tt[today] - tt[yesterday] ) == 24*3600 )) || err_exit "tt[today]-tt[yesterday] failed -- expected 24*3600, got $(((tt[today]-tt[yesterday])/3600.0))*3600" 77*b30d1939SAndy Fiddaman(( (tt[tomorrow] - tt[today] ) == 24*3600 )) || err_exit "tt[tomorrow]-tt[today] failed -- expected 24*3600, got $(((tt[tomorrow]-tt[today])/3600.0))*3600" 78*b30d1939SAndy Fiddaman(( (tt[2pm] - tt[today] ) == 14*3600 )) || err_exit "tt[2pm]-tt[today] failed -- expected 14*3600, got $(((tt[2pm]-tt[today])/3600.0))*3600" 79*b30d1939SAndy Fiddamanunset tt 80*b30d1939SAndy Fiddaman 81*b30d1939SAndy Fiddamanexit $((Errors<125?Errors:125)) 82