/* TESH (Test Shell) -- mini shell specialized in running test units */
-/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2007-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#pragma hdrstop
#endif
-#include "simgrid_config.h" //For getline, keep that include first
-
#include "tesh.h"
#include "xbt.h"
int timeout_value = 5; /* child timeout value */
int sort_len = 19; /* length of the prefix to sort */
char *option;
+int coverage = 0; /* whether the code coverage is enabled */
rctx_t rctx;
const char *testsuite_name;
buff = xbt_strbuff_new();
rctx = rctx_new();
- while (getline(&line, &len, IN) != -1) {
+ while (xbt_getline(&line, &len, IN) != -1) {
line_num++;
/* Count the line length while checking wheather it's blank */
} else {
to_be_continued = 1;
line[linelen - 2] = '\0';
- linelen -= 2;
if (!buff->used)
buffbegin = line_num;
}
rctx_free(rctx);
/* Clear buffers */
- if (line)
- free(line);
+ free(line);
xbt_strbuff_free(buff);
}
int i;
char *eq = NULL;
char *key = NULL;
- env = xbt_dict_new();
+ env = xbt_dict_new_homogeneous(xbt_free_f);
for (i = 0; environ[i]; i++) {
p = environ[i];
eq = strchr(p, '=');
key = bprintf("%.*s", (int) (eq - p), p);
- xbt_dict_set(env, key, xbt_strdup(eq + 1), xbt_free_f);
+ xbt_dict_set(env, key, xbt_strdup(eq + 1), NULL);
free(key);
}
}
int i;
char *suitename = NULL;
struct sigaction newact;
+
+ XBT_LOG_CONNECT(tesh);
xbt_init(&argc, argv);
rctx_init();
parse_environ();
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), xbt_free_f);
+ 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 *));
XBT_ERROR("--cfg argument requires an argument");
exit(1);
}
- if(!option){ //if option is NULL
- option = bprintf("--cfg=%s",argv[i+1]);
- }else{
- option = bprintf("%s --cfg=%s",option,argv[i+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;
+ }
}
/* Find the description file */
rctx_exit();
xbt_dict_free(&env);
- xbt_free_f(option);
+ free(option);
return 0;
}