- for (i=1; i<argc; i++) {
- if (!strncmp(argv[i],"--cd",strlen("--cd")+1)) {
- if (i == argc-1) {
- ERROR0("--cd argument requires an argument");
- exit(1);
- }
- if (chdir(argv[i+1])) {
- ERROR2("Cannot change directory to %s: %s",argv[i+1],strerror(errno));
- exit(1);
- }
- INFO1("Change directory to %s",argv[i+1]);
- memmove(argv+i,argv+i+2,argc-i-1);
- argc-=2;
- }
+ for (i = 1; i < argc; i++) {
+ if (!strcmp(argv[i], "--cd")) {
+ if (i == argc - 1) {
+ XBT_ERROR("--cd argument requires an argument");
+ exit(1);
+ }
+ if (chdir(argv[i + 1])) {
+ XBT_ERROR("Cannot change directory to %s: %s", argv[i + 1],
+ strerror(errno));
+ exit(1);
+ }
+ XBT_INFO("Change directory to %s", argv[i + 1]);
+ memmove(argv + i, argv + i + 2, (argc - i - 1) * sizeof(char *));
+ argc -= 2;
+ i -= 2;
+ } else if (!strcmp(argv[i], "--setenv" )) {
+ if (i == argc - 1) {
+ XBT_ERROR("--setenv argument requires an argument");
+ exit(1);
+ }
+ char *eq = strchr(argv[i+1], '=');
+ xbt_assert(eq,"The argument of --setenv must contain a '=' (got %s instead)",argv[i+1]);
+ char *key = bprintf("%.*s", (int) (eq - argv[i+1]), argv[i+1]);
+ xbt_dict_set(env, key, xbt_strdup(eq + 1), NULL);
+ XBT_INFO("setting environment variable '%s' to '%s'", key, eq+1);
+ free(key);
+ memmove(argv + i, argv + i + 2, (argc - i - 1) * sizeof(char *));
+ argc -= 2;
+ i -= 2;
+ } else if (!strcmp(argv[i], "--cfg" )) {
+ if (i == argc - 1) {
+ XBT_ERROR("--cfg argument requires an argument");
+ exit(1);
+ }
+ if (!option){ //if option is NULL
+ option = bprintf("--cfg=%s",argv[i+1]);
+ } else {
+ char *newoption = bprintf("%s --cfg=%s", option, argv[i+1]);
+ free(option);
+ option = newoption;
+ }
+ XBT_INFO("Add option \'--cfg=%s\' to command line",argv[i+1]);
+ memmove(argv + i, argv + i + 2, (argc - i - 1) * sizeof(char *));
+ argc -= 2;
+ i -= 2;
+ }
+ else if (!strcmp(argv[i], "--enable-coverage" )){
+ coverage = 1;
+ XBT_INFO("Enable coverage");
+ memmove(argv + i, argv + i + 1, (argc - i - 1) * sizeof(char *));
+ argc -= 1;
+ i -= 1;
+ }