home *** CD-ROM | disk | FTP | other *** search
- /* args.c - collect program arguments
- ** Copyright (C) 1998 Karl J. Ots
- **
- ** This program is free software; you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation; either version 2 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program; if not, write to the Free Software
- ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- #include <exec/types.h>
- #include <dos/rdargs.h>
- #include <clib/dos_protos.h>
-
- #include <string.h>
-
- #include "args.h"
-
- const char TA_Template[] = "DRIVE/A,FILE/A,S=START/N,E=END/N,WRITE/S,VERIFY/S,\
- ZLIB/S,GZIP/S,PKZIP/S,NAME/K,LEVEL/N,ADD/S";
-
- struct TA_RDArgs {
- STRPTR DRIVE;
- STRPTR FILE;
- ULONG *START;
- ULONG *END;
- ULONG WRITE;
- ULONG VERIFY;
- ULONG ZLIB;
- ULONG GZIP;
- ULONG PKZIP;
- STRPTR NAME;
- ULONG *LEVEL;
- ULONG ADD;
- };
-
-
- /*
- ** Collect the progam arguments.
- */
- struct TA_Args *getArgs (void)
- {
- static struct TA_Args taArgs;
- struct RDArgs *rdargs;
- struct TA_RDArgs taRDArgs = {NULL, NULL, NULL, NULL, FALSE, FALSE,
- FALSE, FALSE, FALSE, NULL, NULL, FALSE};
-
-
- /* Analyse arguments */
- rdargs = ReadArgs (TA_Template, (ULONG *)&taRDArgs, NULL);
- if (!rdargs) return NULL;
-
- /* Fill in the defauts */
- taArgs.Drive = NULL;
- taArgs.File = NULL;
- taArgs.Start = 0;
- taArgs.End = 159;
- taArgs.WriteDisk = FALSE;
- taArgs.Verify = FALSE;
- taArgs.ZLib = FALSE;
- taArgs.GZip = FALSE;
- taArgs.PKZip = FALSE;
- taArgs.PKZAdd = FALSE;
- taArgs.OrigName = NULL;
- taArgs.Level = 6;
-
- /* Copy arguments into the 'real' structure if required */
- /* We'll assume that strdup() always works -- dumb but easier :) */
- if (taRDArgs.DRIVE) taArgs.Drive = strdup (taRDArgs.DRIVE);
- if (taRDArgs.FILE) taArgs.File = strdup (taRDArgs.FILE);
- if (taRDArgs.START) taArgs.Start = *(taRDArgs.START) * 2;
- if (taRDArgs.END) taArgs.End = *(taRDArgs.END) * 2 + 1;
- if (taRDArgs.WRITE) taArgs.WriteDisk = TRUE;
- if (taRDArgs.VERIFY) taArgs.Verify = TRUE;
- if (taRDArgs.ZLIB) taArgs.ZLib = TRUE;
- if (taRDArgs.GZIP) taArgs.GZip = TRUE;
- if (taRDArgs.PKZIP) taArgs.PKZip = TRUE;
- if (taRDArgs.ADD) taArgs.PKZAdd = TRUE;
- if (taRDArgs.NAME) taArgs.OrigName = strdup (taRDArgs.NAME);
- if (taRDArgs.LEVEL) taArgs.Level = *(taRDArgs.LEVEL);
-
- /* Get rid of the temporary stuff */
- FreeArgs (rdargs);
-
- return &taArgs;
- }
-