;
;	This file passed through The Coders Grave..
;
;	+46(0)44-543 71		The ultimate board for coders!
;
;	Note! If you use any part of the sourcecode(s) you have gotten
;	from this bbs, I REQUIRE that you in some way notify this in the
;	product.
;
;						 Tomas "Skrutt" Nilsson
;						Sysop at the Coders Grave


************************************************************************
*
*	Program:	ReadArgs.s
*	Version:	930108.2047--930812.1616
*	Author:		Tomas "Skrutt" Nilsson
*
*	Description:	Uses ReadArgs to interprete a commandline.
*

		Section Skrutt,CODE
		
		incdir "Include:"
		include "dos/dos.i"

************************************************************************
*
*	Type:	Init
*

J:		Move.l 4.w,a6
		Lea DosLib,a1
		moveq #37,d0			;V37 is required!
		jsr -552(a6)
		Move.l d0,DosBase
		bne.b .DosOk

		move.l #RequireText,d2
		bsr.w PrintIoErr
		bra.w Error

.DosOk:		move.l #Template,d1
		move.l #Opts,d2
		moveq #0,d3
		move.l DosBase,a6
		jsr -798(a6)			;ReadArgs
		move.l d0,ReturnReadArgs
		bne.s .OkReadArgs

		moveq #0,d2
		bsr.w PrintIoErr
		bra.w Error
.OkReadArgs:
		lea Opts,a0
		move.l (a0),d0			;*PatternString
		move.l 4(a0),d1			;SearchComments
		move.l 8(a0),d2			;Nointerprete
		move.l 12(a0),d3		;Showprivate
		move.l 16(a0),d4		;*Directory

Error:		tst.l ReturnReadArgs
		beq.s .NoReturnReadArgs
		move.l ReturnReadArgs,d1
		move.l DosBase,a6
		jsr -858(a6)			;FreeArgs;Free some allocated memory
		clr.l ReturnReadArgs
.NoReturnReadArgs:
		tst.l DosBase
		beq.s .NoDos
		move.l DosBase,a1
		move.l 4.w,a6
		jsr -414(a6)			;CloseLibrary
		clr.l DosBase
.NoDos:		moveq #0,d0			;Clean exit!		
		rts

************************************************************************
*
*	Type:	PrintIoErr	Prints system error message
*
*	In	d2	header
*
*	Out	-
*

PrintIoErr:	movem.l d0-d2/a0-a1/a6,-(sp)
		tst.l DosBase
		bne.s .DosBaseExist

		Move.l 4.w,a6			;open "old" doslib!
		Lea DosLib,a1
		jsr -408(a6)			;openlibrary
		Move.l d0,DosBase
		beq.s .NoMess

		move.l DosBase,a6
		move.l #ERROR_INVALID_RESIDENT_LIBRARY,d1
		jsr -462(a6)			;SetIoErr

.DosBaseExist:	move.l DosBase,a6
		jsr -132(a6)			;IoErr
		move.l d0,d1
		beq.s .NoMess
		jsr -474(a6)			;PrintFault
.NoMess:	movem.l (sp)+,d0-d2/a0-a1/a6
		rts


************************************************************************
*
*	DATA
*

DosLib:			Dc.b "dos.library",0
RequireText:		dc.b 10,"This program requires 2.x",0
Template:		dc.b "PATTERN/A,SC=SEARCHCOMMENTS/S,NI=NOINTERPRETE/S,"
			dc.b "SP=SHOWPRIVATE/S,DIR/M",0

			section Space,BSS
		
DosBase:		ds.l 1
ReturnReadArgs:		ds.l 1
Opts:			ds.l 40		;For use with Template!
