1#!/bin/sh
2#
3# $OpenBSD: follow-overwrite-by-file.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $
4
5# test if tail follows a file overwritten by another new file
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
25echo 'bar2' >> ${DIR}/bar2
26mv ${DIR}/bar2 ${DIR}/bar
27echo 'bar' >> ${DIR}/bar
28
29# hey nfs !
30sleep 5
31kill ${PID}
32diff -u ${OUT} ${0%%.sh}.out || exit 1
33grep -q "tail: ${DIR}/bar has been replaced, reopening." ${ERR} || exit 2
34
35# cleanup if okay
36rm -Rf ${DIR}
37