aboutsummaryrefslogtreecommitdiff
path: root/test.icl
blob: bcb64a979dcf033f741f0521010c0b67a093cbb7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module test

import StdFile
import Data.Either
import Data.Maybe
import Inotify

Start w
# (Just inot) = inotify_init 0
# (Right watch, inot)
	= inotify_add_watch (echo "file1") IN_ALL_EVENTS "file1" inot
# (Right watch, inot)
	= inotify_add_watch (echo "file2") IN_ALL_EVENTS "file2" inot
# (io,w) = stdio w
# io = io <<< "Do something with file1 or file2\n"
# (ok,w) = fclose io w
# (inot, w) = loop inot w
= inotify_close inot
where
	loop :: !*(Inotify st) !*World -> *(*Inotify st, *World)
	loop inot w
		# inot = inotify_poll inot
		# (inot, w) = inotify_check inot w
		= loop inot w

	echo :: String INEvent Int *World -> *(Int, *World)
	echo fname ev i w
		# (io,w) = stdio w
		# io = io <<< "EVENT: [" <<< fname <<< "; " <<< ev <<< "]\n"
		# (ok,w) = fclose io w
		= (i, w)