diff samples/lpr.lua @ 0:4b915342e2a8

LuaSocket 2.0.2 + CMake build description.
author Eric Wing <ewing . public |-at-| gmail . com>
date Tue, 26 Aug 2008 18:40:01 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/samples/lpr.lua	Tue Aug 26 18:40:01 2008 -0700
@@ -0,0 +1,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, table.getn(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