; Clip input lines on specified locations and write result to standard output.

       INCLUDE "/include/init.i"

;      OPT     D+

; Variable storage

       STRUCT  ArgArray,(3+1)*4
       SIZE

; Regs

ErrorStrPtr    EQUR    A4

; Startup

       STACK   4000
       INIT

; Let ARP interpret the commandline

       MOVE.L  ComLineBase(GP),A0
       MOVE.L  ComLineSize(GP),D0
       LEA     HelpMsg(PC),A1
       LEA     ArgArray(GP),A2
       LEA     Template(PC),A3
       MOVE.L  A1,(A2)
       CALL    GADS
       MOVE.L  (A2),ErrorStrPtr
       TST.L   D0
       BEQ     ErrorExit
       BMI     ErrorExit

; Fail if no list specifier present

       LEA     NoListSpec(PC),ErrorStrPtr
       TST.L   ArgArray+1*4(GP)
       BNE.S   ListSpecified
       TST.L   ArgArray+2*4(GP)
       BEQ.S   ErrorExit
ListSpecified:

; Cache A6, load execbase, forbid and presume success.

       MOVE.L  A6,-(SP)
       MOVE.L  $4.W,A6
       CALL    Forbid
       MOVE.W  #5,ReturnCode(GP)

; Search the task list

       TST.L   ArgArray+1*4(GP)
       BEQ.S   NotTheTaskList
       MOVE.L  ArgArray(GP),A1
       CALL    FindTask
       TST.L   D0
       BNE.S   NameFound
NotTheTaskList:

; Search the port list

       TST.L   ArgArray+2*4(GP)
       BEQ.S   NotThePortList
       MOVE.L  ArgArray(GP),A1
       CALL    FindPort
       TST.L   D0
       BNE.S   NameFound
NotThePortList

; Clear returncode if name not in any list. Permit and pop ARP base.

       CLR.W   ReturnCode(GP)
NameFound:
       CALL    Permit
       MOVE.L  (SP)+,A6

; Done, cleanup

Exit:
       SUB.L   ErrorStrPtr,ErrorStrPtr
ErrorExit:

; Display error string, if any, and exit

       MOVE.L  ErrorStrPtr,D0
       BEQ.S   NoErrorMsg
       MOVE.L  D0,A1
       CALL    Puts
NoErrorMsg:
       RTS

; The string section

Template:
       DC.B    'Name/a,Task/s,Port/s',0
HelpMsg:
       DC.B    'CheckList - Check system list for name. RC=5 if found.',10
       DC.B    'Usage: CheckList "namestring" [Task] [Port]',0
NoListSpec:
       DC.B    'Need list specifier!',0
       CNOP    0,2

       END
