static void
init_args(int argc, char **argv)
{
    int		i;
    char	*buf;

    i = 1;
    while (i < argc) {
	if (strncmp(argv[i], "-l", 2) == 0) {
	    i++;
	    if (i < argc) {
		buf = (char *)malloc(strlen(argv[i]) + 2);
		sprintf(buf, "%s/", argv[i]);
		SetLocalDir(buf);
		free(buf);
		i++;
	    }
	} else if (strncmp(argv[i], "-L", 2) == 0) {
	    i++;
	    if (i < argc) {
		buf = (char *)malloc(strlen(argv[i]) + 2);
		sprintf(buf, "%s/", argv[i]);
		SetLibDir(buf);
		free(buf);
		i++;
	    }
	} else if (strncmp(argv[i], "-D", 2) == 0) {
	    i++;
	    if (i < argc) {
		buf = (char *)malloc(strlen(argv[i]) + 2);
		sprintf(buf, "%s/", argv[i]);
		SetDataDir(buf);
		free(buf);
		i++;
	    }
	} else if (strncmp(argv[i], "-s", 2) == 0) {
	    i++;
	    SetSingleTextureMode ();
	    
#ifndef FREEGLUT
	} else if (strncmp(argv[i], "-m", 2) == 0) {
	    i++;
	    GfuiMouseSetHWPresent(); /* allow the hardware cursor */
#endif
	} else {
	    i++;		/* ignore bad args */
	}
    }
#ifdef FREEGLUT
    GfuiMouseSetHWPresent(); /* allow the hardware cursor (freeglut pb ?) */
#endif
}
Example #2
0
void init_args(int argc, char **argv)
{
#ifdef WIN32
    int i=0;
#else
    int	c;    
#endif
    TrackOnly = 1;
	JustCalculate = 0;
    MergeAll = 1;
    MergeTerrain = 1;
    TrackName = NULL;
    TrackCategory = NULL;
    saveElevation = -1;

#ifndef WIN32
    while (1) {
	int option_index = 0;
	static struct option long_options[] = {
	    {"help", 0, 0, 0},
	    {"version", 1, 0, 0}
	};

	c = getopt_long(argc, argv, "hvn:c:azsSE:H:bBL:",
			long_options, &option_index);
	if (c == -1)
	    break;
	     
	switch (c) {
	case 0:
	    switch (option_index) {
	    case 0:
		usage();
		exit(0);
		break;
	    case 1:
		printf("Terrain generator for tracks $Revision: 1.5.2.2 $ \n");
		exit(0);
		break;
	    default:
		usage();
		exit(1);
	    }
	    break;
	case 'h':
	    usage();
	    exit(0);
	    break;
	case 'H':
	    HeightSteps = strtol(optarg, NULL, 0);
	    break;
	case 'v':
	    printf("Terrain generator for tracks $Revision: 1.5.2.2 $ \n");
	    exit(0);
	    break;
	case 'a':
	    TrackOnly = 0;
	    break;
	case 'z':
	    JustCalculate = 1;
	    break;
	case 'b':
	    bump = 1;
	    break;
	case 's':
	    MergeAll = 0;
	    MergeTerrain = 1;
	    break;
	case 'S':
	    MergeAll = 0;
	    MergeTerrain = 0;
	    break;
	case 'n':
	    TrackName = strdup(optarg);
	    break;
	case 'c':
	    TrackCategory = strdup(optarg);
	    break;
	case 'E':
	    saveElevation = strtol(optarg, NULL, 0);;
	    TrackOnly = 0;
	    break;
	case 'B':
	    UseBorder = 0;
	    break;
	case 'L':
	    sprintf(buf, "%s/", optarg);
	    SetLibDir(buf);
	    break;
	default:
	    usage();
	    exit(1);
	    break;
	}
    }
#else
    i = 1;
    while (i < argc) {
	if (strncmp(argv[i], "-h", 2) == 0) {
	    usage();
	    exit(0);
	}
	if (strncmp(argv[i], "-v", 2) == 0) {
	    printf("Terrain generator for tracks $Revision: 1.5.2.2 $ \n");
	    exit(0);
	}
	if (strncmp(argv[i], "-a", 2) == 0) {
	    TrackOnly = 0;
	} else if (strncmp(argv[i], "-z", 2) == 0) {
	    JustCalculate = 1;
	} else if (strncmp(argv[i], "-s", 2) == 0) {
	    MergeAll = 0;
	    MergeTerrain = 1;
	} else if (strncmp(argv[i], "-B", 2) == 0) {
	    UseBorder = 0;
	} else if (strncmp(argv[i], "-S", 2) == 0) {
	    MergeAll = 0;
	    MergeTerrain = 0;
	} else if (strncmp(argv[i], "-n", 2) == 0) {
	    if (i + 1 < argc) {
		TrackName = strdup(argv[++i]);
	    } else {
		usage();
		exit(0);
	    }
	} else if (strncmp(argv[i], "-E", 2) == 0) {
	    if (i + 1 < argc) {
		saveElevation = strtol(argv[++i], NULL, 0);
	    } else {
		usage();
		exit(0);
	    }
	    TrackOnly = 0;
	} else if (strncmp(argv[i], "-c", 2) == 0) {
	    if (i + 1 < argc) {
		TrackCategory = strdup(argv[++i]);
	    } else {
		usage();
		exit(0);
	    }
	} else if (strncmp(argv[i], "-H", 2) == 0) {
	    if (i + 1 < argc) {
		HeightSteps = strtol(argv[++i], NULL, 0);
	    } else {
		usage();
		exit(0);
	    }
	} else {
	    usage();
	    exit(0);
	}
	i++;
    }
#endif

    if (!TrackName || !TrackCategory) {
	usage();
	exit(1);
    }
}
Example #3
0
static void
init_args(int argc, char **argv, const char **raceconfig)
{
	int i;
	char *buf;

	i = 1;

	while(i < argc) {
		if(strncmp(argv[i], "-l", 2) == 0) {
			i++;

			if(i < argc) {
				buf = (char *)malloc(strlen(argv[i]) + 2);
				sprintf(buf, "%s/", argv[i]);
				SetLocalDir(buf);
				free(buf);
				i++;
			}
		} else if(strncmp(argv[i], "-L", 2) == 0) {
			i++;

			if(i < argc) {
				buf = (char *)malloc(strlen(argv[i]) + 2);
				sprintf(buf, "%s/", argv[i]);
				SetLibDir(buf);
				free(buf);
				i++;
			}
		} else if(strncmp(argv[i], "-D", 2) == 0) {
			i++;

			if(i < argc) {
				buf = (char *)malloc(strlen(argv[i]) + 2);
				sprintf(buf, "%s/", argv[i]);
				SetDataDir(buf);
				free(buf);
				i++;
			}
		} else if(strncmp(argv[i], "-s", 2) == 0) {
			i++;
			SetSingleTextureMode();
		} else if(strncmp(argv[i], "-k", 2) == 0) {
			i++;
			// Keep modules in memory (for valgrind)
			printf("Unloading modules disabled, just intended for valgrind runs.\n");
			bKeepModules = true;
#ifndef FREEGLUT
		} else if(strncmp(argv[i], "-m", 2) == 0) {
			i++;
			GfuiMouseSetHWPresent(); /* allow the hardware cursor */
#endif
		} else if(strncmp(argv[i], "-r", 2) == 0) {
			i++;
			*raceconfig = "";

			if(i < argc) {
				*raceconfig = argv[i];
				i++;
			}

			if((strlen(*raceconfig) == 0) || (strstr(*raceconfig, ".xml") == 0)) {
				printf("Please specify a race configuration xml when using -r\n");
				exit(1);
			}
		} else {
			i++;		/* ignore bad args */
		}
	}

#ifdef FREEGLUT
	GfuiMouseSetHWPresent(); /* allow the hardware cursor (freeglut pb ?) */
#endif
}