Install a moduli(5) manual page.
[dragonfly.git] / contrib / bsdinstaller-1.1.6 / src / backend / lua / scripts / test / pty.lua
1 -- $Id: pty.lua,v 1.4 2005/04/03 20:28:22 cpressey Exp $
2
3 local Pty = require("pty")
4
5 p, err = Pty.open("/usr/games/adventure")
6 print(p, err)
7
8 input = {
9     "no",
10     "go building",
11     "get water",
12     "get keys",
13     "get food",
14     "get lantern",
15     "go out",
16     "go stream",
17     "s",
18     "quit",
19     "yes",
20     "ok"
21 }
22 i = 1
23
24 local read_until_timeout = function(p)
25         local acc, text, err
26
27         acc = ""
28         text, err = p:read(100)
29         while err ~= Pty.TIMEOUT do
30                 if err then
31                         return acc, err
32                 end
33                 acc = acc .. text
34                 text, err = p:read(100)
35         end
36
37         return acc
38 end
39
40 while true do
41         p:write(input[i] .. "\n")
42         t, err = read_until_timeout(p)
43         if t then
44                 io.stdout:write(t)
45         end
46         if err == Pty.EOF then
47                 break
48         end
49         if err then
50                 print("ERROR: ", err)
51         end
52         i = i + 1
53 end
54
55 p:close()
56
57 k = 0
58 maxi = 100
59 -- Test for resource leakage.
60 for i = 1,maxi do
61         p, err = Pty.open("ls")
62         if p then
63                 t, err = p:read()
64                 print(t)
65                 if p:close() then
66                         k = k + 1
67                         --Clock.nanosleep(0.01)
68                         print("closed #", k)
69                 end
70         else
71                 print("Cannot open pty: ", err)
72         end
73 end
74 print(k, "out of", maxi, "pty's opened and closed ok")