1#!/bin/sh
2#
3# $OpenBSD: follow-removed-recreated.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $
4
5# test if tail follows a file removed then recreated later
6
7#set TMPDIR to a nfs-based dir for nfs testing
8DIR=$(mktemp -d)
9echo DIR=${DIR}
10
11NAME=${0##*/}
12OUT=${DIR}/${NAME%%.sh}.out
13ERR=${DIR}/${NAME%%.sh}.err
14echo bar > ${DIR}/bar
15
16# retry until file appears for nfs
17RET=1
18while [ ${RET} == 1 ] ; do
19	tail -f ${DIR}/bar 2> ${ERR} > ${OUT} &
20	RET=$?
21	PID=$!
22	sleep 1
23done
24
25# remove
26rm -f ${DIR}/bar
27echo 'bar2' > ${DIR}/bar2
28sleep 1
29mv ${DIR}/bar2 ${DIR}/bar
30echo 'bar' >> ${DIR}/bar
31
32# hey nfs !
33sleep 5
34kill ${PID}
35diff -u ${OUT} ${0%%.sh}.out || exit 1
36grep -q "tail: ${DIR}/bar has been replaced, reopening." ${ERR} || exit 2
37
38# cleanup if okay
39rm -Rf ${DIR}
40