1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
/*
* toto -p 39115 -x 666 -y 69 -v -n team1 team2 -t 4242 -c 11
*/
typedef struct
{
long port;
long map_x;
long map_y;
long max_players;
long cronos;
int verbose;
char *teams[2];
} t_env;
static void get_options(int argc, char *argv[], t_env *env)
{
int c;
while ((c = getopt(argc, argv, "p:x:y:c:t:vn:0" )) != EOF)
{
switch (c)
{
case 'p':
env->port = strtol(optarg, NULL, 10);
break;
case 'x':
env->map_x = strtol(optarg, NULL, 10);
break;
case 'y':
env->map_y = strtol(optarg, NULL, 10);
break;
case 'c':
env->max_players = strtol(optarg, NULL, 10);
break;
case 't':
env->cronos = strtol(optarg, NULL, 10);
break;
case 'v':
env->verbose = 1;
break;
case 'n':
{
char *p = optarg;
env->teams[0] = strdup(p);
p += strlen(p) + 1;
env->teams[1] = strdup(p);
}
break;
}
}
}
int main(int argc, char *argv[])
{
t_env env = { 0, 0, 0, 0, 0, 0, {NULL, NULL} };
get_options(argc, argv, &env);
printf("map_x: %ld\n", env.map_x);
printf("map_y: %ld\n", env.map_y);
printf("port: %ld\n", env.port);
printf("team 1: %s\n", env.teams[0]);
printf("team 2: %s\n", env.teams[1]);
printf("verbose: %d\n", env.verbose);
printf("max_players: %ld\n", env.max_players);
printf("cronos: %ld\n", env.cronos);
free(env.teams[0]);
free(env.teams[1]);
return 0;
} |
Partager