/****** BumpSeq.c *************************************************************
*
*	$VER: BumpSeq.c 37.1 (4.12.94) -- Copyright © 1994 Magnetic Ink
*
*
*   SYNOPSIS
*		Nothing fancy -- just a quick hack to bump a specified seqFile.
*		SeqFile(s) should be protected by semaphores or lockfiles, but
*		for now I'll make do with this...
*
*   COPYRIGHT
*		BumpSeq and its source are Copyright © 1994 Magnetic Ink, but
*		are freely redistributable for non-profit purposes.
*
*   NOTES
*		Compiled with DICE v3.0
*
*   AUTHOR
*		Snail:
*		¯¯¯¯¯¯
*		Klaus Alexander Seistrup
*		Ahornsgade 8A¹
*		DK-2200 København N
*		DENMARK
*
*		EMail:
*		¯¯¯¯¯¯
*		kleis@mink.ping.dk
*
*******************************************************************************/

#include "BumpSeq.h"


/*
**
**	USAGE: BumpSeq <seqFile> [Quiet]
**
*/
Prototype LONG	 BumpSeq(VOID);
//
LONG
BumpSeq(VOID)
{
	LONG RC = RETURN_FAIL;

	LIB *SysBase = *((LIB **)4L);
	LIB *DOSBase = OpenLibrary("dos.library",37L);

	if (DOSBase)
	{
		ARG *DObj = (ARG *) AllocDosObject(DOS_RDARGS,NULL);

		RC = RETURN_ERROR;

		if (DObj)
		{
			ARG  *RDArgs;
			LONG  ArgV[2];

			ArgV[0] = ArgV[1] = 0L;

			DObj->RDA_ExtHelp = EXTHELP;
			RDArgs = ReadArgs(&(DObj->RDA_ExtHelp[TEMPLATE_OFFS]),ArgV,DObj);

			if (RDArgs)
			{
				TEXT *seqFile = (TEXT *) ArgV[ARG_SEQFILE];
				BPTR  fh = Open(seqFile,MODE_OLDFILE);

				if (fh == NULL)
					fh = Open(seqFile,MODE_NEWFILE);

				if (fh == NULL)
					fh = Open(seqFile,MODE_READWRITE);

				if (fh)
				{
					LONG oldVal;

					Seek(fh,0L,OFFSET_BEGINNING);

					if (Read(fh,(TEXT *)&oldVal,4L) != 4L)
						oldVal = 0L;

					Close(fh);

					if (fh = Open(seqFile,MODE_NEWFILE))
					{
						LONG newVal = oldVal + 1L;

						Write(fh,(TEXT *)&newVal,4L);
						Close(fh);

						if (!ArgV[ARG_QUIET])
							VPrintf("%ld\n",&oldVal);

						RC = RETURN_OK;
					}
					else
						PrintFault(IoErr(),seqFile);
				}
				else
					PrintFault(IoErr(),seqFile);

				FreeArgs(RDArgs);
			}
			else
				PrintFault(IoErr(),NULL);

			FreeDosObject(DOS_RDARGS,DObj);
		}
		else
			PrintFault(ERROR_NO_FREE_STORE,NULL);

		CloseLibrary(DOSBase);
	}
	return (RC);
}

STXT VersTag[]		= "$VER: " VSTR;
STXT Compiled[]		= "Compiled on " __DATE__ " at " __TIME__;
STXT Copyright[]	= "Copyright © 1994 Klaus Alexander Seistrup @ Magnetic Ink";
STXT EMail[]		= "E-mail: kleis@mink.ping.dk";

/*
**	EOF
*/
