/* $VER: SPS v1.0 (23/08/99) Samba Print Spooler v1.0 by Robert Wilson http://www.dynamix.f9.co.uk */ /* START USER SETTINGS */ spooldir = 'Data:spool/' username = 'username' password = 'password' printer = '\\server\PRINTER' setcmd = 1 runcmd = 1 cmdpath = 'sys:utilities/cmd' /* cmdpath = 'sys:wbstartup/cmd' */ pubscreen = 'Workbench' /* END USER SETTINGS */ signal on BREAK_C signal on FAILURE signal on IOERR if ~show(l,'rexxsupport.library') then do if ~addlib('rexxsupport.library',0,-30,0) then do say 'rexxsupport.library not available' exit end end if ~show(l,'rexxtricks.library') then do if ~addlib('rexxtricks.library',0,-30,0) then do say 'rexxtricks.library not available' exit end end if ~show(l,'rexxreqtools.library') then do if ~addlib('rexxreqtools.library',0,-30,0) then do say 'rexxreqtools.library not available' exit end end scriptname = 'Samba Print Spooler v1.0 by Robert Wilson' if right(spooldir,1) ~= '/' & right(spooldir,1) ~= ':' then do call rtezrequest('The spooldir must end in ":" or "/"','_Sorry!',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) exit end if setcmd = 1 then do tooltypes.0 = 5 tooltypes.1 = 'DEVICE=parallel' tooltypes.2 = 'FILE='spooldir'sps' tooltypes.3 = 'SKIP=FALSE' tooltypes.4 = 'MULTIPLE=TRUE' tooltypes.5 = 'NOTIFY=FALSE' if ~settooltypes(cmdpath,tooltypes) then call rtezrequest('Error unable to set CMD''s tooltypes)','_Hmmm',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) end address 'COMMAND' if runcmd = 1 then do 'run <>nil:' cmdpath 'parallel' spooldir'sps opt m' end do forever if getdir(spooldir,'~(#?.info)','stemvar','FILES','PATH') then do do i = 1 to stemvar.0 call sendfile(stemvar.i) end end else call delay (10*50) end exit /* */ sendfile: parse arg filename if open(file,filename,'R') then do /* check to see if file is not still being spooled */ call close(file) 'amitcp:samba/bin/smbclient 'printer '-P -U' username'%'password '"-c printmode graphics; print' filename'" >nil:' if RC = 0 then 'c:delete' filename 'FORCE QUIET' else call servererror() end else call delay(10*50) return /* */ BREAK_C: call rtezrequest('User break (CTRL-C)','_Okay',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) exit /* */ FAILURE: IOERR: call rtezrequest('An error has occured!' || '0A'x || errortext(RC),'_Damn!',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) exit /* */ servererror: errorreq = 0 if exists('rexx:autoclose.rexx') then errorreq = autoclose(start,10,pubscreen,'Samba') answer = rtezrequest('Unable to spool file "'filename'"' || '0A'x || 'to print server "'printer'"','_Retry|_Wait 60 seconds|_Quit',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) if errorreq ~= 0 then call autoclose(stop,errorreq) if answer = 0 then do if rtezrequest('Are you sure that you want'|| '0A'x ||'to close Samba Print Spooler?','_Yes|_No',scriptname,'rtez_flags = ezreqf_centertext rt_reqpos = reqpos_centerscr rt_pubscrname = 'pubscreen) then exit end if answer = 2 then call delay(60*50) return