summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua
blob: 49a1dfa9a7d9bfd9ae7ec528b111ffa79eee4ec2 (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
local lp = require("socket.lp")

local function usage()
  print('\nUsage: lua lpr.lua [filename] [keyword=val...]\n')
  print('Valid keywords are :')
  print(
     '  host=remote host or IP address (default "localhost")\n' ..
     '  queue=remote queue or printer name (default "printer")\n' ..
     '  port=remote port number (default 515)\n' ..
     '  user=sending user name\n' ..
     '  format=["binary" | "text" | "ps" | "pr" | "fortran"] (default "binary")\n' ..
     '  banner=true|false\n' ..
     '  indent=number of columns to indent\n' ..
     '  mail=email of address to notify when print is complete\n' ..
     '  title=title to use for "pr" format\n' ..
     '  width=width for "text" or "pr" formats\n' ..
     '  class=\n' ..
     '  job=\n' ..
     '  name=\n' ..
     '  localbind=true|false\n'
     )
  return nil
end

if not arg or not arg[1] then
  return usage()
end

do
    local opt = {}
    local pat = "[%s%c%p]*([%w]*)=([\"]?[%w%s_!@#$%%^&*()<>:;]+[\"]?.?)"
    for i = 2, #arg, 1 do
      string.gsub(arg[i], pat, function(name, value) opt[name] = value end)
    end
    if not arg[2] then
      return usage()
    end
    if arg[1] ~= "query" then
        opt.file = arg[1]
        r,e=lp.send(opt)
        io.stdout:write(tostring(r or e),'\n')
    else
        r,e=lp.query(opt)
        io.stdout:write(tostring(r or e), '\n')
    end
end

-- trivial tests
--lua lp.lua lp.lua queue=default host=localhost
--lua lp.lua lp.lua queue=default host=localhost format=binary localbind=1
--lua lp.lua query queue=default host=localhost