/*******************************************************************************
*
*	Program:	Pause
*	Filename:	Pause.c
*
*	Usage:		Pause P=PROMPT,S=SECS/N,HELP/S
*
*			prompt	- optional prompt (default: DEF_PROMPT)
*			seconds - optional time (default: 60)
*
*	Contents:	Pause waits for RETURN a specified time (seconds). 
*			When time is up Pause returns with ReturnCode = WARN.
*
*	Language:	C
*
*	Author:		Johannes R. Geiss
*
*	Copyright:	Amigavisions
*
*	History:	$HISTORY:
*			1.0 (01-Oct-94) written JRG
*
*	Version:	$VER: Pause.c 1.0 (01-Oct-94)
*
*******************************************************************************/


/**************/
/*- includes -*/

#include <stdio.h>
#include <string.h>

#include <proto/dos.h>


/*************/
/*- defines -*/

#define VERSION "Pause 1.0 (" __DATE__ ", " __TIME__ ")"

#define CSI "\x9b"
#define COLORBOLD CSI "1;33m"
#define COLOR CSI "0;33m"
#define NORMAL CSI "0m"

#define COPYRIGHT COLORBOLD VERSION COLOR ": Copyright (C) 1994, Amigavisions" NORMAL

#define DEF_PROMPT "Hit RETURN: "


/********************/
/*- external xrefs -*/

extern struct ExecBase *SysBase;


/******************/
/*- data section -*/

char version[] = "$VER: " VERSION;


/****************/
/*- print help -*/

void printHelp(char *cmd) {
    printf("\n"
	COPYRIGHT "\n"
	"Usage: %s [prompt] [seconds]\n"
	"\tprompt\t- optional prompt (default: '" DEF_PROMPT "')\n"
	"\tseconds\t- optional time (default: 60)\n"
	"\n"
	"Pause waits for RETURN a specified time (seconds). When time is up\n"
	"Pause returns with ReturnCode = WARN.\n"
	"\n", cmd);
    }


/*******************/
/*- main function -*/

int main(int argc, char *argv[]) {
    struct RDArgs *Args;
    LONG Arg[3];
    int retCode = 0;
    LONG secs = 60;

    Arg[0] = (LONG)DEF_PROMPT;
    Arg[1] = Arg[2] = 0;
    if((Args = ReadArgs("P=PROMPT,S=SECS/N,HELP/S", Arg, NULL)) != NULL)
	if(!Arg[2]) {
	    if(Arg[1]) secs = *(LONG *)Arg[1];
	    Write(Output(), (APTR)Arg[0], strlen((char *)Arg[0]));
	    retCode = RETURN_WARN;
	    for(; secs >= 0; secs--)
		if(WaitForChar(Input(), 1000000l)) if(getchar() == '\n') {
		    retCode = 0;
		    break;
		    }
	    FreeArgs(Args);
	    if(retCode) putchar('\n');
	    }
	else printHelp(argv[0]);
    else printHelp(argv[0]);
    return(retCode);
    }


/**/
