52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 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
 |