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 }
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); } }
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 }