<> <> <> <> <<>> <> DIRECTORY NetMgtServiceSupport USING [UnRegisterService], NSExec USING [ClientID, ClientStatus, DestroyClient, Error, ExecProc, GetTTY, Handle, StopMode, SystemFilingSession, WorkingDirectory], NSFile USING [Handle, Session], NSString USING [nullString, String], PSCommand USING [GetPrintServiceStatus, Start, Stop], PSCommandExtras USING [ServiceState], PSExec USING [GetClientID], PSExecInternal USING [DeleteServiceFromClearinghouse, printServiceName], PSExecMessages USING [Key], PSInit USING [ExpungePrintService], PSKMessages USING [DestroyMsgs, GetHandle], TextInput USING [Confirm, GetTimedYesNo], TTY USING [Rubout], XMessage USING [Get, Handle], XString USING [ReaderBody]; PSExecInitBImpl: CEDAR PROGRAM IMPORTS NetMgtServiceSupport, NSExec, PSCommand, PSCommandExtras, PSExec, PSExecInternal, PSInit, PSKMessages, TextInput, TTY, XMessage EXPORTS PSExecInternal SHARES XString = BEGIN <> execMsgs: XMessage.Handle _ PSKMessages.GetHandle[exec]; Start: PUBLIC NSExec.ExecProc = {PSCommand.Start[]}; Stop: PUBLIC PROCEDURE [exec: NSExec.Handle, stopMode: NSExec.StopMode] = BEGIN <> ENABLE BEGIN TTY.Rubout => GOTO Exit; NSExec.Error => IF type = invalidExec THEN GOTO Exit; END; IF stopMode = quiesce AND (PSCommand.GetPrintServiceStatus[].mode.current = repair) THEN IF TextInput.GetTimedYesNo [ tty: NSExec.GetTTY[exec], prompt: M[mPrintServerinRepairMode], timeAllotted: 60--seconds--, valueIfTimedOut: no] = no THEN RETURN; PSCommand.Stop[]; EXITS Exit => NULL; END; --Stop Expunge: PUBLIC NSExec.ExecProc = BEGIN psClientID: NSExec.ClientID _ PSExec.GetClientID[]; servicesWorkDir: NSFile.Handle _ NSExec.WorkingDirectory[]; servicesSession: NSFile.Session _ NSExec.SystemFilingSession[]; IF TextInput.Confirm[NSExec.GetTTY[exec], M[mExpungeWarning]] THEN BEGIN [] _ PSExecInternal.DeleteServiceFromClearinghouse[exec]; PSInit.ExpungePrintService[deleteFonts: TRUE]; PSKMessages.DestroyMsgs[]; NetMgtServiceSupport.UnRegisterService[psClientID]; NSExec.DestroyClient[psClientID]; END ELSE ERROR NSExec.Error[cannotExpunge]; END; --Expunge Name: PUBLIC PROCEDURE [nameProc: PROCEDURE [clientName: NSString.String]] = BEGIN IF PSExecInternal.printServiceName # NIL THEN nameProc[PSExecInternal.printServiceName.local] ELSE nameProc[M[mNull]]; END; --Name Status: PUBLIC PROCEDURE [ statusProc: PROCEDURE [status: NSExec.ClientStatus, comment: NSString.String]] = BEGIN statusProc[status: SELECT PSCommandExtras.ServiceState[] FROM starting => starting, stopped => stopped, stopping => stopping, ENDCASE => started, comment: NSString.nullString]; END; --Status PrintServiceCommand: PUBLIC NSExec.ExecProc = BEGIN called whenever "Print Service" command is entered END; <> M: PROCEDURE [key: PSExecMessages.Key] RETURNS [string: NSString.String] = { r: XString.ReaderBody _ XMessage.Get[execMsgs, ORD[key]]; string _ [bytes: LOOPHOLE[r.bytes], length: r.limit, maxlength: r.limit]}; END. -- of PSExecInitBImpl LOG 21-May-86 12:18:25 - Jacks - Created (split up PSExecInitImpl).