Some varargs-cleanup remnants.
[vms-empire.git] / main.c
1 /*
2  *    Copyright (C) 1987, 1988 Chuck Simmons
3  * 
4  * See the file COPYING, distributed with empire, for restriction
5  * and warranty information.
6  */
7
8 /*
9 main.c -- parse command line for empire
10
11 options:
12
13     -w water: percentage of map that is water.  Must be in the range
14               10..90.  Default is 70.
15               
16     -s smooth: amount of smoothing performed to generate map.  Must
17                be a nonnegative integer.  Default is 5.
18                
19     -d delay:  number of milliseconds to delay between output.
20                default is 2000 (2 seconds).
21
22     -S saveinterval: sets turn interval between saves.
23                default is 10
24 */
25
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <unistd.h>
29 #include "empire.h"
30 #include "extern.h"
31
32 #define OPTFLAGS "w:s:d:S:f:"
33
34 int main(argc, argv)
35 int argc;
36 char *argv[];
37 {
38     int c;
39     extern char *optarg;
40     extern int optind;
41     extern int opterr;      /* set to 1 to suppress error msg */
42     int errflg = 0;
43     int wflg, sflg, dflg, Sflg;
44     int land;
45         
46     wflg = 70; /* set defaults */
47     sflg = 5;
48     dflg = 2000;
49     Sflg = 10;
50     savefile = "empsave.dat";
51
52     /*
53      * extract command line options
54      */
55
56     while ((c = getopt (argc, argv, OPTFLAGS)) != EOF) {
57         switch (c) {
58         case 'w':
59             wflg = atoi (optarg);
60             break;
61         case 's':
62             sflg = atoi (optarg);
63             break;
64         case 'd':
65             dflg = atoi (optarg);
66             break;
67         case 'S':
68             Sflg = atoi (optarg);
69             break;
70         case 'f':
71             savefile = optarg;
72             break;
73         case '?': /* illegal option? */
74             errflg++;
75             break;
76         }
77     }
78     if (errflg || (argc-optind) != 0) {
79         (void) printf ("empire: usage: empire [-w water] [-s smooth] [-d delay]\n");
80         exit (1);
81     }
82
83     if (wflg < 10 || wflg > 90) {
84         (void) printf ("empire: -w argument must be in the range 0..90.\n");
85         exit (1);
86     }
87     if (sflg < 0) {
88         (void) printf ("empire: -s argument must be greater or equal to zero.\n");
89         exit (1);
90     }
91         
92     if (dflg < 0 || dflg > 30000) {
93         (void) printf ("empire: -d argument must be in the range 0..30000.\n");
94         exit (1);
95     }
96
97     SMOOTH = sflg;
98     WATER_RATIO = wflg;
99     delay_time = dflg;
100     save_interval = Sflg;
101
102     /* compute min distance between cities */
103     land = MAP_SIZE * (100 - WATER_RATIO) / 100; /* available land */
104     land /= NUM_CITY; /* land per city */
105     MIN_CITY_DIST = isqrt (land); /* distance between cities */
106
107     empire (); /* call main routine */
108     return (0);
109 }