home *** CD-ROM | disk | FTP | other *** search
- /*
-
- FIPS - the First nondestructive Interactive Partition Splitting program
-
-
-
- Module cmdl_arg.cpp
-
-
-
- RCS - Header:
-
- $Header: c:/daten/fips/source/main/RCS/cmdl_arg.cpp 1.4 1995/01/19 00:00:51 schaefer Exp schaefer $
-
-
-
- Copyright (C) 1993 Arno Schaefer
-
-
-
- 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-
-
-
-
- Report problems and direct all questions to:
-
-
-
- schaefer@rbg.informatik.th-darmstadt.de
-
- */
-
-
-
- #include <stdio.h>
-
- #include <ctype.h>
-
- #include <string.h>
-
- #include <stdlib.h>
-
-
-
- #include "global.h"
-
- #include "getopt.h"
-
-
-
-
-
- /* ----------------------------------------------------------------------- */
-
- /* Replacement for atoi */
-
- /* ----------------------------------------------------------------------- */
-
-
-
- static int atoint (char *string)
-
- {
-
- long int value = 0;
-
- while (isdigit (*string))
-
- {
-
- value = value * 10 + (*string - '0');
-
- if (value > 32767) return (-1);
-
- string++;
-
- }
-
- if (*string != '\0') return (-1);
-
- return (int) value;
-
- }
-
-
-
-
-
- /* ----------------------------------------------------------------------- */
-
- /* Usage instructions */
-
- /* ----------------------------------------------------------------------- */
-
-
-
- static void usage (void)
-
- {
-
- printf ("\nFIPS [-t] [-d] [-h|-?] [-n<num>]:\n\n");
-
- printf ("-t : test mode (no writes to disk)\n");
-
- printf ("-d : debug mode\n");
-
- printf ("-h/-? : this help page\n");
-
- printf ("-n<num> : select drive <num> - valid values: 128 to 255\n");
-
- }
-
-
-
-
-
- /* ----------------------------------------------------------------------- */
-
- /* Process commandline parameters */
-
- /* ----------------------------------------------------------------------- */
-
-
-
- void evaluate_argument_vector (int argc, char *argv[])
-
- {
-
- int c;
-
-
-
- opterr = 0;
-
-
-
- while ((c = getopt (argc, argv, ":htdn:")) >= 0)
-
- {
-
- switch (c)
-
- {
-
- case 't':
-
- global.test_mode = true;
-
- break;
-
- case 'd':
-
- global.debug_mode = true;
-
- break;
-
- case 'h':
-
- usage ();
-
- exit (1);
-
- case 'n':
-
- global.drive_number_cmdline = atoint (optarg);
-
-
-
- if
-
- (
-
- global.drive_number_cmdline < 0x80
-
- || global.drive_number_cmdline > 0xff
-
- )
-
- {
-
- fprintf
-
- (
-
- stderr,
-
- "\nInvalid argument: %s\n",
-
- optarg
-
- );
-
-
-
- usage ();
-
- exit (-1);
-
- }
-
- break;
-
- case ':':
-
- fprintf
-
- (
-
- stderr,
-
- "\nSwitch %c requires an argument\n",
-
- optopt
-
- );
-
- usage ();
-
- exit (-1);
-
- case '?':
-
- if (optopt != '?')
-
- fprintf
-
- (
-
- stderr,
-
- "\nInvalid Commandline Parameter: %s\n",
-
- argv[optind - 1]
-
- );
-
-
-
- usage ();
-
- exit (-1);
-
- } /* switch */
-
-
-
- } /* while */
-
- }
-
-