1*13de33a5SJulio Merinotrap ': $((brokenpipe+=1))' PIPE 2*13de33a5SJulio Merino 3*13de33a5SJulio MerinoP=${TMPDIR:-/tmp} 4*13de33a5SJulio Merinocd $P 5*13de33a5SJulio MerinoT=$(mktemp -d sh-test.XXXXXX) 6*13de33a5SJulio Merinocd $T 7*13de33a5SJulio Merino 8*13de33a5SJulio Merinobrokenpipe=0 9*13de33a5SJulio Merinomkfifo fifo1 fifo2 10*13de33a5SJulio Merinoread dummy >fifo2 <fifo1 & 11*13de33a5SJulio Merino{ 12*13de33a5SJulio Merino exec 4>fifo2 13*13de33a5SJulio Merino} 3<fifo2 # Formerly, sh would keep fd 3 and a duplicate of it open. 14*13de33a5SJulio Merinoecho dummy >fifo1 15*13de33a5SJulio Merinoif [ $brokenpipe -ne 0 ]; then 16*13de33a5SJulio Merino rc=3 17*13de33a5SJulio Merinofi 18*13de33a5SJulio Merinowait 19*13de33a5SJulio Merinoecho dummy >&4 2>/dev/null 20*13de33a5SJulio Merinoif [ $brokenpipe -eq 1 ]; then 21*13de33a5SJulio Merino : ${rc:=0} 22*13de33a5SJulio Merinofi 23*13de33a5SJulio Merino 24*13de33a5SJulio Merinorm fifo1 fifo2 25*13de33a5SJulio Merinormdir ${P}/${T} 26*13de33a5SJulio Merinoexit ${rc:-3} 27